summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorintrigeri <intrigeri@boum.org>2015-11-29 18:22:36 +0000
committerintrigeri <intrigeri@boum.org>2015-11-29 18:22:36 +0000
commit0ab16d435b093449c9dd3fa1b9b360ea1589d146 (patch)
tree872fc47180f09956cfd1de6f6592fb31f9d7c419
parent901814552833713b872146fd54248472a1c5d40f (diff)
parent5866a60c79be6c606048713fa1a01348d2b4e92d (diff)
Imported Upstream version 4.4.5+dfsgupstream/4.4.5+dfsg
-rw-r--r--MANIFEST.in6
-rw-r--r--po/POTFILES.in5
-rw-r--r--po/ar.po128
-rw-r--r--po/ast.po128
-rw-r--r--po/az.po128
-rw-r--r--po/bg.po128
-rw-r--r--po/bn_IN.po128
-rw-r--r--po/bs.po128
-rw-r--r--po/ca.po128
-rw-r--r--po/cs.po128
-rw-r--r--po/da.po128
-rw-r--r--po/de.po128
-rw-r--r--po/el.po128
-rw-r--r--po/en_GB.po128
-rw-r--r--po/es.po128
-rw-r--r--po/es_AR.po128
-rw-r--r--po/eu.po128
-rw-r--r--po/fa.po128
-rw-r--r--po/fi.po128
-rw-r--r--po/fr.po128
-rw-r--r--po/fr_CA.po128
-rw-r--r--po/he.po128
-rw-r--r--po/hr_HR.po128
-rw-r--r--po/hu.po128
-rw-r--r--po/id.po128
-rw-r--r--po/is.po128
-rw-r--r--po/it.po128
-rw-r--r--po/ja.po128
-rw-r--r--po/km.po128
-rw-r--r--po/ko.po128
-rw-r--r--po/lv.po128
-rw-r--r--po/ms.po128
-rw-r--r--po/nb.po128
-rw-r--r--po/nds.po128
-rw-r--r--po/nl.po128
-rw-r--r--po/pa.po128
-rw-r--r--po/pl.po128
-rw-r--r--po/pt.po128
-rw-r--r--po/pt_BR.po128
-rw-r--r--po/ro.po128
-rw-r--r--po/ru.po128
-rw-r--r--po/si_LK.po128
-rw-r--r--po/sk.po128
-rw-r--r--po/sl_SI.po128
-rw-r--r--po/sq.po128
-rw-r--r--po/sr.po128
-rw-r--r--po/sr@latin.po128
-rw-r--r--po/sv.po128
-rw-r--r--po/tails-installer.pot128
-rw-r--r--po/th.po128
-rw-r--r--po/uk.po128
-rw-r--r--po/zh_CN.po128
-rw-r--r--po/zh_TW.po128
-rwxr-xr-xsetup.py2
-rwxr-xr-xtails_installer/gui.py8
-rw-r--r--tails_installer/urlgrabber/__init__.py53
-rw-r--r--tails_installer/urlgrabber/byterange.py465
-rw-r--r--tails_installer/urlgrabber/grabber.py1483
-rw-r--r--tails_installer/urlgrabber/keepalive.py603
-rw-r--r--tails_installer/urlgrabber/mirror.py459
-rw-r--r--tails_installer/urlgrabber/progress.py609
61 files changed, 1584 insertions, 8637 deletions
diff --git a/MANIFEST.in b/MANIFEST.in
index f72c91e..0704629 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -10,12 +10,6 @@ include tails_installer/dialog.py
include tails_installer/gui.py
include tails_installer/launcher.py
include tails_installer/releases.py
-include tails_installer/urlgrabber/__init__.py
-include tails_installer/urlgrabber/byterange.py
-include tails_installer/urlgrabber/grabber.py
-include tails_installer/urlgrabber/keepalive.py
-include tails_installer/urlgrabber/mirror.py
-include tails_installer/urlgrabber/progress.py
include data/tails-installer.ui
include data/tails-installer-launcher.ui
include data/tails-installer.desktop
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 2e78753..65534f7 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -4,11 +4,6 @@ tails_installer/creator.py
tails_installer/gui.py
tails_installer/launcher.py
tails_installer/source.py
-tails_installer/urlgrabber/byterange.py
-tails_installer/urlgrabber/grabber.py
-tails_installer/urlgrabber/keepalive.py
-tails_installer/urlgrabber/mirror.py
-tails_installer/urlgrabber/progress.py
tails_installer/utils.py
data/tails-installer.ui.h
diff --git a/po/ar.po b/po/ar.po
index 3c211fc..978d6a2 100644
--- a/po/ar.po
+++ b/po/ar.po
@@ -18,7 +18,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-04-09 19:12+0000\n"
"Last-Translator: Amr Syria <safianxs@bk.ru>\n"
"Language-Team: Arabic (http://www.transifex.com/projects/p/torproject/"
@@ -310,34 +310,34 @@ msgid ""
"program."
msgstr "تأكد من فك ضغط ملف \"liveusb-creator\" قبل العمل بالبرنامج."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "إصدار غير معروف: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "جاري التحميل %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
msgstr ""
"خطأ: لا يمكن ضبط العنوان أو الحصول على رقم الـUUID لجهازك. ﻻ يمكن المتابعة."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "تم التثبيت! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "ثبت تيلز"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -347,38 +347,38 @@ msgstr ""
"الأيقونة وافتح الخصائص. في صفحة \"Compatibility/التوافقية\"، فعل الخيار "
"\"Run this program as an administrator/قم بتشغيل هذا التطبيق كمدير\"."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "ثبت تيلز"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -386,11 +386,11 @@ msgstr ""
"و\n"
"ثبت"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -398,35 +398,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "تحديث النشرات..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "تم تحديث النشرات!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "تم التثبيت!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "تم التثبيت. اضغط \"موافق\" لإغلاق هذا البرنامج."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "لا يمكن تركيب الجهاز"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "الرجاء التأكد من اختيار جهازك"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -435,7 +435,7 @@ msgstr ""
"ستقوم بتثبيت تايلز على %(size)s %(vendor)s %(model)s جهاز (%(device)s). كل "
"البيانات على الجهاز ستمسح. هل تريد الاستمرار؟"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -445,26 +445,26 @@ msgstr ""
"ستقوم بتحديث تايلز على %(parent_size)s %(vendor)s %(model)s جهاز "
"(%(device)s). كل البيانات المحفوظة ستتم كما هي. هل تريد الاستمرار؟"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "تم التحميل!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "التحميل فشل: "
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "تستطيع المحاولة مرة أخرى لاستئناف التحميل"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
msgstr ""
"الملف المختار غير قابل للقراءة. الرجاء تغيير صلاحياته أو اختيار ملف آخر."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -472,7 +472,7 @@ msgstr ""
"لا يمكن استخدام الملف المُحدد. قد يحالفك حظ أكثر إن نقلت ملف الأيزو إلى "
"المجلد الرئيسي لقرصك (C:\\ على سبيل المثال)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "تم تحديد %(filename)s"
@@ -510,72 +510,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "إزالة ملفات %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/ast.po b/po/ast.po
index 61b038a..77b0c77 100644
--- a/po/ast.po
+++ b/po/ast.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: liveusb-creator\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2009-03-21 00:50-0300\n"
"Last-Translator: Astur <malditoastur@gmail.com>\n"
"Language-Team: Fedora Asturian <alministradores@softastur.org>\n"
@@ -303,17 +303,17 @@ msgstr ""
"Nun s'alcontró '%s'. Asegúrate d'estrayer el ficheru zip liveusb-creator "
"enantes d'executar esti programa."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Versión desconocida: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Descargando %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -321,62 +321,62 @@ msgstr ""
"Fallu: Nun pudo etiquetase u obtener el UUID del so preséu. Nun se puede "
"siguir."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, fuzzy, python-format
msgid "Installation complete! (%s)"
msgstr "¡Descarga completa!"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "¡Descarga completa!"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
"check the \"Run this program as an administrator\" box."
msgstr ""
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
msgid "Tails Installer"
msgstr ""
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr ""
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr ""
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
msgid "\"Clone & Install\""
msgstr ""
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -384,44 +384,44 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr ""
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr ""
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
#, fuzzy
msgid "Installation complete!"
msgstr "¡Descarga completa!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr ""
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
#, fuzzy
msgid "Unable to mount device"
msgstr "Nun pudo montase'l preséu: %s"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr ""
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
"(%(device)s). All data on the selected device will be lost. Continue?"
msgstr ""
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -429,25 +429,25 @@ msgid ""
"unchanged. Continue?"
msgstr ""
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "¡Descarga completa!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Falló la descarga:"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Puedes intentar otra vuelta facer la descarga"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
msgstr ""
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
#, fuzzy
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
@@ -456,7 +456,7 @@ msgstr ""
"Nun pudo codificase'l nome de ficheru del so cd live. Puedes tener meyor "
"suerte si mueves el to iso a la raíz del to discu (por exemplu: C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, fuzzy, python-format
msgid "%(filename)s selected"
msgstr "ISO esbilláu: %s"
@@ -494,72 +494,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr ""
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/az.po b/po/az.po
index 28c3e38..68925a4 100644
--- a/po/az.po
+++ b/po/az.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2014-12-27 20:31+0000\n"
"Last-Translator: E <ehuseynzade@gmail.com>\n"
"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/torproject/"
@@ -309,17 +309,17 @@ msgstr ""
"Bu proqramı işlətməzdən əvvəl bütöv liveusb-creator zip faylını çıxardığına "
"əmin ol."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Bilinməyən buraxılış: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "%s yüklənməsi..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -327,17 +327,17 @@ msgstr ""
"Xəta: Ötürücün üçün etiket təyin və ya UUID əldə edə bilmir. Davam etmək "
"mümkün deyil."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Quraşdırma tamamlandı! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Tail-ları Quraşdır"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -348,38 +348,38 @@ msgstr ""
"\"Compatibility tab\" başlığı altında \"Run this program as an administrator"
"\"qutusunu işarələ."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Tail-ları Quraşdır"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -387,11 +387,11 @@ msgstr ""
"&&\n"
"Quraşdır"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -399,35 +399,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "Buraxılışların yenilənməsi..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "Buraxılışlar yeniləndi!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "Quraşdırma tamamlandı!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "Qoraşdırma tamamlanmışdır. Proqramı bağlamaq üçün OK düyməsini kliklə."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "Ötürücünün quraşdırılması alınmır"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "Lütfən, ötürücü seçimini təsdiqlə"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -437,7 +437,7 @@ msgstr ""
"quraşdırmağı planlaşdırısan. Seçilmiş ötürücüdəki bütün məlumat silinəcək. "
"Davam edirsən?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -448,26 +448,26 @@ msgstr ""
"təkmilləşdirməyi planlaşdırırsan. Hər hansı daimi sıxlıq ötürücüdə "
"dəyişilməz qalacaq. Davam edirsən?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Yükləmə sona çatdı!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Yükləmə alınmadı:"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Yükləməni davam etdirmək üçün yenidən cəhd edə bilərsən"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
msgstr ""
"Seçilmiş fayl oxunmur. Lütfən, onun icazələrini düzəlt, ya da başqa fayl seç."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -475,7 +475,7 @@ msgstr ""
"Seçilmiş faylın istifadəsi alınmır. ISO-nu əsas yaddaşa köçürsən (məs., C:"
"\\) daha çox şansın olar."
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s seçilmişdir"
@@ -513,72 +513,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "%(file)s xaric edilməsi"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/bg.po b/po/bg.po
index d2ef21f..a380de5 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2012-11-23 17:55+0000\n"
"Last-Translator: kirilvel <kirilvelinov@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -306,17 +306,17 @@ msgstr ""
"Уверете се да извлечете цялата liveusb-creator zip файл, преди да пуснете "
"тази програма."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Неизвестен версия: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Изтегляне %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -324,17 +324,17 @@ msgstr ""
"Грешка: Не може да се зададе на етикета или да получите UUID на вашето "
"устройство. Неспособен да продължи."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Инсталацията е извършена! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Инсталацията е извършена!"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -345,45 +345,45 @@ msgstr ""
"раздела Compatibility tab, маркирайте кутия \"Run this program as an "
"administrator\"."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
msgid "Tails Installer"
msgstr ""
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr ""
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr ""
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
msgid "\"Clone & Install\""
msgstr ""
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -391,42 +391,42 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr ""
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr ""
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "Инсталацията е извършена!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "Инсталацията е завършена. Натиснете OK, за да затворите този програм."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "Не може да се монтира устройство"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr ""
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
"(%(device)s). All data on the selected device will be lost. Continue?"
msgstr ""
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -434,19 +434,19 @@ msgid ""
"unchanged. Continue?"
msgstr ""
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Изтеглянето е завършено!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Изтеглянето се провали:"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Можете да опитате отново да възобнови те  изтеглянето"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
#, fuzzy
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
@@ -454,7 +454,7 @@ msgid ""
msgstr ""
"Избраният файл е нечетлив. Моля, поправете разрешения или изберете друг файл."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -462,7 +462,7 @@ msgstr ""
"Невъзможност за използване на избрания файл. Може да имате по-голям късмет, "
"ако се движите ISO до root на вашия диск (ie: C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s избрано"
@@ -500,72 +500,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "Премахване на %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/bn_IN.po b/po/bn_IN.po
index 194eadc..d0f79a4 100644
--- a/po/bn_IN.po
+++ b/po/bn_IN.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2009-11-06 23:29+0530\n"
"Last-Translator: sankarshan mukhopadhyay <sankarshan@fedoraproject.org>\n"
"Language-Team: anubad@lists.ankur.org.in\n"
@@ -291,17 +291,17 @@ msgid ""
"program."
msgstr ""
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "অজানা রিলিজ: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "%s ডাউনলোড করা হচ্ছে..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -309,62 +309,62 @@ msgstr ""
"সমস্যা: আপনার ডিভাইসের লেবেল অথবা UUID নির্ধারণ করা সম্ভব হয়নি। এগিয়ে যাওয়া "
"যাবে না।"
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, fuzzy, python-format
msgid "Installation complete! (%s)"
msgstr "ডাউনলোড সম্পূর্ণ!"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "ডাউনলোড সম্পূর্ণ!"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
"check the \"Run this program as an administrator\" box."
msgstr ""
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
msgid "Tails Installer"
msgstr ""
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr ""
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr ""
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
msgid "\"Clone & Install\""
msgstr ""
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -372,43 +372,43 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr ""
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr ""
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
#, fuzzy
msgid "Installation complete!"
msgstr "ডাউনলোড সম্পূর্ণ!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr ""
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr ""
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr ""
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
"(%(device)s). All data on the selected device will be lost. Continue?"
msgstr ""
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -416,31 +416,31 @@ msgid ""
"unchanged. Continue?"
msgstr ""
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "ডাউনলোড সম্পূর্ণ!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "ডাউনলোড অসমাপ্ত:"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr ""
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
msgstr ""
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
msgstr ""
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, fuzzy, python-format
msgid "%(filename)s selected"
msgstr "নির্বাচিত ISO: %s"
@@ -477,72 +477,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr ""
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/bs.po b/po/bs.po
index 0074574..6b82383 100644
--- a/po/bs.po
+++ b/po/bs.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: liveusb-creator\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2009-11-24 20:26+0100\n"
"Last-Translator: Arnes Arnautović <arnes99@gmail.com>\n"
"Language-Team: Bosnian <fedora-trans-bs@redhat.org>\n"
@@ -306,17 +306,17 @@ msgstr ""
"Neuspjelo pronalaženje '%s'. Pobrinite se da ekstraktujete cijelu liveusb-"
"creator zip datoteku prije pokretanja ovog programa."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Nepoznato izdanje: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Snimanje %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -324,62 +324,62 @@ msgstr ""
"Greška: Neuspjelo postavljanje oznake ili otkrivanje UUID Vašeg uređaja. "
"Nemoguće nastaviti."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, fuzzy, python-format
msgid "Installation complete! (%s)"
msgstr "Snimanje završeno!"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Snimanje završeno!"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
"check the \"Run this program as an administrator\" box."
msgstr ""
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
msgid "Tails Installer"
msgstr ""
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr ""
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr ""
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
msgid "\"Clone & Install\""
msgstr ""
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -387,44 +387,44 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr ""
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr ""
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
#, fuzzy
msgid "Installation complete!"
msgstr "Snimanje završeno!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr ""
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
#, fuzzy
msgid "Unable to mount device"
msgstr "Neuspjelo montiranje uređaja: %s"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr ""
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
"(%(device)s). All data on the selected device will be lost. Continue?"
msgstr ""
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -432,25 +432,25 @@ msgid ""
"unchanged. Continue?"
msgstr ""
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Snimanje završeno!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Snimanje nije uspjelo:"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Možete pokušati ponovo da nastavite svoje snimanje"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
msgstr ""
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
#, fuzzy
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
@@ -459,7 +459,7 @@ msgstr ""
"Nažalost, postoje poteškoće pri enkodiranju datoteke Vašeg livecd-a. Možete "
"imati više sreće ako premjestite Vaš ISO na root Vašeg pogona (npr: C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, fuzzy, python-format
msgid "%(filename)s selected"
msgstr "ISO odabran: %s"
@@ -497,72 +497,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr ""
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/ca.po b/po/ca.po
index 5259dbe..0445b3a 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-02-14 09:01+0000\n"
"Last-Translator: Guillem Arias Fauste <oficialredstonehelper@gmail.com>\n"
"Language-Team: Catalan (http://www.transifex.com/projects/p/torproject/"
@@ -316,17 +316,17 @@ msgstr ""
"Recorda d'extraure el fitxer zip liveusb-creator al complet abans d'executar "
"el programa."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Versió desconeguda: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Descarregant %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -334,17 +334,17 @@ msgstr ""
"Error: no s'ha pogut etiquetar o obtenir l'UUID del vostre dispositiu. "
"Incapaç de continuar."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Instal·lació complerta! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Instal·lar Tails"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -355,38 +355,38 @@ msgstr ""
"Compatibilitat, activa la casella \"Executa aquest programa com administrador"
"\"."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Instal·lar Tails"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -394,11 +394,11 @@ msgstr ""
"&&\n"
"Instal·la"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -406,35 +406,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "Cercant noves versions..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "Noves versions cercades!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "Instal·lació complerta!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "La instal·lació s'ha completat. Prem OK per tancar aquest programa."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "Incapaç de muntar el dispositiu."
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "Confirmeu la vostra elecció de dispositiu"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -444,7 +444,7 @@ msgstr ""
"(%(device)s). Es perdran totes les dades al dispositiu seleccionat. Voleu "
"continuar?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -455,19 +455,19 @@ msgstr ""
"dispositiu (%(device)s). Qualsevol volum persistent en aquest dispositiu es "
"mantindrà sense canvis. Voleu continuar?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Baixada completa!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Ha fallat la baixada:"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Podeu tornar-ho a intentar per continuar la vostra baixada"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
@@ -475,7 +475,7 @@ msgstr ""
"El fitxer seleccionat no s'ha pogut llegir. Ajuste els permisos o seleccione "
"un altre fitxer."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -483,7 +483,7 @@ msgstr ""
"Incapaç de fer servir l'arxiu seleccionat. Pots tenir més sort si mous "
"l'ISO a l'arrel de la unitat (per exemple: C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s seleccionat"
@@ -521,72 +521,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "Suprimeix %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/cs.po b/po/cs.po
index ad01980..7734771 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -16,7 +16,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-02-14 09:01+0000\n"
"Last-Translator: FooBar <thewired@riseup.net>\n"
"Language-Team: Czech (http://www.transifex.com/projects/p/torproject/"
@@ -312,17 +312,17 @@ msgstr ""
"Ujistěte se, že extrahujete celý liveusb-creator zip soubor před spuštěním "
"programu."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Neznámé vydání: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Stahuji %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -330,17 +330,17 @@ msgstr ""
"Chyba: Nelze nastavit jmenovku nebo získat UUID vašeho zařízení. Nemohu "
"pokračovat."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Instalace kompletní! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Instalace Tails"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -350,38 +350,38 @@ msgstr ""
"kliknutím pravým tlačítkem na ikonu a vyberte Vlastnosti. V záložce "
"Kompatibilita vyberte možnost Spustit tento program jako správce."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Instalace Tails"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -389,11 +389,11 @@ msgstr ""
"&&\n"
"Instalovat"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -401,35 +401,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "Obnovování verzí..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "Verze obnoveny!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "Instalace kompletní!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "Instalace proběhla úspěšně. Stiskněte OK pro ukončení."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "Nemohu připojit zařízení"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "Potvrďte prosím výběr vašeho zařízení"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -439,7 +439,7 @@ msgstr ""
"%(vendor)s %(model)s. Všechna data na zvoleném zařízení budou ztracena. "
"Pokračovat?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -450,26 +450,26 @@ msgstr ""
"(%(device)s) %(vendor)s %(model)s. Jakékoli trvalé svazky na tomto zařízení "
"zůstnou beze změny. Pokračovat?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Stahování dokončeno!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Stahování selhalo: "
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Zkuste znovu zahájit stahování"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
msgstr ""
"Vybraný soubor je nečitelný. Opravte jeho oprávnění nebo vyberte jiný soubor."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -477,7 +477,7 @@ msgstr ""
"Nemohu použít vybraný soubor. Zkuste přesunout ISO do kořenového adresáře "
"vašeho disku (např. C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s zvolen"
@@ -515,72 +515,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "Odebírám %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/da.po b/po/da.po
index 0694f1e..6cca8b0 100644
--- a/po/da.po
+++ b/po/da.po
@@ -16,7 +16,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-02-14 09:01+0000\n"
"Last-Translator: Niels Nielsen Horn <Niels@codingpirates.dk>\n"
"Language-Team: Danish (http://www.transifex.com/projects/p/torproject/"
@@ -313,34 +313,34 @@ msgstr ""
"Vær sikker på at udpakke hele zip-filen liveusb-creator før du kører dette "
"program."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Ukendt udgivelse: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Henter %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
msgstr ""
"Fejl: Kunne ikke sætte etiket eller finde enhedens UUID. Kan ikke fortsætte."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Installation færdig! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Installer Tails"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -350,38 +350,38 @@ msgstr ""
"højreklik på ikonet og åbn egenskaberne. Under kompatibilitetsfanebladet "
"afkrydses boksen »Kør dette program som en administrator«."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Installer Tails"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -389,11 +389,11 @@ msgstr ""
"&&\n"
"Installér"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -401,35 +401,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "Genopfrisker releases..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "Releases opdateret!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "Installation færdig!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "Installation er færdig. Tryk O.k. for at lukke dette program."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "Kan ikke tilslutte enhed"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "Bekræft venligst dit valg af enhed"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -438,7 +438,7 @@ msgstr ""
"Du har valgt at installere Tails på %(size)s %(vendor)s %(model)s enheden "
"(%(device)s). Alt data på den valgte enhed tabes. Fortsæt?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -449,19 +449,19 @@ msgstr ""
"enheden (%(device)s). Enhver vedvarende partition på enheden ændres ikke. "
"Fortsæt?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Nedhentning udført!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Nedhentning fejlede: "
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Du kan prøve at genoptage din nedhentning igen"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
@@ -469,7 +469,7 @@ msgstr ""
"Den valgte fil er ikke læsbar. Du kan enten ændre filtilladelserne eller "
"vælge en anden fil."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -477,7 +477,7 @@ msgstr ""
"Kan ikke anvende den valgte fil. Prøv istedet at flytte din ISO til roden af "
"dit drev (dvs. C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s valgt"
@@ -515,72 +515,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "Fjerner %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/de.po b/po/de.po
index d93155e..245e118 100644
--- a/po/de.po
+++ b/po/de.po
@@ -29,7 +29,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-03-08 16:51+0000\n"
"Last-Translator: Alan Kocay <alen.kocaj@yahoo.com>\n"
"Language-Team: German (http://www.transifex.com/projects/p/torproject/"
@@ -334,17 +334,17 @@ msgstr ""
"Stellen Sie sicher, dass die gesamte Zip-Datei des LiveUSB-Creators entpackt "
"wurde, bevor Sie dieses Programm starten."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Unbekannte Veröffentlichung: %s "
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "%s wird heruntergeladen …"
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -352,17 +352,17 @@ msgstr ""
"Fehler: Die Bezeichnung kann nicht gesetzt oder die UUID Ihres "
"Speichermediums nicht ermittelt werden. Fortfahren nicht möglich."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Installation abgeschlossen! (%s) "
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Tails installieren"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -373,38 +373,38 @@ msgstr ""
"öffnen Sie dort die Eigenschaften. Setzen Sie nun einen Haken bei »Programm "
"als Administrator ausführen« im Reiter »Kompatibilität«."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Tails installieren"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -412,11 +412,11 @@ msgstr ""
"&&\n"
"Installieren"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -424,35 +424,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "Veröffentlichungen werden aktualisiert …"
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "Veröffentlichungen wurden aktualisiert!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "Installation abgeschlossen!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "Installation abgeschlossen. OK drücken, um das Programm zu schließen."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "Gerät kann nicht einhängt werden"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "Bitte bestätigen Sie Ihre Auswahl"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -462,7 +462,7 @@ msgstr ""
"%(vendor)s %(model)s (%(device)s). Alle Daten auf dem ausgewählten Medium "
"gehen verloren. Fortfahren?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -473,19 +473,19 @@ msgstr ""
"%(parent_size)s %(vendor)s %(model)s (%(device)s) durch. Alle beständigen "
"Speicherbereiche auf diesem Medium bleiben unverändert. Fortfahren?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Herunterladen abgeschlossen!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Herunterladen fehlgeschlagen:"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Sie können versuchen, das Herunterladen fortzusetzen"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
@@ -493,7 +493,7 @@ msgstr ""
"Die ausgewählte Datei konnte nicht gelesen werden. Bitte korrigieren Sie die "
"Berechtigungen oder wählen Sie eine andere Datei aus."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -502,7 +502,7 @@ msgstr ""
"funktioniert es wenn Sie die ISO Datei direkt in einem Laufwerk (z.B. C:\\) "
"ablegen."
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s ausgewählt"
@@ -540,72 +540,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "Entferne %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/el.po b/po/el.po
index 4a0200d..99f641e 100644
--- a/po/el.po
+++ b/po/el.po
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-04-23 20:22+0000\n"
"Last-Translator: metamec\n"
"Language-Team: Greek (http://www.transifex.com/projects/p/torproject/"
@@ -323,17 +323,17 @@ msgstr ""
"Πριν εκτελέσετε το πρόγραμμα αυτό, βεβαιωθείτε ότι έχετε εξαγάγει το "
"συμπιεσμένο αρχείο του liveusb-creator."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Άγνωστη έκδοση: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Γίνεται λήψη %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -341,17 +341,17 @@ msgstr ""
"Σφάλμα: Αδυναμία ορισμού της ετικέτας ή λήψης του UUID της συσκευής σας. "
"Αδυναμία συνέχειας."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Η εγκατάσταση ολοκληρώθηκε! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Εγκατάσταση του Tails"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -362,47 +362,47 @@ msgstr ""
"Ιδιότητες. Στην καρτέλα Συμβατότητας, ενεργοποιήστε το κουτάκι \"Εκτέλεσε "
"αυτό το πρόγραμμα ως διαχειριστής\"."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Εγκατάσταση του Tails"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr "Κλωνοποίηση⏎ &&⏎ Εγκατάσταση"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -410,37 +410,37 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "Ανανέωση εκδόσεων..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "Η ανανεωση πετυχε!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "Η εγκατάσταση ολοκληρώθηκε!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr ""
"Η εγκατάσταση έχει ολοκληρωθεί. Πιέστε το OK για να κλείσετε αυτό το "
"πρόγραμμα."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "Αδυναμία προσάρτησης συσκευής"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "Παρακαλώ επιβεβαιώστε την επιλογή συσκευής"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -449,7 +449,7 @@ msgstr ""
"Πρόκειται να εγκαταστήσετε το Tails στο %(size)s %(vendor)s %(model)s δίσκο "
"(%(device)s). Όλα τα υπάρχοντα δεδομένα θα χαθούν. Συνέχεια;"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -459,19 +459,19 @@ msgstr ""
"Πρόκειται να αναβαθμίσετε το Tails στο %(parent_size)s %(vendor)s %(model)s "
"δίσκο (%(device)s). Αν έχετε μόνιμο χώρο, θα διατηρηθεί. Συνέχεια;"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Η λήψη ολοκληρώθηκε!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Η λήψη απέτυχε:"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Μπορείτε να δοκιμάσετε να συνεχίσετε τη λήψη"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
@@ -479,7 +479,7 @@ msgstr ""
"Το συγκεκριμένο αρχείο δεν μπορεί να αναγνωσθεί. Παρακαλώ διορθώστε τα "
"δικαιώματά του ή διαλέξτε άλλο αρχείο."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -487,7 +487,7 @@ msgstr ""
"Αδυναμία χρήσης του επιλεγμένου αρχείου. Μπορεί να έχετε καλύτερη τύχη αν "
"μετακινήσετε το ISO στη ριζα του δίσκου σας (πχ C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "επιλέχθηκαν %(filename)s"
@@ -525,72 +525,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "Απομακρύνονται τα %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/en_GB.po b/po/en_GB.po
index f8f98ce..edf83d5 100644
--- a/po/en_GB.po
+++ b/po/en_GB.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-02-14 09:01+0000\n"
"Last-Translator: Foorack <maxfaxalv@gmail.com>\n"
"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/"
@@ -308,17 +308,17 @@ msgstr ""
"Make sure to extract the entire liveusb-creator zip file before running this "
"program."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Unknown release: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Downloading %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -326,17 +326,17 @@ msgstr ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Installation complete! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Install Tails"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -346,38 +346,38 @@ msgstr ""
"click on the icon and open the Properties. Under the Compatibility tab, "
"check the \"Run this program as an administrator\" box."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Install Tails"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -385,11 +385,11 @@ msgstr ""
"&&\n"
"Install"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -397,35 +397,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "Refreshing releases..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "Releases updated!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "Installation complete!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "Installation was completed. Press OK to close this program."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "Unable to mount device"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "Please confirm your device selection"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -434,7 +434,7 @@ msgstr ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
"(%(device)s). All data on the selected device will be lost. Continue?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -445,19 +445,19 @@ msgstr ""
"device (%(device)s). Any persistent volume on this device will remain "
"unchanged. Continue?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Download complete!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Download failed: "
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "You can try again to resume your download"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
@@ -465,7 +465,7 @@ msgstr ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -473,7 +473,7 @@ msgstr ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s selected"
@@ -511,72 +511,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "Removing %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/es.po b/po/es.po
index 7ac25f5..b516cd3 100644
--- a/po/es.po
+++ b/po/es.po
@@ -17,7 +17,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-03-10 14:59+0000\n"
"Last-Translator: Emma Peel\n"
"Language-Team: Spanish (http://www.transifex.com/projects/p/torproject/"
@@ -333,17 +333,17 @@ msgstr ""
"Asegúrese de extraer el fichero zip liveusb-creator completamente antes de "
"ejecutar este programa."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Versión desconocida: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Descargando %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -351,17 +351,17 @@ msgstr ""
"Error: No se pudo establecer u obtener el UUID de su dispositivo. No se pudo "
"continuar."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "¡Instalación completa! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Instalar Tails"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -372,38 +372,38 @@ msgstr ""
"abra las Propiedades. Bajo la pestaña Compatibilidad, marque la casilla "
"\"Ejecutar este programa como un administrador\"."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Instalar Tails"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -411,11 +411,11 @@ msgstr ""
"e\n"
"instalar"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -423,35 +423,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "Comprobando nuevas versiones..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "¡Nuevas versiones actualizadas!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "¡Instalación completa!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "Instalación completa. Pulse Aceptar para cerrar este programa."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "No se pudo montar el dispositivo"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "Por favor confirme la selección de su dispositivo"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -461,7 +461,7 @@ msgstr ""
"(%(device)s). Todos los datos en el dispositivo seleccionado se perderán "
"¿Continuar?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -472,19 +472,19 @@ msgstr ""
"(%(device)s). Cualquier volumen persistente en este dispositivo permanecerá "
"inalterado. ¿Continuar?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "¡Descarga completa!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Fallo de la descarga: "
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Puede intentar continuar con la descarga de nuevo donde la dejó"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
@@ -492,7 +492,7 @@ msgstr ""
"El fichero seleccionado no se pudo leer. Ajuste sus permisos o seleccione "
"otro fichero."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -500,7 +500,7 @@ msgstr ""
"No se pudo utilizar el fichero seleccionado. Puede que tenga más suerte si "
"mueve su ISO a la carpeta raíz de su unidad (ej. C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s seleccionado(s)"
@@ -538,72 +538,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "Eliminando %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/es_AR.po b/po/es_AR.po
index f259e68..bf7e173 100644
--- a/po/es_AR.po
+++ b/po/es_AR.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2014-12-03 11:44+0000\n"
"Last-Translator: runasand <runa.sandvik@gmail.com>\n"
"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/"
@@ -317,17 +317,17 @@ msgstr ""
"Asegúrese de extraer el archivo zip de liveusb-creator antes de ejecutar "
"este programa."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Versión desconocida: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Descargando %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -335,17 +335,17 @@ msgstr ""
"Error: No se pudo establecer u obtener el UUID de su dispositivo. No se "
"puede continuar."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Instalación completa! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Instalar Tails"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -356,38 +356,38 @@ msgstr ""
"En la pestaña Compatibilidad, marque el recuadro \"Ejecutar este programa "
"como un administrador\"."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Instalar Tails"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -395,11 +395,11 @@ msgstr ""
"&&\n"
"Instalar"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -407,36 +407,36 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "Comprobando nuevas versiones..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "¡Versiones actualizadas!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "¡Instalación completa!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr ""
"La instalación se ha completado. Presione Aceptar para cerrar este programa."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "No se pudo montar el dispositivo"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "Por favor confirmá tu dispositivo elegido"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -446,7 +446,7 @@ msgstr ""
"%(model)s de %(size)s). Todos los datos de este se perderán. ¿Desea "
"continuar?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -457,19 +457,19 @@ msgstr ""
"%(model)s de %(parent_size)s). Todos los volúmenes persistentes de este "
"serán conservados. ¿Desea continuar?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "¡Descarga completa!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Descarga fallida:"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Puedes intentar de nuevo para reanudar tu descarga"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
@@ -477,7 +477,7 @@ msgstr ""
"No se pudo leer el archivo seleccionado. Por favor cambie los permisos o "
"seleccione otro archivo."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -485,7 +485,7 @@ msgstr ""
"Imposible usar el archivo seleccionado. Quizás tenga mejor suerte si mueve "
"su ISO a la carpeta de raíz de la unidad (ej: C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s seleccionado"
@@ -523,72 +523,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "Removiendo %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/eu.po b/po/eu.po
index 1f3ce74..56101c2 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2012-12-12 16:49+0000\n"
"Last-Translator: Antxon Baldarra <baldarra@euskalerria.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -307,17 +307,17 @@ msgstr ""
"Egiaztatu liveusb-creator zip fitxategi osoa erauzten duzula programa hau "
"exekutatu baino lehen."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Argitalpen ezezaguna: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "%s deskargatzen..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -325,17 +325,17 @@ msgstr ""
"Akatsa: Ezin da etiketa ezarri edo zure gailuaren UUIDa eskuratu. Ezin da "
"jarraitu."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Instalazioa burutu da! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Instalazioa burutu da!"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -345,45 +345,45 @@ msgstr ""
"sakatu eskuinarekin ikonoan eta ireki Propietateak. Bateragarritasuna "
"fitxan, markatu \"Programa hau administratzale bezala exekutatu\" kutxa."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
msgid "Tails Installer"
msgstr ""
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr ""
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr ""
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
msgid "\"Clone & Install\""
msgstr ""
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -391,42 +391,42 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr ""
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr ""
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "Instalazioa burutu da!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "Instalazio burutu da. Sakatu Ados programa hau ixteko."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "Ezin da gailua muntatu"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr ""
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
"(%(device)s). All data on the selected device will be lost. Continue?"
msgstr ""
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -434,19 +434,19 @@ msgid ""
"unchanged. Continue?"
msgstr ""
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Deskarga burutu da!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Deskargak huts egin du:"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Deskarga jarraitzen saia zaitezke berriz"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
#, fuzzy
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
@@ -455,7 +455,7 @@ msgstr ""
"Hautatutako fitxategia ezin da irakurri. Mesedez bere baimenak aldatu edo "
"beste fitxategi bat hautatu."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -463,7 +463,7 @@ msgstr ""
"Hautatutako fitxategia ezin da erabili. Sorte gehiago izan dezakezu zure "
"ISOa zure gailuaren oinarrira mugitzen baduzu (adib: C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s hautatua"
@@ -501,72 +501,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "%(file)s kentzen"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/fa.po b/po/fa.po
index 79b98d3..25abcba 100644
--- a/po/fa.po
+++ b/po/fa.po
@@ -18,7 +18,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-02-14 09:01+0000\n"
"Last-Translator: Gilberto\n"
"Language-Team: Persian (http://www.transifex.com/projects/p/torproject/"
@@ -319,17 +319,17 @@ msgstr ""
"پیش از اجرای این برنامه مطمئن شوید که فایل liveusb-creator را از حالت فشرده "
"خارج کرده‌اید"
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "نسخه نرم افزار معتبر نیست: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "در حال دانلود %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -337,17 +337,17 @@ msgstr ""
"خطا: امکان تنظیم کردن نام دستگاه شما نیست و یا خواندن UUID دستگاه شما ممکن "
"نبود. نمی توان ادامه داد."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "عمليات نصب به پايان رسيد! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "نصب تیلز"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -357,47 +357,47 @@ msgstr ""
"بر روي آيكون راست كليك كرده، سپس Properties را انتخاب كرده و از لبه "
"Compatibility، گزينه Run the program as an administrator را انتخاب كنيد."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "نصب تیلز"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr "کپی\\n&&\\نصب"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -405,35 +405,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "بازنگری انتشار‌ها…"
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "انتشارها بروزرسانی شدند!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "عمليات نصب به پايان رسيد!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "عمليات نصب به پايان رسيد. دكمه OK را براي بستن برنامه بزنيد."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "فادر به بارگذاري دستگاه نيست."
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "لطفا دستگاه انتخابی تان را تایید کنید"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -442,7 +442,7 @@ msgstr ""
"شما قصد نصب تیلز روی این دستگاه را دارید: %(size)s %(vendor)s %(model)s :"
"(%(device)s). همه ی اطلاعات موجود روی آن پاک خواهد شد. مطمئن هستید؟"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -453,19 +453,19 @@ msgstr ""
"به روز خواهید کرد. هر درایو ثابتی روی این دستگاه بدون تغییر باقی خواهد ماند. "
"ادامه می دهید؟ "
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "دانلود کامل شد!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "دانلود نا موفق:"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "بار دیگر می توانید برای ادامه دانلود سعی کنید"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
@@ -473,7 +473,7 @@ msgstr ""
"فایل انتخاب‌شده قابل خواندن نیست. لطفا اجازه دسترسی به آن را اصلاح کنید یا "
"فایل دیگری را انتخاب کنید"
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -481,7 +481,7 @@ msgstr ""
"قادر به استفاده از فايل انتخاب شده نيست. اگر فايل ايزو را به ريشه درايو خود "
"(مثلاً C) منتقل كنيد ممكن است شانس بيتشري داشته باشيد."
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s انتخاب شده"
@@ -519,72 +519,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "برداشتن %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/fi.po b/po/fi.po
index 5c1d336..8f73d5a 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-02-14 09:01+0000\n"
"Last-Translator: Jorma Karvonen <karvonen.jorma@gmail.com>\n"
"Language-Team: Finnish (http://www.transifex.com/projects/p/torproject/"
@@ -312,17 +312,17 @@ msgstr ""
"Huolehdi, että purat kokonaisuudessaan liveusb-creatorin zip -tiedoston "
"ennen kuin suoritat tämän ohjelman."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Tuntematon julkaisu: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Ladataan %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -330,17 +330,17 @@ msgstr ""
"Virhe: Nimiön tai laitteen UUID:n hakeminen epäonnistui. Jatkaminen "
"epäonnistui."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Asennus on valmis! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Asenna Tails"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -351,38 +351,38 @@ msgstr ""
"Rastita Yhteensopivuus-välilehdestä kohta \"Suorita ohjelma "
"järjestelmänvalvojana\"."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Asenna Tails"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -390,11 +390,11 @@ msgstr ""
"&&\n"
"Asenna"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -402,35 +402,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "Päivitetään julkaisuja..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "Julkaisut päivitetty!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "Asennus on valmis!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "Asennus on valmis. Napsauta OK, jolloin ohjelma sulkeutuu."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "Laitteen liittäminen epäonnistui"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "Vahvista laitevalintasi"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -439,7 +439,7 @@ msgstr ""
"Olet asentamassa Tailsin %(size)s %(vendor)s %(model)s laitteelle "
"(%(device)s). Kaikki tiedot asemalta menetetään. Jatketaanko?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -449,19 +449,19 @@ msgstr ""
"Olet päivittämässä Tailsin %(parent_size)s %(vendor)s %(model)s laitteelle "
"(%(device)s). Mahdolliset pysyvät osiot jätetään ennalleen. Jatketaanko?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Lataus on valmis!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Lataus epäonnistui:"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Voit yrittää jatkaa latausta"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
@@ -469,7 +469,7 @@ msgstr ""
"Valittu tiedosto ei ole luettavissa. Korjaa käyttöoikeudet tai valitse "
"toinen tiedosto."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -477,7 +477,7 @@ msgstr ""
"Valittua tiedostoa ei voitu käyttää. Tämä saattaa onnistua paremmin, jos "
"siirrät ISOn aseman juurihakemistoon (esim. C:\\)."
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s valittu"
@@ -515,72 +515,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "Poistetaan %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/fr.po b/po/fr.po
index 0d894db..3b60f0a 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: liveusb-creator 3.9\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-11-10 16:37+0100\n"
"Last-Translator: \n"
"Language-Team: French <kde-i18n-doc@kde.org>\n"
@@ -320,17 +320,17 @@ msgstr ""
"Assurez-vous d'extraire complètement l'archive zip de liveusb-creator avant "
"d'exécuter ce programme."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Version inconnue : %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Téléchargement de %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -338,17 +338,17 @@ msgstr ""
"Erreur : Impossible de configurer le label ou d'obtenir l'UUID du "
"périphérique. Impossible de continuer."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Installation terminée ! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Installer Tails"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -359,38 +359,38 @@ msgstr ""
"Compatibilité, cochez la case \"Lancer ce programme en tant qu'Administrateur"
"\"."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Installer Tails"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr ""
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr ""
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -398,11 +398,11 @@ msgstr ""
"&&\n"
"Installer"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -410,35 +410,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "Actualisation de version..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "Version à jour !"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "Installation terminée !"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "L'installation est terminée. Appuyez sur OK pour fermer ce programme."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "Impossible de monter le périphérique"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "Veuillez confirmer votre sélection du périphérique"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -448,7 +448,7 @@ msgstr ""
"(%(device)s). Toutes les données contenues dans le périphérique sélectionné "
"seront perdues. Continuer ?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -459,19 +459,19 @@ msgstr ""
"%(vendor)s %(model)s (%(device)s). Aucun volume persistant sur ce "
"périphérique ne sera modifié. Continuer ?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Téléchargement terminé !"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Échec du téléchargement : "
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Vous pouvez essayer de reprendre votre téléchargement"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
@@ -479,7 +479,7 @@ msgstr ""
"Le fichier sélectionné n'est pas lisible. Veuillez corriger ses permissions "
"ou sélectionner un autre fichier."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -487,7 +487,7 @@ msgstr ""
"Impossible d'utiliser le fichier sélectionné. Vous devriez avoir plus de "
"chance en déplacant l'ISO à la racine de votre disque (par exemple : C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s sélectionné"
@@ -529,72 +529,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "Suppression du fichier %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/fr_CA.po b/po/fr_CA.po
index 2e261ea..3273098 100644
--- a/po/fr_CA.po
+++ b/po/fr_CA.po
@@ -16,7 +16,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-02-14 09:01+0000\n"
"Last-Translator: yahoe.001\n"
"Language-Team: French (Canada) (http://www.transifex.com/projects/p/"
@@ -321,17 +321,17 @@ msgstr ""
"Bien extraire l'archive zip de liveusb-creator en entier avant d'exécuter ce "
"programme."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Version inconnue : %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Téléchargement de %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -339,17 +339,17 @@ msgstr ""
"Erreur : impossible de configurer l'étiquette ou d'obtenir l'UUID de votre "
"périphérique. Impossible de continuer."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Installation terminée! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Installer Tails"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -360,38 +360,38 @@ msgstr ""
"compatibilité, cocher la case \"Lancer ce programme en tant qu'administrateur"
"\"."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Installer Tails"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -399,11 +399,11 @@ msgstr ""
"&&\n"
"Installer"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -411,35 +411,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "Raffraîchissement des versions..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "Version mise à jour!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "Installation terminée!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "L'installation est terminée. Appuyez sur OK pour fermer ce programme."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "Impossible de monter le périphérique"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "Veuillez confirmer votre choix de périphérique"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -449,7 +449,7 @@ msgstr ""
"%(vendor)s %(model)s. Toutes les données sur ce périphérique seront perdues. "
"Continuer?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -460,19 +460,19 @@ msgstr ""
"%(parent_size)s %(vendor)s %(model)s. Tout volume persistant sur ce "
"périphérique restera inchangé. Continuer?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Téléchargement terminé!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Échec du téléchargement : "
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Vous pouvez essayer de reprendre votre téléchargement"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
@@ -480,7 +480,7 @@ msgstr ""
"Le fichier sélectionné n'est pas lisible. Veuillez changer ses permissions "
"ou sélectionner un autre fichier."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -488,7 +488,7 @@ msgstr ""
"Impossible d'utiliser le fichier choisi. Vous devriez avoir plus de chance "
"en déplaçant l'ISO sur la racine de votre disque (c.-à-d. : C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s sélectionné"
@@ -526,72 +526,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "Suppression de %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/he.po b/po/he.po
index 87b0807..90c5103 100644
--- a/po/he.po
+++ b/po/he.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2013-01-12 20:12+0000\n"
"Last-Translator: blackbird <yaelgogol@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -300,17 +300,17 @@ msgid ""
"program."
msgstr "ודא שפרסת את כל הקובץ הדחוס לפני הרצת התכנית."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "שחרור לא ידוע: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "%s מתקבל..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -318,17 +318,17 @@ msgstr ""
"שגיאה לא ניתן להגדיר את התווית או לקבל את ה־UUID של ההתקן שלך. לא ניתן "
"להמשיך."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "ההתקנה הושלמה! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "התקנה הושלמה!"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -338,45 +338,45 @@ msgstr ""
"הסמל ולפתוח את המאפיינים. בכרטיסיית התאימות, סמן את התיבה הפעל תכנית זו "
"בAdministrator\"."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
msgid "Tails Installer"
msgstr ""
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr ""
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr ""
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
msgid "\"Clone & Install\""
msgstr ""
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -384,42 +384,42 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr ""
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr ""
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "התקנה הושלמה!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "ההתקנה הושלמה. לחץ OK כדי ללסגור את התוכנית."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "אי אפשר לצרף את המכשיר."
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr ""
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
"(%(device)s). All data on the selected device will be lost. Continue?"
msgstr ""
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -427,26 +427,26 @@ msgid ""
"unchanged. Continue?"
msgstr ""
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "ההורדה הושלמה!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "הורדה נכשלה:"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "ניתן לנסות שוב כדי להמשיך את ההורדה שלך"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
#, fuzzy
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
msgstr "הקובץ הנבחר לא ניתן לקריאה. בבקשה תקן את ההרשאות או בחר קובץ אחר."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -454,7 +454,7 @@ msgstr ""
"אי אפשר להשתמש בקובץ הנבחר. יכול להיות שתצליח אם תעביר את ה ISO \n"
"שלך למחיצה הראשית של הכונן (למשל, \\ :C)."
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s נבחר"
@@ -492,72 +492,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "הסרת קובץ %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/hr_HR.po b/po/hr_HR.po
index 59b8322..4a5fac4 100644
--- a/po/hr_HR.po
+++ b/po/hr_HR.po
@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-02-14 09:01+0000\n"
"Last-Translator: skiddiep <lyricaltumor@gmail.com>\n"
"Language-Team: Croatian (Croatia) (http://www.transifex.com/projects/p/"
@@ -308,17 +308,17 @@ msgstr ""
"Raspakirajte cijelu liveusb-creator ZIP datoteku prije pokretanja ovoga "
"programa."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Nepoznato izdanje: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Preuzimam %s…"
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -326,17 +326,17 @@ msgstr ""
"Greška: Ne mogu postaviti oznaku ili doći do UUID‑a Vašeg uređaja. Ne mogu "
"nastaviti."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Instalacija dovršena! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Instaliraj Tails"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -347,38 +347,38 @@ msgstr ""
"karticom Kompatibilnost, označite kvačicom \"Pokreni ovaj program kao "
"administrator\"."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Instaliraj Tails"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -386,11 +386,11 @@ msgstr ""
"&&\n"
"Instaliraj"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -398,36 +398,36 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "Osvježavam izdanja…"
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "Izdanja ažurirana!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "Instalacija dovršena!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr ""
"instalacija je dovršena. Pritisnite „OK“ kako bi zatvorili ovaj program."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "Ne mogu postaviti uređaj"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "Molimo potvrdite Vaš izbor uređaja"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -436,7 +436,7 @@ msgstr ""
"Instalirati ćete Tails na %(size)s %(vendor)s %(model)s uređaj (%(device)s). "
"Svi podatci na odabranom uređaju će biti izgubljeni. Nastaviti?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -447,19 +447,19 @@ msgstr ""
"(%(device)s). Svi trajni pogoni na ovom uređaju će ostati nepromijenjeni. "
"Nastaviti?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Preuzimanje dovršeno!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Preuzimanje nije uspjelo:"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Možete pokušati ponovno za nastavak preuzimanja"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
@@ -467,7 +467,7 @@ msgstr ""
"Izabrana datoteka je nečitljiva. Molimo popravite njezine dozvole ili "
"izaberite drugu datoteku."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -475,7 +475,7 @@ msgstr ""
"Nisam u mogućnosti koristiti izabranu datoteku. Možda ćete imati više sreće "
"ako Vaš ISO premjestite u korijen Vašega pogona (npr C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s odabrano"
@@ -513,72 +513,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "Mičem %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/hu.po b/po/hu.po
index 1d7b263..620c219 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-02-14 09:01+0000\n"
"Last-Translator: blackc0de <complic@vipmail.hu>\n"
"Language-Team: Hungarian (http://www.transifex.com/projects/p/torproject/"
@@ -312,17 +312,17 @@ msgstr ""
"Győződjön meg róla, hogy kicspmagolta a teljes liveusb-creator zip fájlt "
"mielőtt futtatja ezt a programot."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Ismeretlen kiadás: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "%s letöltése…"
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -330,17 +330,17 @@ msgstr ""
"Hiba: A címkét nem lehet beállítani, vagy az eszköz UUID-jét lekérni. A "
"folytatás nem lehetséges."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Telepítés kész! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Tails telepítése"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -351,38 +351,38 @@ msgstr ""
"Tulajdonságok ablakot, és a Kompatibilitás fülön jelölje a \"Futtatás "
"rendszergazdaként\" opciót."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Tails telepítése"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -390,11 +390,11 @@ msgstr ""
"&&\n"
"Telepítés"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -402,36 +402,36 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "Kiadások frissítése..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "Kiadások frissítve!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "Telepítés kész!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr ""
"A telepítés befejeződött. Kattintson az OK gombra a program bezárásához."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "Nem lehetséges az eszköz csatolása"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "Erősítsd meg az eszköz választásod"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -440,7 +440,7 @@ msgstr ""
"Telepíteni fogod a Tails-t %(size)s %(vendor)s %(model)s eszköz "
"(%(device)s). Minden adat a választott eszközön törlődni fog. Folytatod?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -451,19 +451,19 @@ msgstr ""
"(%(device)s). Minden jelenlevő persistent kötet az eszközön változatlan "
"marad. Folytatod?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Letöltés kész!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "A letöltés nem sikerült:"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Megpróbálhatja újra, így folytatva a letöltést"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
@@ -471,7 +471,7 @@ msgstr ""
"A kijelölt fájl nem olvasható. Változtasd meg a jogosultságokat vagy válassz "
"egy másik fájlt."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -479,7 +479,7 @@ msgstr ""
"Nem tudom használni a kiválasztott fájlt. Szerrencsésebb lenne aaz ISO fájlt "
"a meghatjó gyökerébe mozgatni (pl: C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s kiválasztva"
@@ -517,72 +517,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "%(file)s eltávolítása"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/id.po b/po/id.po
index 99ff429..6be030a 100644
--- a/po/id.po
+++ b/po/id.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-06-25 12:38+0000\n"
"Last-Translator: Zamani Karmana <zamani.karmana@gmail.com>\n"
"Language-Team: Indonesian (http://www.transifex.com/projects/p/torproject/"
@@ -310,17 +310,17 @@ msgstr ""
"Pastikan untuk mengekstrak seluruh berkas zip liveusb-creator sebelum "
"menjalankan program ini."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Rilis tidak diketahui: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Mengunduh %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -328,17 +328,17 @@ msgstr ""
"Kesalahan: Tidak dapat mengatur label atau memperoleh UUID perangkat Anda. "
"Tidak dapat melanjutkan."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Pemasangan sudah tuntas! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Install Tails"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -348,38 +348,38 @@ msgstr ""
"ini , klik kanan pada ikon dan buka Properties .Dibawah Tab Compatibility, "
"cek box \"Jalankan program ini sebagai adminisrator\""
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Install Tails"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -387,11 +387,11 @@ msgstr ""
"&&\n"
"Pasang"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -399,35 +399,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "Menyegarkan rilis..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "Rilis telah diperbarui!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "Pemasangan sudah tuntas!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "Pemasangan sudah tuntas! Tekan OK untuk menutup program ini."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "Gagal memuat perangkat"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "Mohon mengkonfirmasi perangkat pilihan anda"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -436,7 +436,7 @@ msgstr ""
"Anda akan instal Tails pada %(size)s %(vendor)s %(model)s device "
"(%(device)s). Semua data pada perangkat terpilih akan hilang . Lanjutkan?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -447,19 +447,19 @@ msgstr ""
"(%(device)s). Bebebrapa Volume persistent pada perangkat ini akan tetap "
"tidak berubah . Lanjutkan ?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Download lengkap!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Download gagal:"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Anda dapat mencoba lagi untuk melanjutkan download Anda"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
@@ -467,7 +467,7 @@ msgstr ""
"File terpilih tidak bisa dibaca. silakan perbaharui izinnya atau pilih file "
"lain"
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -475,7 +475,7 @@ msgstr ""
"Tidak bisa menggunakan file yang terpilih. anda mungkin lebih beruntung jika "
"anda memindahkan ISO anda ke akar/root dari drive (ie:C\\) anda"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s terpilih"
@@ -513,72 +513,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "Menghapus %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/is.po b/po/is.po
index 83f389c..739b233 100644
--- a/po/is.po
+++ b/po/is.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: liveusb-creator.master.liveusb-creator\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2010-03-03 11:10+0000\n"
"Last-Translator: Sveinn í Felli <sveinki@nett.is>\n"
"Language-Team: Icelandic <rglug@rglug.org>\n"
@@ -285,78 +285,78 @@ msgid ""
"program."
msgstr ""
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Óþekkt útgáfa: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Næ í %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
msgstr ""
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, fuzzy, python-format
msgid "Installation complete! (%s)"
msgstr "Niðurhali lokið!"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Niðurhali lokið!"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
"check the \"Run this program as an administrator\" box."
msgstr ""
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
msgid "Tails Installer"
msgstr ""
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr ""
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr ""
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
msgid "\"Clone & Install\""
msgstr ""
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -364,44 +364,44 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr ""
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr ""
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
#, fuzzy
msgid "Installation complete!"
msgstr "Niðurhali lokið!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr ""
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
#, fuzzy
msgid "Unable to mount device"
msgstr "Get ekki tengt tækið: %s"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr ""
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
"(%(device)s). All data on the selected device will be lost. Continue?"
msgstr ""
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -409,31 +409,31 @@ msgid ""
"unchanged. Continue?"
msgstr ""
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Niðurhali lokið!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Niðurhal mistókst: "
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr ""
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
msgstr ""
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
msgstr ""
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr ""
@@ -471,72 +471,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr ""
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/it.po b/po/it.po
index 561e771..c1048d3 100644
--- a/po/it.po
+++ b/po/it.po
@@ -22,7 +22,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-02-14 09:01+0000\n"
"Last-Translator: Pietro Messineo <pietromessineo@hotmail.it>\n"
"Language-Team: Italian (http://www.transifex.com/projects/p/torproject/"
@@ -325,17 +325,17 @@ msgstr ""
"Accertarsi di aver estratto il file zip liveusb-creator prima di eseguire il "
"programma"
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Release sconosciuta: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Download di %s in corso"
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -343,17 +343,17 @@ msgstr ""
"Errore: impossibile impostare l'etichetta o ottenere l'UUID del dispositivo. "
"Impossibile continuare."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Installazione completata! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Installare Tails"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -364,38 +364,38 @@ msgstr ""
"la scheda Compatibilità, click sulla box \"Apri questo programma come "
"Administrator\""
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Installare Tails"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -403,11 +403,11 @@ msgstr ""
"&&\n"
"Installare"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -415,36 +415,36 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "Ricaricamento delle release in corso..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "Release aggiornate!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "Installazione completata!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr ""
"L'installazione è stata completata. Premere OK per chiudere il programma."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "Impossibile montare il dispositivo"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "Confermare il dispositivo selezionato"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -454,7 +454,7 @@ msgstr ""
"(%(device)s). Tutti i dati sul dispositivo selezionato verranno persi. "
"Continuare?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -465,19 +465,19 @@ msgstr ""
"%(model)s (%(device)s). Qualsiasi volume persistente su questo dispositivo "
"non subirà modifiche. Continuare?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Download completo!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Download fallito:"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "È possibile tentare di ripristinare il download"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
@@ -485,7 +485,7 @@ msgstr ""
"Il file selezionato è illeggibile. Si prega di modificarne i permessi o "
"selezionare un altro file."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -493,7 +493,7 @@ msgstr ""
"Impossibile aprire il file selezionato. Provare a spostare il file ISO sulla "
"root del disco (ie: C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s selezionato/i"
@@ -531,72 +531,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "Cancellazione %(file)s in corso"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/ja.po b/po/ja.po
index 844ad66..c2f2361 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-05-30 13:53+0000\n"
"Last-Translator: ABE Tsunehiko\n"
"Language-Team: Japanese (http://www.transifex.com/projects/p/torproject/"
@@ -314,17 +314,17 @@ msgstr ""
"このプログラムを実行する前に liveusb-creator zip ファイル全体を展開したかどう"
"か確認してください。"
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "不明なリリース: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "%s をダウンロード中..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -332,17 +332,17 @@ msgstr ""
"エラー: ファイルシステムのラベルを設定できないか、デバイスの UUID を取得でき"
"ません。そのため処理を継続できません。"
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "インストール完了! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Tailsをインストール"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -352,38 +352,38 @@ msgstr ""
"ンを右クリックして、プロパティーを開いてください。互換性タブで、「管理者とし"
"てこのプログラムを実行する」のチェックボックスをチェックしてください。"
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Tailsをインストール"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -391,11 +391,11 @@ msgstr ""
"と\n"
"インストール"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -403,36 +403,36 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "リリースを更新中..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "リリースがアップデートされました!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "インストール完了しました!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr ""
"インストールが完了しました。 OKを押して、このプログラムを閉じてください。"
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "デバイスをマウントできません"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "デバイスの選択を確認してください。"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -441,7 +441,7 @@ msgstr ""
"%(size)s %(vendor)s %(model)s デバイス (%(device)s) にTailsをインストールしま"
"す。選択されたデバイスのすべてのデータが失われます。続行しますか?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -452,19 +452,19 @@ msgstr ""
"レードします。このデバイス上の永続的なボリュームが変更されることはありませ"
"ん。続行しますか?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "ダウンロード完了!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "ダウンロード失敗: "
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "ダウンロードを再開することができます"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
@@ -472,7 +472,7 @@ msgstr ""
"選択されたファイルは読み込めません。パーミッションを修正するか、ほかのファイ"
"ルを選択してください。"
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -480,7 +480,7 @@ msgstr ""
"選択されたファイルを使用できません。ISO をデバイスのルート(例えば C:\\) に移"
"動するとさらに上手くいくかもしれません。"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)sが選択されました"
@@ -518,72 +518,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "%(file)sを削除中"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/km.po b/po/km.po
index 76d56cf..be854f7 100644
--- a/po/km.po
+++ b/po/km.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2014-12-03 11:44+0000\n"
"Last-Translator: runasand <runa.sandvik@gmail.com>\n"
"Language-Team: Khmer (http://www.transifex.com/projects/p/torproject/"
@@ -299,33 +299,33 @@ msgid ""
msgstr ""
"សូម​ប្រាកដ​ថា​បាន​ស្រង់​ឯកសារ liveusb-creator zip ចេញ​ទាំងស្រុង មុន​ពេល​ដំណើរការ​កម្មវិធី​នេះ។"
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "មិន​ស្គាល់​ការ​ចេញផ្សាយ៖ %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "កំពុង​ទាញ​យក %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
msgstr "កំហុស៖ មិន​អាច​កំណត់​ស្លាក ឬ​យក UUID នៃ​ឧបករណ៍​របស់​អ្នក។ មិន​អាច​បន្ត។"
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "ការ​ដំឡើង​បាន​បញ្ចប់! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "ដំឡើង Tails"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -334,38 +334,38 @@ msgstr ""
"ព្រមាន៖ ឧបករណ៍​នេះ​ត្រូវ​ដំណើរការ​ជា​អ្នក​គ្រប់គ្រង។ ដើម្បី​ធ្វើ​វា អ្នក​ត្រូវ​ចុច​កណ្ដុរ​ស្ដាំ​លើ​រូបតំណាង រួច​បើក​"
"លក្ខណ​សម្បត្តិ។ នៅ​ក្រោម​ផ្ទាំង​ភាព​ឆបគ្នា ធីក​ប្រអប់ \"ដំណើរការ​កម្មវិធី​នេះ​ជា​អ្នក​គ្រប់គ្រង\""
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "ដំឡើង Tails"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -373,11 +373,11 @@ msgstr ""
"&&\n"
"ដំឡើង"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -385,35 +385,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "កំពុង​ផ្ទុក​ការ​ចេញផ្សាយ​ឡើងវិញ..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "បាន​ធ្វើ​បច្ចុប្បន្ន​ការ​ចេញផ្សាយ!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "ការ​ដំឡើង​បាន​បញ្ចប់!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "ការ​ដំឡើង​បាន​បញ្ចប់។ ចុច​យល់ព្រម ដើម្បី​បិទ​កម្មវិធី​នេះ។"
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "មិន​អាច​ម៉ោន​ឧបករណ៍"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "សូម​បញ្ជាក់​ជម្រើស​ឧបករណ៍​របស់​អ្នក"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -422,7 +422,7 @@ msgstr ""
"អ្នក​នឹង​ដំឡើង Tails នៅ​លើ​ឧបករណ៍ %(size)s %(vendor)s %(model)s (%(device)s) ។ ទិន្នន័យ​"
"ទាំងអស់​នៅ​លើ​ឧបករណ៍​នឹង​ត្រូវ​បាត់បង់។ បន្ត?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -432,25 +432,25 @@ msgstr ""
"អ្នក​នឹង​បង្កើន​ទំហំ Tails នៅ​លើ​ឧបករណ៍ %(parent_size)s %(vendor)s %(model)s "
"(%(device)s) ។ កម្រិត​សំឡេង​ថេរ​នៅ​លើ​ឧបករណ៍​នេះ នឹង​មិន​ផ្លាស់ប្ដូរ​ទេ។ បន្ត?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "ការ​ទាញ​យក​បាន​បញ្ចប់!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "ការ​ទាញ​យក​បាន​បរាជ័យ៖"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "អ្នក​អាច​ព្យាយាម​ម្ដងទៀត​ដើម្បី​ធ្វើ​បន្ត​ការ​ទាញ​យក​របស់​អ្នក"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
msgstr "ឯកសារ​ដែល​បាន​ជ្រើស​ជា​ឯកសារ​ដែល​មិន​អាច​អាន​បាន។ សូម​កែ​សិទ្ធិ ឬ​ជ្រើស​ឯកសារ​ផ្សេង។"
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -458,7 +458,7 @@ msgstr ""
"មិន​អាច​ប្រើ​ឯកសារ​ដែល​បាន​ជ្រើស។ អ្នក​អាច​មាន​សំណាង​ជាង បើ​អ្នក​ផ្លាស់ទី ISO ទៅ root នៃ​ដ្រាយ​របស់​"
"អ្នក (ie: C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "បាន​ជ្រើស %(filename)s"
@@ -496,72 +496,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "កំពុង​លុប %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/ko.po b/po/ko.po
index b256177..e4d8f7c 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2014-12-26 17:50+0000\n"
"Last-Translator: Sungjin Kang <potopro@gmail.com>\n"
"Language-Team: Korean (http://www.transifex.com/projects/p/torproject/"
@@ -307,17 +307,17 @@ msgstr ""
"이 프로그램을 실행하기 전에 liveusb-creator zip 파일 전체를 배포했는지 여부"
"를 확인하십시오."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "알 수 없는 자료: %s "
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "%s 다운로드 중... "
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -325,17 +325,17 @@ msgstr ""
"오류: 레이블을 설정할 수 없거나 장치의 UUID를 검색할 수 없습니다. 계속 진행"
"할 수 없습니다. "
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "설치 완료! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Tails 설치"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -345,38 +345,38 @@ msgstr ""
"오른쪽 마우스로 클릭하여 속성으로 들어간 후, 호환성 탭에서 \"관리자 권한으로 "
"프로그램 실행\"을 체크해 주세요."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Tails 설치"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -384,11 +384,11 @@ msgstr ""
"와\n"
"설치"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -396,35 +396,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "자료 업데이트 중..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "자료가 업데이트되었습니다!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "다운로드 완료! "
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "설치가 완료되었습니다. 프로그램을 종료하려면 확인을 누르십시오."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "장치를 구성할 수 없습니다."
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "장치를 확인하시기 바랍니다."
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -433,7 +433,7 @@ msgstr ""
"%(size)s%(vendor)s%(model)s장치(%(device)s)에 Tails를 설치합니다. 선택된 장"
"치 안의 모든 데이터가 없어집니다. 계속하시겠습니까?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -444,26 +444,26 @@ msgstr ""
"니다. 볼륨 안의 영구 저장 장치는 변경되지 않은 채 유지됩니다. 계속 하시겠습니"
"까?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "다운로드 완료! "
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "다운로드 실패: "
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "다운로드를 다시 시작할 수 있습니다 "
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
msgstr ""
"선택된 파일은 읽을 수 없습니다. 권한을 수정하거나 다른 파일을 선택하십시오."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -471,7 +471,7 @@ msgstr ""
"지정된 파일을 사용할 수 없으니 루트 디렉토리에 ISO 파일을 이동시키십시오. "
"(예 : C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s 선택됨"
@@ -509,72 +509,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "%(file)s를 삭제 중"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/lv.po b/po/lv.po
index ea55012..5f215de 100644
--- a/po/lv.po
+++ b/po/lv.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-02-14 09:01+0000\n"
"Last-Translator: Ojārs Balcers <ojars.balcers@gmail.com>\n"
"Language-Team: Latvian (http://www.transifex.com/projects/p/torproject/"
@@ -308,34 +308,34 @@ msgstr ""
"Pirms sākat šo programmu, pārliecinieties, ka tiek izvērsta visa tilpdatne "
"jeb zipfails liveusb-creator."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Nezināms laidiens: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Lejuplādē %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
msgstr ""
"Kļūda: Nav iespējams iegūt ierīces UUID vai piešķirt iezīmi. Nespēj turpināt."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Instalēšana pabeigta! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Instalēt Tails"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -346,38 +346,38 @@ msgstr ""
"cilni Savietojamība, atzīmējiet lodziņu \"Izpildīt programmu administratora "
"režīmā\"."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Instalēt Tails"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -385,11 +385,11 @@ msgstr ""
"&&\n"
"instalēt"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -397,35 +397,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "Atsvaidzinoši izlaidumi..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "Laidieni atjaunināti!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "Instalēšana ir pabeigta!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "Instalēšana ir pabeigta. Nospiediet Labi, lai aizvērtu programmu."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "Nespēj uzmontēt ierīci"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "Lūdzu, apstipriniet savu ierīces izvēli"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -434,7 +434,7 @@ msgstr ""
"Tūliņ Jūs instalēsit Tails uz %(size)s %(vendor)s %(model)s ierīces "
"(%(device)s). Uz izvēlētās ierīces pazudīs visi dati. Vai turpināt?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -445,19 +445,19 @@ msgstr ""
"(%(device)s). Uz šīs ierīces ikviens pastāvīgs sējums paliks nemainīts. Vai "
"turpināt?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Lejupielāde pabeigta!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Lejupielāde neizdevās: "
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Variet vēlreiz mēģināt atjaunot lejupielādi"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
@@ -465,7 +465,7 @@ msgstr ""
"Atlasīto datni nav iespējams lasīt. Lūdzu sakārtojiet atļaujas vai "
"izvēlieties citu datni. "
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -473,7 +473,7 @@ msgstr ""
"Nespēj lietot atlasīto datni. Iespējams, veiktos labāk, ja ISO tiktu "
"pārvietots uz diska sakni (proti, C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s izvēlēts"
@@ -511,72 +511,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "Noņem %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/ms.po b/po/ms.po
index 2387294..7f77494 100644
--- a/po/ms.po
+++ b/po/ms.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: liveusb-creator\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2008-09-21 22:31+0800\n"
"Last-Translator: Sharuzzaman Ahmat Raslan <sharuzzaman@myrealbox.com>\n"
"Language-Team: Malay <translation-team-ms@lists.sourceforge.net>\n"
@@ -286,78 +286,78 @@ msgid ""
"program."
msgstr ""
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, fuzzy, python-format
msgid "Unknown release: %s"
msgstr "/Nota kelua_ran"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, fuzzy, python-format
msgid "Downloading %s..."
msgstr "Memuatturun pakej `%s'..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
msgstr ""
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, fuzzy, python-format
msgid "Installation complete! (%s)"
msgstr "Muatturun Dipilih"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Muatturun Dipilih"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
"check the \"Run this program as an administrator\" box."
msgstr ""
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
msgid "Tails Installer"
msgstr ""
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr ""
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr ""
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
msgid "\"Clone & Install\""
msgstr ""
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -365,44 +365,44 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr ""
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr ""
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
#, fuzzy
msgid "Installation complete!"
msgstr "Muatturun Dipilih"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr ""
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
#, fuzzy
msgid "Unable to mount device"
msgstr "Tidak dapat melekapkan peranti: %s"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr ""
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
"(%(device)s). All data on the selected device will be lost. Continue?"
msgstr ""
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -410,33 +410,33 @@ msgid ""
"unchanged. Continue?"
msgstr ""
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
#, fuzzy
msgid "Download complete!"
msgstr "Muatturun Dipilih"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
#, fuzzy
msgid "Download failed: "
msgstr "Sambungan Gagal"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr ""
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
msgstr ""
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
msgstr ""
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, fuzzy, python-format
msgid "%(filename)s selected"
msgstr "Muatturun Dipilih"
@@ -474,72 +474,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr ""
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/nb.po b/po/nb.po
index f101901..2d10dff 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-02-14 09:01+0000\n"
"Last-Translator: John Henningsen <henningsen.teknikk@gmail.com>\n"
"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/"
@@ -305,34 +305,34 @@ msgstr ""
"Sørg for å pakke ut hele \"liveusb-creator\" zip-filen før du kjører dette "
"programmet."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Ukjent versjon: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Laster ned %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
msgstr ""
"Feil: Kan ikke sette etikett eller få UUID fra enheten. Kan ikke fortsette."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Installasjonen er fullført! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Installer Tails"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -342,38 +342,38 @@ msgstr ""
"høyreklikker du på ikonet og åpner Egenskaper. Under kompatibilitets fanen, "
"kryss av i boksen for \"Kjør dette programmet som administrator\"."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Installer Tails"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -381,11 +381,11 @@ msgstr ""
"&&\n"
"Installere"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -393,35 +393,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "Oppdaterer utgivelser..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "Utgivelser oppdatert!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "Installasjonen er fullført!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "Installasjonen er ferdig. Klikk OK for å lukke dette programmet."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "Klarer ikke å laste enhet"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "Vennligst bekreft ditt valg av enhet"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -430,7 +430,7 @@ msgstr ""
"Du er i ferd med å installere Tails på enheten %(size)s %(vendor)s %(model)s "
"(%(device)s). All data på den valgte enheten vil gå tapt. Vil du fortsette?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -441,19 +441,19 @@ msgstr ""
"%(model)s (%(device)s). Eventuell vedvarende lagring på enheten vil forbli "
"uforandret. Vil du fortsette? "
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Nedlasting fullført!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Nedlasting feilet: "
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Du kan prøve igjen for å gjenoppta din nedlasting"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
@@ -461,7 +461,7 @@ msgstr ""
"Den valgte filen er uleselig. Vennligst sørg for at du har de nødvendige "
"rettighetene eller velg en annen fil."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -469,7 +469,7 @@ msgstr ""
"Kunne ikke bruke den angitte filen. Du kan være heldigere hvis du flytter "
"ISOen din til root (f.eks: C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s valgt"
@@ -507,72 +507,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "Fjerner %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/nds.po b/po/nds.po
index 1ea8065..37462d1 100644
--- a/po/nds.po
+++ b/po/nds.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: liveusb-creator\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2010-12-03 13:56+0100\n"
"Last-Translator: Nils-Christoph Fiedler <ncfiedler@gnome.org>\n"
"Language-Team: Fedora Low German <nds-lowgerman@lists.sourceforge.net>\n"
@@ -307,17 +307,17 @@ msgstr ""
"Künn '%s' nich finnen. Stell seker, dat dat heele liveusb-creator Zip-Archiv "
"entpackt is, bevor je dat Programm utföhrst."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Unbekannte Verschoon: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Daalladen %s ..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -325,62 +325,62 @@ msgstr ""
"Fehler: Künn de Beschriften nich setten or de UUID vum Lööpwark kregen. Künn "
"nich wietermaken."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, fuzzy, python-format
msgid "Installation complete! (%s)"
msgstr "Daalladen avsluten!"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Daalladen avsluten!"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
"check the \"Run this program as an administrator\" box."
msgstr ""
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
msgid "Tails Installer"
msgstr ""
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr ""
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr ""
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
msgid "\"Clone & Install\""
msgstr ""
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -388,43 +388,43 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr ""
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr ""
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
#, fuzzy
msgid "Installation complete!"
msgstr "Daalladen avsluten!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr ""
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "Kann Gerät nicht einhängen"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr ""
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
"(%(device)s). All data on the selected device will be lost. Continue?"
msgstr ""
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -432,27 +432,27 @@ msgid ""
"unchanged. Continue?"
msgstr ""
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Daalladen avsluten!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Daalladen ging in'n dutt:"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr ""
"Je künn versöken, dat Daalladen nohmal to starten un hoopen, dat dat an de "
"glieke Stelle wietergeiht."
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
msgstr ""
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
#, fuzzy
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
@@ -462,7 +462,7 @@ msgstr ""
"Glück, wenn je dat ISO-Avbill in dat Stammverteeknis vun die'm Lööpwark "
"verschuvst (t. B.: C:\\)."
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, fuzzy, python-format
msgid "%(filename)s selected"
msgstr "ISO-Datei utwählt: %s"
@@ -500,72 +500,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr ""
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/nl.po b/po/nl.po
index 0c82561..0b1f319 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -17,7 +17,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-02-14 09:01+0000\n"
"Last-Translator: Tonko Mulder <tonko@tonkomulder.nl>\n"
"Language-Team: Dutch (http://www.transifex.com/projects/p/torproject/"
@@ -320,17 +320,17 @@ msgstr ""
"Wees er zeker van dat het hele liveusb-creator zip bestand is uitgepakt "
"voordat je dit programma uitvoert."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Onbekende release: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "%s downloaden..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -338,17 +338,17 @@ msgstr ""
"Fout: Kan het label niet zetten of de UUID van jouw apparaat niet "
"verkrijgen. Kan niet verder gaan."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Installatie afgerond! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Installeer Tails"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -359,38 +359,38 @@ msgstr ""
"Compatibiliteit tab, check het \"Start dit programma als beheerder\" "
"selectievakje."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Installeer Tails"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -398,11 +398,11 @@ msgstr ""
"&&\n"
"Installeer"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -410,35 +410,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "Bezig met vernieuwen van releases..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "Releases zijn bijgewerkt!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "Installatie afgerond!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "Installatie is afgerond. Klik op OK om dit programma af te sluiten."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "Kan apparaat niet aankoppelen"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "Bevestig uw apparaatselectie"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -448,7 +448,7 @@ msgstr ""
"(%(device)s). Alle data op het geselecteerde apparaat zal verloren gaan. "
"Doorgaan?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -459,19 +459,19 @@ msgstr ""
"(%(device)s). Alle persistente volumes op dit apparaat zullen onveranderd "
"blijven. Doorgaan?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Download voltooid!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Download mislukt: "
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Je kunt opnieuw proberen je download voort te zetten"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
@@ -479,7 +479,7 @@ msgstr ""
"Het geselecteerde bestand is onleesbaar. Herstel de rechten of selecteer een "
"ander bestand."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -487,7 +487,7 @@ msgstr ""
"Kan geselecteerd bestand niet gebruiken. Je kunt meer geluk hebben als je "
"jouw ISO verplaatst naar het hoogste niveau van jouw schijf (bijv.: C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s geselecteerd"
@@ -525,72 +525,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "%(file)s verwijderen"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/pa.po b/po/pa.po
index 40c0599..86208a1 100644
--- a/po/pa.po
+++ b/po/pa.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2011-01-12 16:04+0530\n"
"Last-Translator: Jaswinder Singh <j.phulewala@gmail.com>\n"
"Language-Team: PLTG\n"
@@ -302,17 +302,17 @@ msgstr ""
"'%s' ਨੂੰ ਲੱਭ ਨਹੀਂ ਸਕਿਆ। ਪੂਰੀ liveusb-creator zip ਫਾਇਲ ਨੂੰ ਇਹ ਪਰੋਗਰਾਮ ਚਲਾਉਣ ਤੋਂ ਪਹਿਲਾਂ "
"ਖੋਲਣਾ ਨਾ ਭੁੱਲੋ।"
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "ਅਣਜਾਣ ਰੀਲਿਜ਼: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "%s ਡਾਊਨਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -320,62 +320,62 @@ msgstr ""
"ਗਲਤੀ: ਲੇਬਲ ਸੈੱਟ ਨਹੀਂ ਕਰ ਸਕਿਆ ਜਾਂ ਤੁਹਾਡੇ ਜੰਤਰ ਦਾ UUID ਪ੍ਰਾਪਤ ਨਹੀਂ ਕਰ ਸਕਦਾ। ਜਾਰੀ ਕਰਨ ਤੋਂ "
"ਅਸਫਲ।"
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, fuzzy, python-format
msgid "Installation complete! (%s)"
msgstr "ਡਾਊਨਲੋਡ ਮੁਕੰਮਲ!"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "ਡਾਊਨਲੋਡ ਮੁਕੰਮਲ!"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
"check the \"Run this program as an administrator\" box."
msgstr ""
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
msgid "Tails Installer"
msgstr ""
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr ""
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr ""
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
msgid "\"Clone & Install\""
msgstr ""
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -383,44 +383,44 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr ""
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr ""
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
#, fuzzy
msgid "Installation complete!"
msgstr "ਡਾਊਨਲੋਡ ਮੁਕੰਮਲ!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr ""
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
#, fuzzy
msgid "Unable to mount device"
msgstr "ਜੰਤਰ ਮਾਊਂਟ ਕਰਨ ਲਈ ਅਸਮਰੱਥ: %s"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr ""
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
"(%(device)s). All data on the selected device will be lost. Continue?"
msgstr ""
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -428,25 +428,25 @@ msgid ""
"unchanged. Continue?"
msgstr ""
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "ਡਾਊਨਲੋਡ ਮੁਕੰਮਲ!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "ਡਾਊਨਲੋਡ ਫੇਲ੍ਹ: "
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "ਤੁਸੀਂ ਆਪਣੇ ਡਾਊਨਲੋਡ ਮੁੜ ਚਾਲੂ (ਰੀਜਿਊਮ) ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਸਕਦੇ ਹੋ"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
msgstr ""
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
#, fuzzy
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
@@ -456,7 +456,7 @@ msgstr ""
"ਕਿਸਮਤ ਚੰਗੀ ਹੋ ਸਕਦੀ ਹੈ ਜੇ ਤੁਸੀਂ ਆਪਣੇ ISO ਨੂੰ ਆਪਣੀ ਡਰਾਈਵ ਦੇ ਰੂਟ(root) ਵਿੱਚ ਲੇ ਜਾਓ (ਜਿਵੇਂ: C:"
"\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, fuzzy, python-format
msgid "%(filename)s selected"
msgstr "ISO ਚੁਣਿਆ: %s"
@@ -494,72 +494,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr ""
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/pl.po b/po/pl.po
index dbd6200..ccb3671 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-02-14 09:01+0000\n"
"Last-Translator: Adam Stachowicz <saibamenppl@gmail.com>\n"
"Language-Team: Polish (http://www.transifex.com/projects/p/torproject/"
@@ -316,17 +316,17 @@ msgstr ""
"Proszę upewnić się, że rozpakowano cały plik ZIP liveusb-creator przed "
"uruchomieniem tego programu."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Nieznane wydanie: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Pobieranie %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -334,17 +334,17 @@ msgstr ""
"Błąd: Nie można ustawić etykiety lub uzyskać UUID urządzenia. Nie można "
"kontynuować."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Zakończono instalację! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Zainstaluj Tails"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -355,38 +355,38 @@ msgstr ""
"Właściwości. W karcie Zgodność należy zaznaczyć pole wyboru \"Uruchom ten "
"program jako administrator\"."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Zainstaluj Tails"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -394,11 +394,11 @@ msgstr ""
"&&\n"
"Instaluj"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -406,35 +406,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "Odświeżanie wersji..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "Wersje zaktualizowane!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "Zakończono instalację!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "Zakończono instalację. Naciśnij OK aby zamknąć ten program."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "Nie można zamontować urządzenia"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "Proszę potwierdzić wybór urządzenia"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -443,7 +443,7 @@ msgstr ""
"Zamierzasz zainstalować Tails na %(size)s %(vendor)s %(model)s urządzenie "
"(%(device)s). Wszystkie dane na tym nośniku zostaną utracone. Kontynuować?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -454,19 +454,19 @@ msgstr ""
"urządzenie (%(device)s). Objętość tego urządzenia pozostanie niezmieniona. "
"Kontynuować?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Pobieranie ukończone!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Pobieranie nie powiodło się: "
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Możesz spróbować ponownie, aby wznowić pobieranie"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
@@ -474,7 +474,7 @@ msgstr ""
"Nie można odczytać wybranego pliku. Proszę poprawić prawa dostępu do niego "
"lub wybrać inny plik."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -482,7 +482,7 @@ msgstr ""
"Nie można użyć wybranego pliku. Łatwiej będzie po przeniesieniu pliku ISO "
"do głównego katalogu napędu (np. C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "Wybrano %(filename)s"
@@ -520,72 +520,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "Usuwanie %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/pt.po b/po/pt.po
index 3c74284..142409e 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-02-14 09:01+0000\n"
"Last-Translator: Pedro Albuquerque <palbuquerque73@gmail.com>\n"
"Language-Team: Portuguese (http://www.transifex.com/projects/p/torproject/"
@@ -317,17 +317,17 @@ msgstr ""
"Certifique-se que extrai todo o ficheiro zip liveusb-creator antes de "
"executar este programa."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Lançamento desconhecido: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "A transferir %s ..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -335,17 +335,17 @@ msgstr ""
"Erro: Não é possível definir o nome ou obter o UUID do seu dispositivo. Não "
"é possível continuar."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Instalação completa! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Instalar o Tails"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -355,38 +355,38 @@ msgstr ""
"o fazer, clique direito no rato sob o ícone e abra as Propriedades. No "
"separador Compatibilidade, selecione \"Executar como um Administrador\"."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Instalar o Tails"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -394,11 +394,11 @@ msgstr ""
"&e\n"
"Instalar"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -406,36 +406,36 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "A atualizar os lançamentos ..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "Lançamentos atualizados!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "Instalação completa!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr ""
"A instalação terminou. Clique em \"CONFIRMAR\" para fechar este programa."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "Não é possível montar o dispositivo"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "Por favor, confirme a sua seleção do dispositivo"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -445,7 +445,7 @@ msgstr ""
"(%(device)s). Toda a informação do dispositivo selecionado será perdida. "
"Deseja continuar?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -456,19 +456,19 @@ msgstr ""
"%(vendor)s %(model)s (%(device)s). Qualquer volume persistente permanecerá "
"inalterado. Deseja continuar?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Transferência completa!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "A transferência falhou:"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Pode tentar de novo para retomar a sua transferência"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
@@ -476,7 +476,7 @@ msgstr ""
"O ficheiro seleccionado é ilegível. Por favor, corrija as permissões ou "
"seleccione outro ficheiro."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -484,7 +484,7 @@ msgstr ""
"Não é possível utilizar o ficheiro selecionado. É capaz de ter mais sorte se "
"mover o seu ficheiro ISO para a raiz da sua unidade (ex.: C:\\)."
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s selecionado"
@@ -522,72 +522,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "A remover %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/pt_BR.po b/po/pt_BR.po
index ffb89e7..e7a6465 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -23,7 +23,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-06-11 22:58+0000\n"
"Last-Translator: Communia <ameaneantie@riseup.net>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/"
@@ -330,17 +330,17 @@ msgstr ""
"Tenha certeza de ter extraído todos os arquivos .zip do liveusb-creator "
"antes de executar este programa."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Versão desconhecida: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Fazendo download %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -348,17 +348,17 @@ msgstr ""
"Erro: não foi possível definir o rótulo ou obter o UUID (Universal Unique "
"identifier) do seu dispositivo. Impossível continuar."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Instalação concluída! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Instalar Tails"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -369,38 +369,38 @@ msgstr ""
"janela Compatibilidade, marque a opção \"Executar este programa como "
"Administrador\"."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Instalar Tails"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -408,11 +408,11 @@ msgstr ""
"&&\n"
"Instalar"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -420,35 +420,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "Atualizando versões..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "Versões atualizadas!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "Instalação concluída!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "A instalação foi concluída. Clique em OK para fechar este programa."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "Não foi possível montar o dispositivo"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "Por favor, confirme a seleção do seu dispositivo"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -458,7 +458,7 @@ msgstr ""
"dispositivo (%(device)s). Todos os dados contidos no dispositivo selecionado "
"serão perdidos. Continuar?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -469,19 +469,19 @@ msgstr ""
"%(model)s dispositivo (%(device)s). Se houver volumes persistentes neste "
"dispositivo, eles permanecerão inalterados. Continuar?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Download concluído!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "O download falhou: "
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Você pode tentar recomeçar o download novamente"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
@@ -489,7 +489,7 @@ msgstr ""
"O arquivo selecionado não pode ser lido. Por favor, corrija suas permissões "
"ou selecione outro arquivo."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -498,7 +498,7 @@ msgstr ""
"sorte se mover a imagem ISO para a raiz do seu dispositivo (por exemplo, `C:"
"\\')"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s selecionado"
@@ -536,72 +536,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "Removendo %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/ro.po b/po/ro.po
index 8c9cfe9..53a82b6 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-02-14 09:01+0000\n"
"Last-Translator: Mariana Mazilu <mariana_mazi.lu@yahoo.com>\n"
"Language-Team: Romanian (http://www.transifex.com/projects/p/torproject/"
@@ -308,17 +308,17 @@ msgstr ""
"Fiți sigur că ați extras tot fișierul liveusb-creator zip înainte de a rula "
"acest program."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Lansare necunoscută: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Descarc %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -326,17 +326,17 @@ msgstr ""
"Eroare: Nu pot seta eticheta sau obține UUID dispozitivului dumneavoastră. "
"Nu pot continua."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Instalare completă! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Instalez Tails"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -347,38 +347,38 @@ msgstr ""
"Proprietăți. Sub fila Compatibilitate, bifați căsuța \"Rulați acest program "
"ca administrator\"."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Instalez Tails"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -386,11 +386,11 @@ msgstr ""
"&&\n"
"Instalează"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -398,35 +398,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "Împrospătez versiunile..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "Versiuni actualizate!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "Instalare completa!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "Instalarea este completă. Apăsați OK pentru a închide acest program."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "Nu pot monta aparatul"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "Confirmați alegerea device"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -435,7 +435,7 @@ msgstr ""
"Veți instala Tails pe %(size)s %(vendor)s %(model)s device (%(device)s). "
"Toate datele pe deviceurile alese vor fi pierdute. Continui?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -446,25 +446,25 @@ msgstr ""
"(%(device)s). Orice volum persistent pe acest device va rămîne neschimbat. "
"Continui?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Descărcare completă!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Descărcare eșuată!"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Puteți să reîncercați să reporniți downloadul"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
msgstr "Fișierul ales nu poate fi citit. Corectați accesul sau alegeți altul."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -472,7 +472,7 @@ msgstr ""
"Nu pot folosi fișierul ales. Puteți avea mai mult noroc mutînd ISO în "
"folderul rădăcină (ex. C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s ales"
@@ -510,72 +510,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "Șterg %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/ru.po b/po/ru.po
index ebb7159..6ca0d50 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -19,7 +19,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-02-14 09:01+0000\n"
"Last-Translator: Vladimir.Serykh <Vladimir.Serykh@extenza-studio.ru>\n"
"Language-Team: Russian (http://www.transifex.com/projects/p/torproject/"
@@ -317,17 +317,17 @@ msgstr ""
"Обязательно распакуйте zip-файл liveusb-creator целиком перед запуском этой "
"программы"
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Неизвестный выпуск: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Загрузка %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -335,17 +335,17 @@ msgstr ""
"Ошибка: Не удалось установить метку или получить UUID вашего устройства. "
"Невозможно продолжить."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Установка завершена! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Установить Tails"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -356,38 +356,38 @@ msgstr ""
"Совместимость, поставьте галочку на \"Выполнять эту программу от имени "
"администратора\"."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Установить Tails"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -395,11 +395,11 @@ msgstr ""
"&&\n"
"Установить"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -407,35 +407,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "Обновление списка релизов..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "Список релизов обновлён!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "Установка завершена!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "Установка была завершена. Нажмите OK чтобы закрыть программу."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "Невозможно смонтировать устройство"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "Пожалуйста, подтвердите выбор устройства"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -444,7 +444,7 @@ msgstr ""
"Вы собираетесь установить Tails на устройство %(size)s %(vendor)s %(model)s "
"(%(device)s). Все данные будут потеряны. Продолжить?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -455,25 +455,25 @@ msgstr ""
"%(model)s (%(device)s). Постоянное хранилище на этом томе останется без "
"изменений. Продолжить?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Загрузка завершена!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Ошибка загрузки: "
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Вы можете попробовать продолжить загрузку"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
msgstr "Выбранный файл нечитабелен. Исправьте файл или выберите другой."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -481,7 +481,7 @@ msgstr ""
"Невозможно использовать указанный файл. Попробуйте переместить ISO в корень "
"диска (например C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s выбрано"
@@ -519,72 +519,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "Removing %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/si_LK.po b/po/si_LK.po
index 4bb115d..3603cf6 100644
--- a/po/si_LK.po
+++ b/po/si_LK.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2013-06-03 05:59+0000\n"
"Last-Translator: ganeshwaki <ganeshwaki@gmail.com>\n"
"Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/"
@@ -304,17 +304,17 @@ msgid ""
msgstr ""
"මුළු liveusb-creator zip ගොනුව උදෘත කිරීම ක්‍රමලේඛ්ය විචල්‍ය කිරීමට ප්‍රථම කිරීමට වග බලාගන්න."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "නොදන්නා දිගහැරුම: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "භාගත වෙමින්%s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -322,17 +322,17 @@ msgstr ""
"දෝෂය: ලේබලය සැකසීමට හෝ ඔබගේ උපකරණයේ UUID ලබාගැනීමට නොහැක. ඉදිරියට පවත්වා ගැනීමට "
"නොහැක ."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "ස්ථාපනය කිරීම සම්පුරණයි! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "ස්ථාපනය සම්පුර්ණය!"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -342,45 +342,45 @@ msgstr ""
"click on the icon and open the Properties. Under the Compatibility tab, "
"check the \"Run this program as an administrator\" box."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
msgid "Tails Installer"
msgstr ""
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr ""
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr ""
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
msgid "\"Clone & Install\""
msgstr ""
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -388,42 +388,42 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "දිගහැරුම් නැවත ප්‍රාණවත් කරමින්..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "දිගහැරුම් යාවත්කාලීන කර ඇත !"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "ස්ථාපනය සම්පුර්ණය!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "ස්ථාපනය සම්පුර්ණ විය. ok තදකර වැඩසටහන නිමකරන්න."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "උපකරණය මවුන්ට් කිරීමට නොහැක "
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr ""
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
"(%(device)s). All data on the selected device will be lost. Continue?"
msgstr ""
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -431,25 +431,25 @@ msgid ""
"unchanged. Continue?"
msgstr ""
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "භාගත කිරීම සාර්ථකයි!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "භාගත කිරීම අසාර්ථකයි!"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "නැවතත් ඔබගේ බාගත කිරීම ආරම්භ කිරීමට ඔබට උත්සාහ කල හැකිය "
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
msgstr "තෝරාගත් ගොනුව කියවිය නොහැක. කරුණාකර එහි අවසර සකස් කර හෝ වෙනත් ගොනුවක් තෝරාගන්න."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -457,7 +457,7 @@ msgstr ""
"තෝරාගත් ගොනුව භාවිතා කිරීමට නොහැක. ඔබේ ISO එක ධාවකයේ මූලය වෙත යැවීම වඩාත් සුදුසුය."
"(ie: C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s තෝරාගන්නා ලදී "
@@ -495,72 +495,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "ඉවත්කරමින් %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/sk.po b/po/sk.po
index 4c6e886..94a94d8 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-02-14 09:01+0000\n"
"Last-Translator: FooBar <thewired@riseup.net>\n"
"Language-Team: Slovak (http://www.transifex.com/projects/p/torproject/"
@@ -310,17 +310,17 @@ msgstr ""
"Uistite sa, že rozbalíte celý liveusb-creator súbor zip pred spustením tohto "
"programu."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Neznáme vydanie: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Sťahujem %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -328,17 +328,17 @@ msgstr ""
"Chyba: Nie je možné nastaviť menovka alebo získať UUID vašeho zariadenia. "
"Nie je možné pokračovať."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Inštalácia je dokončená! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Nainštalovať Tails"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -349,38 +349,38 @@ msgstr ""
"záložkou Kompatibilita označte políčko \"Spustiť tento program ako "
"administrátor\"."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Nainštalovať Tails"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -388,11 +388,11 @@ msgstr ""
"&&\n"
"nainštalovať"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -400,35 +400,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "Obnovujú sa vydania.."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "Vydania aktualizované!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "Inštalácia dokončená!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "Inštalácia bola dokončená. Stlačením OK zatvoríte tento program."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "Nie je možné pripojiť zariadenie"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "Prosíme potvrďte váš výber zariadenia"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -437,7 +437,7 @@ msgstr ""
"Idete inštalovať Tails na %(size)s %(vendor)s %(model)s zariadení "
"(%(device)s). Všetky dáta na vybranom zariadení budú stratené. Pokračovať?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -448,19 +448,19 @@ msgstr ""
"(%(device)s). Všetka trvalá kapacita na tomto zariadení bude zachovaná. "
"Pokračovať?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Sťahovanie dokončené!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Sťahovanie zlyhalo: "
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Môžete skúsiť znovu spustiť sťahovanie"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
@@ -468,7 +468,7 @@ msgstr ""
"Zvolený súbor je nečitateľný. Prosíme opravte jeho oprávnenia alebo si "
"zvoľte iný súbor."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -476,7 +476,7 @@ msgstr ""
"Nedá sa použiť vybraný súbor. Skúste presunúť ISO do Vášho koreňového "
"adresára (napr. C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s vybraný"
@@ -514,72 +514,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "Odoberám %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/sl_SI.po b/po/sl_SI.po
index 7e893a9..2cf0d44 100644
--- a/po/sl_SI.po
+++ b/po/sl_SI.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-02-14 09:01+0000\n"
"Last-Translator: Matija <matija@srebrni-galeb.si>\n"
"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/projects/p/"
@@ -306,17 +306,17 @@ msgstr ""
"Prepričajte se, da je izluščena celotna liveusb-creator zip datoteko, preden "
"poženete ta program."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Nepoznana izdaja: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Prenašanje %s"
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -324,17 +324,17 @@ msgstr ""
"Napaka: Ne morem nastaviti etiketo ali pridobiti UUID naprave. Nemogoče "
"nadaljevanje."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Namestitev končana! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Namesti Sledi"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -344,38 +344,38 @@ msgstr ""
"kliknite desno na ikono in odprite lastnosti. V tab-u združljivost označite "
"\" Zaženi kot Administrator\"."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Namesti Sledi"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -383,11 +383,11 @@ msgstr ""
"&&\n"
"Namesti"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -395,35 +395,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "Osveževanje izdaje..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "Izdaje posodobljene!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "Namestitev končana!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "Namestitev končana. Pritisnite VREDU za zapiranje programa"
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "Nemogoče priklopiti napravo"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "Prosim, potrdite izbiro naprave"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -432,7 +432,7 @@ msgstr ""
"Namestili boste Sledi na %(size)s %(vendor)s %(model)s napravo (%(device)s). "
"Vsi podatki na izbrani napravi bodo izgubljeni. Nadaljujem?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -443,19 +443,19 @@ msgstr ""
"(%(device)s). Noben trajni nosilec na tej napravi ne bo spremenjen. "
"Nadaljujem?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Prenos končan!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Neuspel prenos:"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Ponovno poskusite nadaljevati vaš prenos"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
@@ -463,7 +463,7 @@ msgstr ""
"Izbrana datoteka je nečitljiva. Popravite dovoljenje ali izberite drugo "
"datoteko."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -471,7 +471,7 @@ msgstr ""
"Nemogoče uporabiti izbrano datoteko. Več sreče boste imeli s premikom vaše "
"ISO v koren pogona (npr.: C:\\ )"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s izbrana"
@@ -509,72 +509,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "Odstranjevanje %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/sq.po b/po/sq.po
index 4cb12cc..e3b04f4 100644
--- a/po/sq.po
+++ b/po/sq.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-02-22 21:25+0000\n"
"Last-Translator: Bujar Tafili\n"
"Language-Team: Albanian (http://www.transifex.com/projects/p/torproject/"
@@ -310,17 +310,17 @@ msgstr ""
"Sigurohuni që ta nxirrni të gjithë skedarin zip krijues-liveusb, para se ta "
"ekzekutoni këtë program."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Version i panjohur: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Duke shkarkuar %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -328,17 +328,17 @@ msgstr ""
"Gabim: S'mund të vendoset etiketa ose të përftohet UUID-i i pajisjes tuaj. I "
"pamundur vazhdimi."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Instalimi u krye! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Instaloni Tails"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -349,38 +349,38 @@ msgstr ""
"Përputhshmëria, shenjoni kutizën \"Ekzekutojeni këtë program si administrator"
"\"."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Instaloni Tails"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -388,11 +388,11 @@ msgstr ""
"&&\n"
"Instaloni"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -400,35 +400,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "Duke rifreskuar versionet..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "Versionet u përditësuan!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "Instalimi u krye!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "Instalimi u krye. Shtypeni OK për ta mbyllur këtë program."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "S'mund të montohet pajisja"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "Ju lutemi konfirmoni përzgjedhjen e pajisjes tuaj"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -438,7 +438,7 @@ msgstr ""
"%(model)s. Të gjitha të dhënat në pajisjen e përzgjedhur do të humbasin. Të "
"vazhdojmë?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -449,19 +449,19 @@ msgstr ""
"%(vendor)s %(model)s. Çdo volum në këtë pajisje do të mbetet e pandryshuar. "
"Të vazhdojmë?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Shkarkimi u krye!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Shkarkimi dështoi:"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Mund të provoni sërish që ta rinisni shkarkimin tuaj."
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
@@ -469,7 +469,7 @@ msgstr ""
"Skedari i përzgjedhur është i palexueshëm. Ju lutemi ndreqini lejet e tij, "
"ose përzgjidhni një skedar tjetër."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -477,7 +477,7 @@ msgstr ""
"S'mund të përdoret skedari i përzgjedhur. Mund të jeni më me fat nëse e "
"lëvizni ISO-n tuaj, tek rrënja e diskut tuaj (psh: C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s e përzgjedhur"
@@ -515,72 +515,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "Largimi i %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/sr.po b/po/sr.po
index 79dd94e..c3234c7 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: liveusb-creator\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2009-03-20 21:34+0100\n"
"Last-Translator: Miloš Komarčević <kmilos@gmail.com>\n"
"Language-Team: Serbian (sr) <fedora-trans-sr@redhat.com>\n"
@@ -305,17 +305,17 @@ msgstr ""
"Не могу да нађем „%s“. Побрините се да отпакујете liveusb-creator zip "
"датотеку у целости пре покретања овог програма."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Непознато издање %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Преузимам %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -323,62 +323,62 @@ msgstr ""
"Грешка: не могу да поставим ознаку или добавим UUID уређаја. У немогућности "
"да наставим даље."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, fuzzy, python-format
msgid "Installation complete! (%s)"
msgstr "Преузимање завршено!"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Преузимање завршено!"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
"check the \"Run this program as an administrator\" box."
msgstr ""
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
msgid "Tails Installer"
msgstr ""
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr ""
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr ""
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
msgid "\"Clone & Install\""
msgstr ""
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -386,44 +386,44 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr ""
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr ""
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
#, fuzzy
msgid "Installation complete!"
msgstr "Преузимање завршено!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr ""
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
#, fuzzy
msgid "Unable to mount device"
msgstr "У немогућности да монтирам уређај: %s"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr ""
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
"(%(device)s). All data on the selected device will be lost. Continue?"
msgstr ""
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -431,25 +431,25 @@ msgid ""
"unchanged. Continue?"
msgstr ""
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Преузимање завршено!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Преузимање је неуспешно:"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Можете покушати опет да наставите ваше преузимање"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
msgstr ""
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
#, fuzzy
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
@@ -459,7 +459,7 @@ msgstr ""
"ЦД-а. Можда ћете имати више среће уколико преместите ваш ISO у корени "
"директоријум вашег уређаја (нпр. C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, fuzzy, python-format
msgid "%(filename)s selected"
msgstr "ISO је изабран: %s"
@@ -497,72 +497,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr ""
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/sr@latin.po b/po/sr@latin.po
index aea3a32..bc5ac34 100644
--- a/po/sr@latin.po
+++ b/po/sr@latin.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: liveusb-creator\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2009-03-20 21:34+0100\n"
"Last-Translator: Miloš Komarčević <kmilos@gmail.com>\n"
"Language-Team: Serbian (sr) <fedora-trans-sr@redhat.com>\n"
@@ -306,17 +306,17 @@ msgstr ""
"Ne mogu da nađem „%s“. Pobrinite se da otpakujete liveusb-creator zip "
"datoteku u celosti pre pokretanja ovog programa."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Nepoznato izdanje %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Preuzimam %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -324,62 +324,62 @@ msgstr ""
"Greška: ne mogu da postavim oznaku ili dobavim UUID uređaja. U nemogućnosti "
"da nastavim dalje."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, fuzzy, python-format
msgid "Installation complete! (%s)"
msgstr "Preuzimanje završeno!"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Preuzimanje završeno!"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
"check the \"Run this program as an administrator\" box."
msgstr ""
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
msgid "Tails Installer"
msgstr ""
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr ""
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr ""
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
msgid "\"Clone & Install\""
msgstr ""
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -387,44 +387,44 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr ""
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr ""
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
#, fuzzy
msgid "Installation complete!"
msgstr "Preuzimanje završeno!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr ""
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
#, fuzzy
msgid "Unable to mount device"
msgstr "U nemogućnosti da montiram uređaj: %s"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr ""
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
"(%(device)s). All data on the selected device will be lost. Continue?"
msgstr ""
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -432,25 +432,25 @@ msgid ""
"unchanged. Continue?"
msgstr ""
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Preuzimanje završeno!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Preuzimanje je neuspešno:"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Možete pokušati opet da nastavite vaše preuzimanje"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
msgstr ""
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
#, fuzzy
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
@@ -460,7 +460,7 @@ msgstr ""
"CD-a. Možda ćete imati više sreće ukoliko premestite vaš ISO u koreni "
"direktorijum vašeg uređaja (npr. C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, fuzzy, python-format
msgid "%(filename)s selected"
msgstr "ISO je izabran: %s"
@@ -498,72 +498,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr ""
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/sv.po b/po/sv.po
index 96c29e3..570ad48 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-02-14 09:01+0000\n"
"Last-Translator: Foorack <maxfaxalv@gmail.com>\n"
"Language-Team: Swedish (http://www.transifex.com/projects/p/torproject/"
@@ -308,17 +308,17 @@ msgstr ""
"Säkerställ att du packar upp hela liveusb-creator zip-filen innan du kör "
"detta program."
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Okänd utgåva: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Hämtar %s…"
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -326,17 +326,17 @@ msgstr ""
"Fel: Det går inte att sätta etiketten eller hämta UUID numret för din "
"enhet. Kan inte fortsätta."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Installationen är slutförd! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Installera Tails"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -346,38 +346,38 @@ msgstr ""
"högerklicka på ikonen och välj Egenskaper. Under kompatibilitets-fliken "
"markerar du rutan \"Kör detta program som administratör\"."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Installera Tails"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -385,11 +385,11 @@ msgstr ""
"&&\n"
"Installera"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -397,35 +397,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "Uppdaterar utgåvor..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "Utgåvor uppdaterade!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "Installationen slutförd!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "Installationen slutförd. Tryck OK för att stänga detta program."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "Kunde inte montera enheten"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "Bekräfta ditt val av enhet"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -435,7 +435,7 @@ msgstr ""
"(%(device)s). All data på den valda enheten kommer att gå förlorad. Vill du "
"fortsätta?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -446,19 +446,19 @@ msgstr ""
"%(model)s (%(device)s). Eventuell bestående lagring på den här enheten "
"kommer att behållas som den är. Vill du fortsätta?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Hämtning färdig!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Hämtning misslyckades: "
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Du kan försöka igen för att återuppta din hämtning"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
@@ -466,7 +466,7 @@ msgstr ""
"Den valda filen kan inte läsas. Var god rätta till rättigheterna eller välj "
"en annan fil."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -474,7 +474,7 @@ msgstr ""
"Kunde inte använda den valda filen. Det kanske fungerar bättre om du "
"flyttar din ISO till roten av din enhet (t.ex: C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s vald"
@@ -512,72 +512,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "Tar bort %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/tails-installer.pot b/po/tails-installer.pot
index b93244b..a10171b 100644
--- a/po/tails-installer.pot
+++ b/po/tails-installer.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -284,77 +284,77 @@ msgid ""
"program."
msgstr ""
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr ""
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr ""
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
msgstr ""
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr ""
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
msgid "Tails installation failed!"
msgstr ""
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
"check the \"Run this program as an administrator\" box."
msgstr ""
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
msgid "Tails Installer"
msgstr ""
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr ""
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr ""
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
msgid "\"Clone & Install\""
msgstr ""
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -362,42 +362,42 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr ""
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr ""
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr ""
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr ""
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr ""
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr ""
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
"(%(device)s). All data on the selected device will be lost. Continue?"
msgstr ""
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -405,31 +405,31 @@ msgid ""
"unchanged. Continue?"
msgstr ""
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr ""
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr ""
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr ""
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
msgstr ""
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
msgstr ""
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr ""
@@ -466,72 +466,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr ""
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/th.po b/po/th.po
index 46f5b58..67a3b20 100644
--- a/po/th.po
+++ b/po/th.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-02-20 12:21+0000\n"
"Last-Translator: Somchai Sirisakdipol <mishari@mishari.net>\n"
"Language-Team: Thai (http://www.transifex.com/projects/p/torproject/language/"
@@ -300,33 +300,33 @@ msgid ""
"program."
msgstr "กรุณาแตกไฟล์ซิป liveusb-creator ทั้งไฟล์ก่อนเรียกใช้โปรแกรมนี้"
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "ไม่ทราบรุ่น: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "กำลังดาวน์โหลด %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
msgstr "ผิดพลาด: ไม่สามารถกำหนดชื่อหรือหา UUID ของอุปกรณ์ของคุณ ไม่สามารถดำเนินการต่อได้"
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "การติดตั้งเสร็จสิ้น! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "ลง Tails"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -335,38 +335,38 @@ msgstr ""
"คำเตือน: เครื่องมือนี้จำเป็นที่จะทำงานโดยผู้ดูแลระบบ ปฏิบัติโดยคลิกขวาที่ไอคอนและเปิดคุณสมบัติ "
"อยู่ในแถบความเข้ากันได้, เลือกกล่อง \"ตรวจสอบการทำงานของโปรแกรมของผู้ดูแลระบบ\" "
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "ลง Tails"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -374,11 +374,11 @@ msgstr ""
"&&\n"
"ติดตั้ง"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -386,35 +386,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "กำลังรีเฟรชรุ่นต่างๆ..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "ปรับปรุงรุ่นต่างๆแล้ว!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "การติดตั้งเสร็จสิ้น!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "การติดตั้งเสร็จสิ้นแล้ว กด OK เพื่อปิดโปรแกรมนี้"
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "ไม่สามารถเมานต์อุปกรณ์"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "ยืนยันการเลือกอุปกรณ์"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -423,7 +423,7 @@ msgstr ""
"จะลง Tails บน %(size)s %(vendor)s %(model)s อุปกรณ์ (%(device)s) "
"ข้อมูลทั้งหมดในอุปกรณ์นี้จะหายไป ให้ดำเนินการหรือไม่?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -433,31 +433,31 @@ msgstr ""
"กำลังจะปรังปรุง Tails ใน %(parent_size)s %(vendor)s %(model)s อุปกรณ์ "
"(%(device)s) ข้อมูลถาวรในอุปกรณ์นี้จะไม่ถูกเปลี่ยน ให้ดำเนินการ?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "ดาวน์โหลดเสร็จสิ้น!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "ดาวน์โหลดล้มเหลว:"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "คุณสามารถลองอีกครั้งได้เพื่อดาวน์โหลดต่อ"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
msgstr "แฟ้มที่ถูกเลือกไม่สามารถอ่านได้ กรุณาแก้ไขสิทธิอนุญาตหรือเลือกแฟ้มอื่น"
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
msgstr "ไม่สามารถใช้แฟ้มที่เลือก อาจจะโชคดีกว่าถ้าย้าย ISO ไปไว้ที่รูตของไดรฟ์คุณ (ie: C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s ถูกเลือก"
@@ -495,72 +495,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "ถอดแฟ้มออก %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/uk.po b/po/uk.po
index 1fd0505..5aa26a1 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-03-20 23:00+0000\n"
"Last-Translator: LinuxChata\n"
"Language-Team: Ukrainian (http://www.transifex.com/projects/p/torproject/"
@@ -307,17 +307,17 @@ msgstr ""
"Обов'язково розпакуйте zip-файл liveusb-creator цілком перед запуском цієї "
"програми"
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "Невідомий випуск: %s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "Завантажується %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
@@ -325,17 +325,17 @@ msgstr ""
"Помилка: Не вдається встановити позначку чи отримати UUID вашого пристрою. "
"Неможливо продовжити."
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "Установка завершена! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "Встановити Tails"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -346,38 +346,38 @@ msgstr ""
"Сумісність поставте галочку на \"Виконувати цю програму від імені "
"адміністратора\"."
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "Встановити Tails"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -385,11 +385,11 @@ msgstr ""
"&&\n"
"Встановити"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -397,35 +397,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "Оновлення списку релізів..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "Список релізів оновлений"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "Установка завершена!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "Установка була завершена. Натисніть Гаразд, щоб закрити програму."
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "Не вдалося змонтувати пристрій"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "Будь-ласка, підтвердіть вибір пристрою"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -434,7 +434,7 @@ msgstr ""
"Ви збираєтеся встановити Tails на пристрій %(size)s %(vendor)s %(model)s "
"(%(device)s). Всі дані будуть втрачені. Продовжити?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -444,25 +444,25 @@ msgstr ""
"Ви збираєтеся оновити Tails на пристрої %(parent_size)s %(vendor)s %(model)s "
"(%(device)s). Постійне сховище на цьому томі залишиться без змін. Продовжити?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "Завантаження завершено!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "Помилка при завантаженні: "
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "Можете спробувати продовжити завантаження"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
msgstr "Вибраний файл не читається. Виправте файл або виберіть інший."
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -470,7 +470,7 @@ msgstr ""
"Неможливо використовувати вказаний файл. Спробуйте перемістити ISO в корінь "
"диска (наприклад, C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s обрано"
@@ -508,72 +508,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "Видалення %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/zh_CN.po b/po/zh_CN.po
index f9ff010..882e86e 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -16,7 +16,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-03-28 09:40+0000\n"
"Last-Translator: khi\n"
"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/"
@@ -303,33 +303,33 @@ msgid ""
"program."
msgstr "请确认您在使用本程序前,已经解压整个 liveusb-creator zip 文件。"
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "未知发行版:%s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "正在下载 %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
msgstr "错误:无法设定标签或获得你设备的UUID。 不能继续。"
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "安装完成! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "安装Tails"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -338,38 +338,38 @@ msgstr ""
"警告: 本工具需要以管理员权限运行。请右键单击本工具的快捷方式图标,在文件属性"
"的兼容性选项卡中的选中\"以管理员身份运行此程序\"。"
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "安装Tails"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -377,11 +377,11 @@ msgstr ""
"&&\n"
"安装"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -389,35 +389,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "刷新发布..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "发布已更新!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "安装完成!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "安装完成。点击 确认 关闭程序。"
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "无法挂载设备"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "请确认你的设备选项"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -426,7 +426,7 @@ msgstr ""
"您将在%(size)s %(vendor)s %(model)s 磁盘 (%(device)s)安装Tails。在您选择的磁"
"盘上的所有数据将会丢失。是否继续?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -436,31 +436,31 @@ msgstr ""
"您正在升级 %(parent_size)s %(vendor)s %(model)s 设备 (%(device)s) 上的Tails."
"任何在此磁盘上的固定卷将会保持不变。是否继续?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "下载完成!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "下载失败!"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "你可以重试续传你的下载"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
msgstr "选中文件不可读。请修改其许可或选择其他文件。"
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
msgstr "无法使用所选文件。您可以将文件移动到磁盘根目录后再试(例如 C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s 已选取"
@@ -498,72 +498,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "正在删除 %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/po/zh_TW.po b/po/zh_TW.po
index 631c6e5..93aa6e0 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -16,7 +16,7 @@ msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-11-19 17:07+0100\n"
+"POT-Creation-Date: 2015-11-29 19:21+0100\n"
"PO-Revision-Date: 2015-03-23 08:11+0000\n"
"Last-Translator: x4r <xatierlike@gmail.com>\n"
"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/"
@@ -303,33 +303,33 @@ msgid ""
"program."
msgstr "執行此程式前請先解壓縮整個 libusb-creator zip 檔案。"
-#: ../tails_installer/gui.py:73
+#: ../tails_installer/gui.py:69
#, python-format
msgid "Unknown release: %s"
msgstr "未知的發行版本:%s"
-#: ../tails_installer/gui.py:77
+#: ../tails_installer/gui.py:73
#, python-format
msgid "Downloading %s..."
msgstr "正在下載 %s..."
-#: ../tails_installer/gui.py:208
+#: ../tails_installer/gui.py:204
msgid ""
"Error: Cannot set the label or obtain the UUID of your device. Unable to "
"continue."
msgstr "錯誤:無法設定標籤或取得裝置的 UUID,無法繼續。"
-#: ../tails_installer/gui.py:257
+#: ../tails_installer/gui.py:253
#, python-format
msgid "Installation complete! (%s)"
msgstr "安裝完成! (%s)"
-#: ../tails_installer/gui.py:262
+#: ../tails_installer/gui.py:258
#, fuzzy
msgid "Tails installation failed!"
msgstr "安裝 Tails"
-#: ../tails_installer/gui.py:357
+#: ../tails_installer/gui.py:353
msgid ""
"Warning: This tool needs to be run as an Administrator. To do this, right "
"click on the icon and open the Properties. Under the Compatibility tab, "
@@ -338,38 +338,38 @@ msgstr ""
"警告:此工具需以系統管理員身分執行。請對圖示按滑鼠右鍵後點選內容,在相容性頁"
"籤下,勾選「以系統管理員身份執行此程式」方塊。"
-#: ../tails_installer/gui.py:369 ../tails_installer/launcher.py:31
+#: ../tails_installer/gui.py:365 ../tails_installer/launcher.py:31
#, fuzzy
msgid "Tails Installer"
msgstr "安裝 Tails"
-#: ../tails_installer/gui.py:444
+#: ../tails_installer/gui.py:440
msgid "No device suitable to install Tails could be found"
msgstr ""
-#: ../tails_installer/gui.py:446
+#: ../tails_installer/gui.py:442
#, python-format
msgid "Please plug a USB flash drive or SD card of at least %0.1f GB."
msgstr ""
-#: ../tails_installer/gui.py:478
+#: ../tails_installer/gui.py:474
#, python-format
msgid "%(size)s %(label)s"
msgstr "%(size)s %(label)s"
-#: ../tails_installer/gui.py:484
+#: ../tails_installer/gui.py:480
#, python-format
msgid "%(vendor)s %(model)s (%(details)s) - %(device)s"
msgstr "%(vendor)s %(model)s (%(details)s) - %(device)s"
-#: ../tails_installer/gui.py:492
+#: ../tails_installer/gui.py:488
#, python-format
msgid ""
"The device \"%(pretty_name)s\" is too small to install Tails (at least "
"%(size)s GB is required)."
msgstr ""
-#: ../tails_installer/gui.py:505
+#: ../tails_installer/gui.py:501
#, fuzzy
msgid "\"Clone & Install\""
msgstr ""
@@ -377,11 +377,11 @@ msgstr ""
"&&\n"
"安裝"
-#: ../tails_installer/gui.py:507
+#: ../tails_installer/gui.py:503
msgid "\"Install from ISO\""
msgstr ""
-#: ../tails_installer/gui.py:508
+#: ../tails_installer/gui.py:504
#, python-format
msgid ""
"It is impossible to upgrade the device %(pretty_name)s because it was not "
@@ -389,35 +389,35 @@ msgid ""
"Tails on this device."
msgstr ""
-#: ../tails_installer/gui.py:527
+#: ../tails_installer/gui.py:523
msgid "An error happened while installing Tails"
msgstr ""
-#: ../tails_installer/gui.py:539
+#: ../tails_installer/gui.py:535
msgid "Refreshing releases..."
msgstr "正在重新整理版本..."
-#: ../tails_installer/gui.py:544
+#: ../tails_installer/gui.py:540
msgid "Releases updated!"
msgstr "版本已更新!"
-#: ../tails_installer/gui.py:583
+#: ../tails_installer/gui.py:579
msgid "Installation complete!"
msgstr "安裝完成!"
-#: ../tails_installer/gui.py:584
+#: ../tails_installer/gui.py:580
msgid "Installation was completed. Press OK to close this program."
msgstr "安裝已完成,按下「確定」關閉此程式。"
-#: ../tails_installer/gui.py:630
+#: ../tails_installer/gui.py:626
msgid "Unable to mount device"
msgstr "無法掛接裝置"
-#: ../tails_installer/gui.py:637 ../tails_installer/gui.py:665
+#: ../tails_installer/gui.py:633 ../tails_installer/gui.py:661
msgid "Please confirm your device selection"
msgstr "請確認您的裝置選取"
-#: ../tails_installer/gui.py:638
+#: ../tails_installer/gui.py:634
#, python-format
msgid ""
"You are going to install Tails on the %(size)s %(vendor)s %(model)s device "
@@ -426,7 +426,7 @@ msgstr ""
"您即將安裝 Tails 在 %(size)s %(vendor)s %(model)s 裝置 (%(device)s)。所有在所"
"選裝置上的資料將會遺失。繼續嗎?"
-#: ../tails_installer/gui.py:655
+#: ../tails_installer/gui.py:651
#, python-format
msgid ""
"You are going to upgrade Tails on the %(parent_size)s %(vendor)s %(model)s "
@@ -436,25 +436,25 @@ msgstr ""
"您即將升級 Tails 在 %(parent_size)s %(vendor)s %(model)s 裝置 (%(device)s)。"
"在此裝置上的永久性磁碟區將保持不變。繼續嗎?"
-#: ../tails_installer/gui.py:711
+#: ../tails_installer/gui.py:707
msgid "Download complete!"
msgstr "下載完成!"
-#: ../tails_installer/gui.py:715
+#: ../tails_installer/gui.py:711
msgid "Download failed: "
msgstr "下載失敗:"
-#: ../tails_installer/gui.py:716
+#: ../tails_installer/gui.py:712
msgid "You can try again to resume your download"
msgstr "您可再次嘗試來繼續您的下載"
-#: ../tails_installer/gui.py:724
+#: ../tails_installer/gui.py:720
msgid ""
"The selected file is unreadable. Please fix its permissions or select "
"another file."
msgstr "所選檔案無法讀取。請修正其權限或選擇另一個檔案。"
-#: ../tails_installer/gui.py:730
+#: ../tails_installer/gui.py:726
msgid ""
"Unable to use the selected file. You may have better luck if you move your "
"ISO to the root of your drive (ie: C:\\)"
@@ -462,7 +462,7 @@ msgstr ""
"無法使用所選檔案,您可能會有更好的運氣,如果您將您的 ISO 移動到您的磁碟根目錄"
"下(例如:C:\\)"
-#: ../tails_installer/gui.py:736
+#: ../tails_installer/gui.py:732
#, python-format
msgid "%(filename)s selected"
msgstr "%(filename)s 已選"
@@ -500,72 +500,6 @@ msgstr ""
msgid "Skipping '%(filename)s'"
msgstr "移除 %(file)s"
-#: ../tails_installer/urlgrabber/grabber.py:693
-#: ../tails_installer/urlgrabber/grabber.py:1172
-#, python-format
-msgid "Bad URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:781
-#, python-format
-msgid "Illegal reget mode: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:906
-#, python-format
-msgid "Local file does not exist: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:909
-#, python-format
-msgid "Not a normal file: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:967
-#, python-format
-msgid "Exceeded limit (%i): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1150
-msgid "Byte range requested but range support unavailable"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1183
-#: ../tails_installer/urlgrabber/grabber.py:1262
-#, python-format
-msgid "Timeout: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1185
-#: ../tails_installer/urlgrabber/grabber.py:1264
-#, python-format
-msgid "IOError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1187
-#, python-format
-msgid "OSError: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1189
-#, python-format
-msgid "HTTP Exception (%s): %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1260
-#, python-format
-msgid "Socket Error: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/grabber.py:1332
-#, python-format
-msgid "Bad proxy URL: %s"
-msgstr ""
-
-#: ../tails_installer/urlgrabber/mirror.py:287
-msgid "No more mirrors to try."
-msgstr ""
-
#: ../tails_installer/utils.py:44
#, python-format
msgid ""
diff --git a/setup.py b/setup.py
index a8eb1fb..1f4a3f8 100755
--- a/setup.py
+++ b/setup.py
@@ -45,7 +45,7 @@ if sys.platform == 'win32':
setup(
name = 'tails-installer',
version = VERSION,
- packages = ['tails_installer', 'tails_installer/urlgrabber'],
+ packages = ['tails_installer'],
scripts = ['tails-installer'],
license = 'GNU General Public License (GPL)',
url = 'https://tails.boum.org/tails-installer',
diff --git a/tails_installer/gui.py b/tails_installer/gui.py
index 3183016..8c9c445 100755
--- a/tails_installer/gui.py
+++ b/tails_installer/gui.py
@@ -45,12 +45,8 @@ from tails_installer.source import RunningLiveSystemSource
from tails_installer.releases import releases, get_fedora_releases
from tails_installer.utils import _to_unicode, _format_bytes_in_gb, _get_datadir
from tails_installer.utils import is_running_from_tails
-if sys.platform == 'win32':
- from tails_installer.urlgrabber.grabber import URLGrabber, URLGrabError
- from tails_installer.urlgrabber.progress import BaseMeter
-else:
- from urlgrabber.grabber import URLGrabber, URLGrabError
- from urlgrabber.progress import BaseMeter
+from urlgrabber.grabber import URLGrabber, URLGrabError
+from urlgrabber.progress import BaseMeter
MAX_FAT16 = 2047
MAX_FAT32 = 3999
diff --git a/tails_installer/urlgrabber/__init__.py b/tails_installer/urlgrabber/__init__.py
deleted file mode 100644
index 5e6f8d3..0000000
--- a/tails_installer/urlgrabber/__init__.py
+++ /dev/null
@@ -1,53 +0,0 @@
-# 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 Library 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.
-
-# Copyright 2002-2006 Michael D. Stenner, Ryan Tomayko
-
-# $Id: __init__.py,v 1.19 2006/09/21 23:17:36 mstenner Exp $
-
-"""A high-level cross-protocol url-grabber.
-
-Using urlgrabber, data can be fetched in three basic ways:
-
- urlgrab(url) copy the file to the local filesystem
- urlopen(url) open the remote file and return a file object
- (like urllib2.urlopen)
- urlread(url) return the contents of the file as a string
-
-When using these functions (or methods), urlgrabber supports the
-following features:
-
- * identical behavior for http://, ftp://, and file:// urls
- * http keepalive - faster downloads of many files by using
- only a single connection
- * byte ranges - fetch only a portion of the file
- * reget - for a urlgrab, resume a partial download
- * progress meters - the ability to report download progress
- automatically, even when using urlopen!
- * throttling - restrict bandwidth usage
- * retries - automatically retry a download if it fails. The
- number of retries and failure types are configurable.
- * authenticated server access for http and ftp
- * proxy support - support for authenticated http and ftp proxies
- * mirror groups - treat a list of mirrors as a single source,
- automatically switching mirrors if there is a failure.
-"""
-
-__version__ = '3.0.0'
-__date__ = '2006/09/21'
-__author__ = 'Michael D. Stenner <mstenner@linux.duke.edu>, ' \
- 'Ryan Tomayko <rtomayko@naeblis.cx>'
-__url__ = 'http://linux.duke.edu/projects/urlgrabber/'
-
-from grabber import urlgrab, urlopen, urlread
diff --git a/tails_installer/urlgrabber/byterange.py b/tails_installer/urlgrabber/byterange.py
deleted file mode 100644
index e037562..0000000
--- a/tails_installer/urlgrabber/byterange.py
+++ /dev/null
@@ -1,465 +0,0 @@
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the
-# Free Software Foundation, Inc.,
-# 59 Temple Place, Suite 330,
-# Boston, MA 02111-1307 USA
-
-# This file is part of urlgrabber, a high-level cross-protocol url-grabber
-# Copyright 2002-2004 Michael D. Stenner, Ryan Tomayko
-
-# $Id: byterange.py,v 1.12 2006/07/20 20:15:58 mstenner Exp $
-
-import os
-import stat
-import urllib
-import urllib2
-import rfc822
-
-DEBUG = None
-
-try:
- from cStringIO import StringIO
-except ImportError, msg:
- from StringIO import StringIO
-
-class RangeError(IOError):
- """Error raised when an unsatisfiable range is requested."""
- pass
-
-class HTTPRangeHandler(urllib2.BaseHandler):
- """Handler that enables HTTP Range headers.
-
- This was extremely simple. The Range header is a HTTP feature to
- begin with so all this class does is tell urllib2 that the
- "206 Partial Content" reponse from the HTTP server is what we
- expected.
-
- Example:
- import urllib2
- import byterange
-
- range_handler = range.HTTPRangeHandler()
- opener = urllib2.build_opener(range_handler)
-
- # install it
- urllib2.install_opener(opener)
-
- # create Request and set Range header
- req = urllib2.Request('http://www.python.org/')
- req.header['Range'] = 'bytes=30-50'
- f = urllib2.urlopen(req)
- """
-
- def http_error_206(self, req, fp, code, msg, hdrs):
- # 206 Partial Content Response
- r = urllib.addinfourl(fp, hdrs, req.get_full_url())
- r.code = code
- r.msg = msg
- return r
-
- def http_error_416(self, req, fp, code, msg, hdrs):
- # HTTP's Range Not Satisfiable error
- raise RangeError('Requested Range Not Satisfiable')
-
-class HTTPSRangeHandler(HTTPRangeHandler):
- """ Range Header support for HTTPS. """
-
- def https_error_206(self, req, fp, code, msg, hdrs):
- return self.http_error_206(req, fp, code, msg, hdrs)
-
- def https_error_416(self, req, fp, code, msg, hdrs):
- self.https_error_416(req, fp, code, msg, hdrs)
-
-class RangeableFileObject:
- """File object wrapper to enable raw range handling.
- This was implemented primarilary for handling range
- specifications for file:// urls. This object effectively makes
- a file object look like it consists only of a range of bytes in
- the stream.
-
- Examples:
- # expose 10 bytes, starting at byte position 20, from
- # /etc/aliases.
- >>> fo = RangeableFileObject(file('/etc/passwd', 'r'), (20,30))
- # seek seeks within the range (to position 23 in this case)
- >>> fo.seek(3)
- # tell tells where your at _within the range_ (position 3 in
- # this case)
- >>> fo.tell()
- # read EOFs if an attempt is made to read past the last
- # byte in the range. the following will return only 7 bytes.
- >>> fo.read(30)
- """
-
- def __init__(self, fo, rangetup):
- """Create a RangeableFileObject.
- fo -- a file like object. only the read() method need be
- supported but supporting an optimized seek() is
- preferable.
- rangetup -- a (firstbyte,lastbyte) tuple specifying the range
- to work over.
- The file object provided is assumed to be at byte offset 0.
- """
- self.fo = fo
- (self.firstbyte, self.lastbyte) = range_tuple_normalize(rangetup)
- self.realpos = 0
- self._do_seek(self.firstbyte)
-
- def __getattr__(self, name):
- """This effectively allows us to wrap at the instance level.
- Any attribute not found in _this_ object will be searched for
- in self.fo. This includes methods."""
- if hasattr(self.fo, name):
- return getattr(self.fo, name)
- raise AttributeError, name
-
- def tell(self):
- """Return the position within the range.
- This is different from fo.seek in that position 0 is the
- first byte position of the range tuple. For example, if
- this object was created with a range tuple of (500,899),
- tell() will return 0 when at byte position 500 of the file.
- """
- return (self.realpos - self.firstbyte)
-
- def seek(self,offset,whence=0):
- """Seek within the byte range.
- Positioning is identical to that described under tell().
- """
- assert whence in (0, 1, 2)
- if whence == 0: # absolute seek
- realoffset = self.firstbyte + offset
- elif whence == 1: # relative seek
- realoffset = self.realpos + offset
- elif whence == 2: # absolute from end of file
- # XXX: are we raising the right Error here?
- raise IOError('seek from end of file not supported.')
-
- # do not allow seek past lastbyte in range
- if self.lastbyte and (realoffset >= self.lastbyte):
- realoffset = self.lastbyte
-
- self._do_seek(realoffset - self.realpos)
-
- def read(self, size=-1):
- """Read within the range.
- This method will limit the size read based on the range.
- """
- size = self._calc_read_size(size)
- rslt = self.fo.read(size)
- self.realpos += len(rslt)
- return rslt
-
- def readline(self, size=-1):
- """Read lines within the range.
- This method will limit the size read based on the range.
- """
- size = self._calc_read_size(size)
- rslt = self.fo.readline(size)
- self.realpos += len(rslt)
- return rslt
-
- def _calc_read_size(self, size):
- """Handles calculating the amount of data to read based on
- the range.
- """
- if self.lastbyte:
- if size > -1:
- if ((self.realpos + size) >= self.lastbyte):
- size = (self.lastbyte - self.realpos)
- else:
- size = (self.lastbyte - self.realpos)
- return size
-
- def _do_seek(self,offset):
- """Seek based on whether wrapped object supports seek().
- offset is relative to the current position (self.realpos).
- """
- assert offset >= 0
- if not hasattr(self.fo, 'seek'):
- self._poor_mans_seek(offset)
- else:
- self.fo.seek(self.realpos + offset)
- self.realpos+= offset
-
- def _poor_mans_seek(self,offset):
- """Seek by calling the wrapped file objects read() method.
- This is used for file like objects that do not have native
- seek support. The wrapped objects read() method is called
- to manually seek to the desired position.
- offset -- read this number of bytes from the wrapped
- file object.
- raise RangeError if we encounter EOF before reaching the
- specified offset.
- """
- pos = 0
- bufsize = 1024
- while pos < offset:
- if (pos + bufsize) > offset:
- bufsize = offset - pos
- buf = self.fo.read(bufsize)
- if len(buf) != bufsize:
- raise RangeError('Requested Range Not Satisfiable')
- pos+= bufsize
-
-class FileRangeHandler(urllib2.FileHandler):
- """FileHandler subclass that adds Range support.
- This class handles Range headers exactly like an HTTP
- server would.
- """
- def open_local_file(self, req):
- import mimetypes
- import mimetools
- host = req.get_host()
- file = req.get_selector()
- localfile = urllib.url2pathname(file)
- stats = os.stat(localfile)
- size = stats[stat.ST_SIZE]
- modified = rfc822.formatdate(stats[stat.ST_MTIME])
- mtype = mimetypes.guess_type(file)[0]
- if host:
- host, port = urllib.splitport(host)
- if port or socket.gethostbyname(host) not in self.get_names():
- raise urllib2.URLError('file not on local host')
- fo = open(localfile,'rb')
- brange = req.headers.get('Range',None)
- brange = range_header_to_tuple(brange)
- assert brange != ()
- if brange:
- (fb,lb) = brange
- if lb == '': lb = size
- if fb < 0 or fb > size or lb > size:
- raise RangeError('Requested Range Not Satisfiable')
- size = (lb - fb)
- fo = RangeableFileObject(fo, (fb,lb))
- headers = mimetools.Message(StringIO(
- 'Content-Type: %s\nContent-Length: %d\nLast-modified: %s\n' %
- (mtype or 'text/plain', size, modified)))
- return urllib.addinfourl(fo, headers, 'file:'+file)
-
-
-# FTP Range Support
-# Unfortunately, a large amount of base FTP code had to be copied
-# from urllib and urllib2 in order to insert the FTP REST command.
-# Code modifications for range support have been commented as
-# follows:
-# -- range support modifications start/end here
-
-from urllib import splitport, splituser, splitpasswd, splitattr, \
- unquote, addclosehook, addinfourl
-import ftplib
-import socket
-import sys
-import ftplib
-import mimetypes
-import mimetools
-
-class FTPRangeHandler(urllib2.FTPHandler):
- def ftp_open(self, req):
- host = req.get_host()
- if not host:
- raise IOError, ('ftp error', 'no host given')
- host, port = splitport(host)
- if port is None:
- port = ftplib.FTP_PORT
- else:
- port = int(port)
-
- # username/password handling
- user, host = splituser(host)
- if user:
- user, passwd = splitpasswd(user)
- else:
- passwd = None
- host = unquote(host)
- user = unquote(user or '')
- passwd = unquote(passwd or '')
-
- try:
- host = socket.gethostbyname(host)
- except socket.error, msg:
- raise urllib2.URLError(msg)
- path, attrs = splitattr(req.get_selector())
- dirs = path.split('/')
- dirs = map(unquote, dirs)
- dirs, file = dirs[:-1], dirs[-1]
- if dirs and not dirs[0]:
- dirs = dirs[1:]
- try:
- fw = self.connect_ftp(user, passwd, host, port, dirs)
- type = file and 'I' or 'D'
- for attr in attrs:
- attr, value = splitattr(attr)
- if attr.lower() == 'type' and \
- value in ('a', 'A', 'i', 'I', 'd', 'D'):
- type = value.upper()
-
- # -- range support modifications start here
- rest = None
- range_tup = range_header_to_tuple(req.headers.get('Range',None))
- assert range_tup != ()
- if range_tup:
- (fb,lb) = range_tup
- if fb > 0: rest = fb
- # -- range support modifications end here
-
- fp, retrlen = fw.retrfile(file, type, rest)
-
- # -- range support modifications start here
- if range_tup:
- (fb,lb) = range_tup
- if lb == '':
- if retrlen is None or retrlen == 0:
- raise RangeError('Requested Range Not Satisfiable due to unobtainable file length.')
- lb = retrlen
- retrlen = lb - fb
- if retrlen < 0:
- # beginning of range is larger than file
- raise RangeError('Requested Range Not Satisfiable')
- else:
- retrlen = lb - fb
- fp = RangeableFileObject(fp, (0,retrlen))
- # -- range support modifications end here
-
- headers = ""
- mtype = mimetypes.guess_type(req.get_full_url())[0]
- if mtype:
- headers += "Content-Type: %s\n" % mtype
- if retrlen is not None and retrlen >= 0:
- headers += "Content-Length: %d\n" % retrlen
- sf = StringIO(headers)
- headers = mimetools.Message(sf)
- return addinfourl(fp, headers, req.get_full_url())
- except ftplib.all_errors, msg:
- raise IOError, ('ftp error', msg), sys.exc_info()[2]
-
- def connect_ftp(self, user, passwd, host, port, dirs):
- fw = ftpwrapper(user, passwd, host, port, dirs)
- return fw
-
-class ftpwrapper(urllib.ftpwrapper):
- # range support note:
- # this ftpwrapper code is copied directly from
- # urllib. The only enhancement is to add the rest
- # argument and pass it on to ftp.ntransfercmd
- def retrfile(self, file, type, rest=None):
- self.endtransfer()
- if type in ('d', 'D'): cmd = 'TYPE A'; isdir = 1
- else: cmd = 'TYPE ' + type; isdir = 0
- try:
- self.ftp.voidcmd(cmd)
- except ftplib.all_errors:
- self.init()
- self.ftp.voidcmd(cmd)
- conn = None
- if file and not isdir:
- # Use nlst to see if the file exists at all
- try:
- self.ftp.nlst(file)
- except ftplib.error_perm, reason:
- raise IOError, ('ftp error', reason), sys.exc_info()[2]
- # Restore the transfer mode!
- self.ftp.voidcmd(cmd)
- # Try to retrieve as a file
- try:
- cmd = 'RETR ' + file
- conn = self.ftp.ntransfercmd(cmd, rest)
- except ftplib.error_perm, reason:
- if str(reason)[:3] == '501':
- # workaround for REST not supported error
- fp, retrlen = self.retrfile(file, type)
- fp = RangeableFileObject(fp, (rest,''))
- return (fp, retrlen)
- elif str(reason)[:3] != '550':
- raise IOError, ('ftp error', reason), sys.exc_info()[2]
- if not conn:
- # Set transfer mode to ASCII!
- self.ftp.voidcmd('TYPE A')
- # Try a directory listing
- if file: cmd = 'LIST ' + file
- else: cmd = 'LIST'
- conn = self.ftp.ntransfercmd(cmd)
- self.busy = 1
- # Pass back both a suitably decorated object and a retrieval length
- return (addclosehook(conn[0].makefile('rb'),
- self.endtransfer), conn[1])
-
-
-####################################################################
-# Range Tuple Functions
-# XXX: These range tuple functions might go better in a class.
-
-_rangere = None
-def range_header_to_tuple(range_header):
- """Get a (firstbyte,lastbyte) tuple from a Range header value.
-
- Range headers have the form "bytes=<firstbyte>-<lastbyte>". This
- function pulls the firstbyte and lastbyte values and returns
- a (firstbyte,lastbyte) tuple. If lastbyte is not specified in
- the header value, it is returned as an empty string in the
- tuple.
-
- Return None if range_header is None
- Return () if range_header does not conform to the range spec
- pattern.
-
- """
- global _rangere
- if range_header is None: return None
- if _rangere is None:
- import re
- _rangere = re.compile(r'^bytes=(\d{1,})-(\d*)')
- match = _rangere.match(range_header)
- if match:
- tup = range_tuple_normalize(match.group(1,2))
- if tup and tup[1]:
- tup = (tup[0],tup[1]+1)
- return tup
- return ()
-
-def range_tuple_to_header(range_tup):
- """Convert a range tuple to a Range header value.
- Return a string of the form "bytes=<firstbyte>-<lastbyte>" or None
- if no range is needed.
- """
- if range_tup is None: return None
- range_tup = range_tuple_normalize(range_tup)
- if range_tup:
- if range_tup[1]:
- range_tup = (range_tup[0],range_tup[1] - 1)
- return 'bytes=%s-%s' % range_tup
-
-def range_tuple_normalize(range_tup):
- """Normalize a (first_byte,last_byte) range tuple.
- Return a tuple whose first element is guaranteed to be an int
- and whose second element will be '' (meaning: the last byte) or
- an int. Finally, return None if the normalized tuple == (0,'')
- as that is equivelant to retrieving the entire file.
- """
- if range_tup is None: return None
- # handle first byte
- fb = range_tup[0]
- if fb in (None,''): fb = 0
- else: fb = int(fb)
- # handle last byte
- try: lb = range_tup[1]
- except IndexError: lb = ''
- else:
- if lb is None: lb = ''
- elif lb != '': lb = int(lb)
- # check if range is over the entire file
- if (fb,lb) == (0,''): return None
- # check that the range is valid
- if lb < fb: raise RangeError('Invalid byte range: %s-%s' % (fb,lb))
- return (fb,lb)
-
diff --git a/tails_installer/urlgrabber/grabber.py b/tails_installer/urlgrabber/grabber.py
deleted file mode 100644
index 8d396a6..0000000
--- a/tails_installer/urlgrabber/grabber.py
+++ /dev/null
@@ -1,1483 +0,0 @@
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the
-# Free Software Foundation, Inc.,
-# 59 Temple Place, Suite 330,
-# Boston, MA 02111-1307 USA
-
-# This file is part of urlgrabber, a high-level cross-protocol url-grabber
-# Copyright 2002-2004 Michael D. Stenner, Ryan Tomayko
-
-"""A high-level cross-protocol url-grabber.
-
-GENERAL ARGUMENTS (kwargs)
-
- Where possible, the module-level default is indicated, and legal
- values are provided.
-
- copy_local = 0 [0|1]
-
- ignored except for file:// urls, in which case it specifies
- whether urlgrab should still make a copy of the file, or simply
- point to the existing copy. The module level default for this
- option is 0.
-
- close_connection = 0 [0|1]
-
- tells URLGrabber to close the connection after a file has been
- transfered. This is ignored unless the download happens with the
- http keepalive handler (keepalive=1). Otherwise, the connection
- is left open for further use. The module level default for this
- option is 0 (keepalive connections will not be closed).
-
- keepalive = 1 [0|1]
-
- specifies whether keepalive should be used for HTTP/1.1 servers
- that support it. The module level default for this option is 1
- (keepalive is enabled).
-
- progress_obj = None
-
- a class instance that supports the following methods:
- po.start(filename, url, basename, length, text)
- # length will be None if unknown
- po.update(read) # read == bytes read so far
- po.end()
-
- text = None
-
- specifies an alternativ text item in the beginning of the progress
- bar line. If not given, the basename of the file is used.
-
- throttle = 1.0
-
- a number - if it's an int, it's the bytes/second throttle limit.
- If it's a float, it is first multiplied by bandwidth. If throttle
- == 0, throttling is disabled. If None, the module-level default
- (which can be set on default_grabber.throttle) is used. See
- BANDWIDTH THROTTLING for more information.
-
- timeout = None
-
- a positive float expressing the number of seconds to wait for socket
- operations. If the value is None or 0.0, socket operations will block
- forever. Setting this option causes urlgrabber to call the settimeout
- method on the Socket object used for the request. See the Python
- documentation on settimeout for more information.
- http://www.python.org/doc/current/lib/socket-objects.html
-
- bandwidth = 0
-
- the nominal max bandwidth in bytes/second. If throttle is a float
- and bandwidth == 0, throttling is disabled. If None, the
- module-level default (which can be set on
- default_grabber.bandwidth) is used. See BANDWIDTH THROTTLING for
- more information.
-
- range = None
-
- a tuple of the form (first_byte, last_byte) describing a byte
- range to retrieve. Either or both of the values may set to
- None. If first_byte is None, byte offset 0 is assumed. If
- last_byte is None, the last byte available is assumed. Note that
- the range specification is python-like in that (0,10) will yeild
- the first 10 bytes of the file.
-
- If set to None, no range will be used.
-
- reget = None [None|'simple'|'check_timestamp']
-
- whether to attempt to reget a partially-downloaded file. Reget
- only applies to .urlgrab and (obviously) only if there is a
- partially downloaded file. Reget has two modes:
-
- 'simple' -- the local file will always be trusted. If there
- are 100 bytes in the local file, then the download will always
- begin 100 bytes into the requested file.
-
- 'check_timestamp' -- the timestamp of the server file will be
- compared to the timestamp of the local file. ONLY if the
- local file is newer than or the same age as the server file
- will reget be used. If the server file is newer, or the
- timestamp is not returned, the entire file will be fetched.
-
- NOTE: urlgrabber can do very little to verify that the partial
- file on disk is identical to the beginning of the remote file.
- You may want to either employ a custom "checkfunc" or simply avoid
- using reget in situations where corruption is a concern.
-
- user_agent = 'urlgrabber/VERSION'
-
- a string, usually of the form 'AGENT/VERSION' that is provided to
- HTTP servers in the User-agent header. The module level default
- for this option is "urlgrabber/VERSION".
-
- http_headers = None
-
- a tuple of 2-tuples, each containing a header and value. These
- will be used for http and https requests only. For example, you
- can do
- http_headers = (('Pragma', 'no-cache'),)
-
- ftp_headers = None
-
- this is just like http_headers, but will be used for ftp requests.
-
- proxies = None
-
- a dictionary that maps protocol schemes to proxy hosts. For
- example, to use a proxy server on host "foo" port 3128 for http
- and https URLs:
- proxies={ 'http' : 'http://foo:3128', 'https' : 'http://foo:3128' }
- note that proxy authentication information may be provided using
- normal URL constructs:
- proxies={ 'http' : 'http://user:host@foo:3128' }
- Lastly, if proxies is None, the default environment settings will
- be used.
-
- prefix = None
-
- a url prefix that will be prepended to all requested urls. For
- example:
- g = URLGrabber(prefix='http://foo.com/mirror/')
- g.urlgrab('some/file.txt')
- ## this will fetch 'http://foo.com/mirror/some/file.txt'
- This option exists primarily to allow identical behavior to
- MirrorGroup (and derived) instances. Note: a '/' will be inserted
- if necessary, so you cannot specify a prefix that ends with a
- partial file or directory name.
-
- opener = None
-
- Overrides the default urllib2.OpenerDirector provided to urllib2
- when making requests. This option exists so that the urllib2
- handler chain may be customized. Note that the range, reget,
- proxy, and keepalive features require that custom handlers be
- provided to urllib2 in order to function properly. If an opener
- option is provided, no attempt is made by urlgrabber to ensure
- chain integrity. You are responsible for ensuring that any
- extension handlers are present if said features are required.
-
- data = None
-
- Only relevant for the HTTP family (and ignored for other
- protocols), this allows HTTP POSTs. When the data kwarg is
- present (and not None), an HTTP request will automatically become
- a POST rather than GET. This is done by direct passthrough to
- urllib2. If you use this, you may also want to set the
- 'Content-length' and 'Content-type' headers with the http_headers
- option. Note that python 2.2 handles the case of these
- badly and if you do not use the proper case (shown here), your
- values will be overridden with the defaults.
-
-
-RETRY RELATED ARGUMENTS
-
- retry = None
-
- the number of times to retry the grab before bailing. If this is
- zero, it will retry forever. This was intentional... really, it
- was :). If this value is not supplied or is supplied but is None
- retrying does not occur.
-
- retrycodes = [-1,2,4,5,6,7]
-
- a sequence of errorcodes (values of e.errno) for which it should
- retry. See the doc on URLGrabError for more details on this. You
- might consider modifying a copy of the default codes rather than
- building yours from scratch so that if the list is extended in the
- future (or one code is split into two) you can still enjoy the
- benefits of the default list. You can do that with something like
- this:
-
- retrycodes = urlgrabber.grabber.URLGrabberOptions().retrycodes
- if 12 not in retrycodes:
- retrycodes.append(12)
-
- checkfunc = None
-
- a function to do additional checks. This defaults to None, which
- means no additional checking. The function should simply return
- on a successful check. It should raise URLGrabError on an
- unsuccessful check. Raising of any other exception will be
- considered immediate failure and no retries will occur.
-
- If it raises URLGrabError, the error code will determine the retry
- behavior. Negative error numbers are reserved for use by these
- passed in functions, so you can use many negative numbers for
- different types of failure. By default, -1 results in a retry,
- but this can be customized with retrycodes.
-
- If you simply pass in a function, it will be given exactly one
- argument: a CallbackObject instance with the .url attribute
- defined and either .filename (for urlgrab) or .data (for urlread).
- For urlgrab, .filename is the name of the local file. For
- urlread, .data is the actual string data. If you need other
- arguments passed to the callback (program state of some sort), you
- can do so like this:
-
- checkfunc=(function, ('arg1', 2), {'kwarg': 3})
-
- if the downloaded file has filename /tmp/stuff, then this will
- result in this call (for urlgrab):
-
- function(obj, 'arg1', 2, kwarg=3)
- # obj.filename = '/tmp/stuff'
- # obj.url = 'http://foo.com/stuff'
-
- NOTE: both the "args" tuple and "kwargs" dict must be present if
- you use this syntax, but either (or both) can be empty.
-
- failure_callback = None
-
- The callback that gets called during retries when an attempt to
- fetch a file fails. The syntax for specifying the callback is
- identical to checkfunc, except for the attributes defined in the
- CallbackObject instance. The attributes for failure_callback are:
-
- exception = the raised exception
- url = the url we're trying to fetch
- tries = the number of tries so far (including this one)
- retry = the value of the retry option
-
- The callback is present primarily to inform the calling program of
- the failure, but if it raises an exception (including the one it's
- passed) that exception will NOT be caught and will therefore cause
- future retries to be aborted.
-
- The callback is called for EVERY failure, including the last one.
- On the last try, the callback can raise an alternate exception,
- but it cannot (without severe trickiness) prevent the exception
- from being raised.
-
- interrupt_callback = None
-
- This callback is called if KeyboardInterrupt is received at any
- point in the transfer. Basically, this callback can have three
- impacts on the fetch process based on the way it exits:
-
- 1) raise no exception: the current fetch will be aborted, but
- any further retries will still take place
-
- 2) raise a URLGrabError: if you're using a MirrorGroup, then
- this will prompt a failover to the next mirror according to
- the behavior of the MirrorGroup subclass. It is recommended
- that you raise URLGrabError with code 15, 'user abort'. If
- you are NOT using a MirrorGroup subclass, then this is the
- same as (3).
-
- 3) raise some other exception (such as KeyboardInterrupt), which
- will not be caught at either the grabber or mirror levels.
- That is, it will be raised up all the way to the caller.
-
- This callback is very similar to failure_callback. They are
- passed the same arguments, so you could use the same function for
- both.
-
- urlparser = URLParser()
-
- The URLParser class handles pre-processing of URLs, including
- auth-handling for user/pass encoded in http urls, file handing
- (that is, filenames not sent as a URL), and URL quoting. If you
- want to override any of this behavior, you can pass in a
- replacement instance. See also the 'quote' option.
-
- quote = None
-
- Whether or not to quote the path portion of a url.
- quote = 1 -> quote the URLs (they're not quoted yet)
- quote = 0 -> do not quote them (they're already quoted)
- quote = None -> guess what to do
-
- This option only affects proper urls like 'file:///etc/passwd'; it
- does not affect 'raw' filenames like '/etc/passwd'. The latter
- will always be quoted as they are converted to URLs. Also, only
- the path part of a url is quoted. If you need more fine-grained
- control, you should probably subclass URLParser and pass it in via
- the 'urlparser' option.
-
-BANDWIDTH THROTTLING
-
- urlgrabber supports throttling via two values: throttle and
- bandwidth Between the two, you can either specify and absolute
- throttle threshold or specify a theshold as a fraction of maximum
- available bandwidth.
-
- throttle is a number - if it's an int, it's the bytes/second
- throttle limit. If it's a float, it is first multiplied by
- bandwidth. If throttle == 0, throttling is disabled. If None, the
- module-level default (which can be set with set_throttle) is used.
-
- bandwidth is the nominal max bandwidth in bytes/second. If throttle
- is a float and bandwidth == 0, throttling is disabled. If None, the
- module-level default (which can be set with set_bandwidth) is used.
-
- THROTTLING EXAMPLES:
-
- Lets say you have a 100 Mbps connection. This is (about) 10^8 bits
- per second, or 12,500,000 Bytes per second. You have a number of
- throttling options:
-
- *) set_bandwidth(12500000); set_throttle(0.5) # throttle is a float
-
- This will limit urlgrab to use half of your available bandwidth.
-
- *) set_throttle(6250000) # throttle is an int
-
- This will also limit urlgrab to use half of your available
- bandwidth, regardless of what bandwidth is set to.
-
- *) set_throttle(6250000); set_throttle(1.0) # float
-
- Use half your bandwidth
-
- *) set_throttle(6250000); set_throttle(2.0) # float
-
- Use up to 12,500,000 Bytes per second (your nominal max bandwidth)
-
- *) set_throttle(6250000); set_throttle(0) # throttle = 0
-
- Disable throttling - this is more efficient than a very large
- throttle setting.
-
- *) set_throttle(0); set_throttle(1.0) # throttle is float, bandwidth = 0
-
- Disable throttling - this is the default when the module is loaded.
-
- SUGGESTED AUTHOR IMPLEMENTATION (THROTTLING)
-
- While this is flexible, it's not extremely obvious to the user. I
- suggest you implement a float throttle as a percent to make the
- distinction between absolute and relative throttling very explicit.
-
- Also, you may want to convert the units to something more convenient
- than bytes/second, such as kbps or kB/s, etc.
-
-"""
-
-# $Id: grabber.py,v 1.47 2006/07/20 20:15:58 mstenner Exp $
-
-import os
-import os.path
-import sys
-import urlparse
-import rfc822
-import time
-import types
-import string
-import urllib
-import urllib2
-from stat import * # S_* and ST_*
-
-########################################################################
-# MODULE INITIALIZATION
-########################################################################
-try:
- exec('from ' + (__name__.split('.'))[0] + ' import __version__')
-except:
- __version__ = '???'
-
-auth_handler = urllib2.HTTPBasicAuthHandler( \
- urllib2.HTTPPasswordMgrWithDefaultRealm())
-
-try:
- from i18n import _
-except ImportError, msg:
- def _(st): return st
-
-try:
- from httplib import HTTPException
-except ImportError, msg:
- HTTPException = None
-
-try:
- # This is a convenient way to make keepalive optional.
- # Just rename the module so it can't be imported.
- import keepalive
- from keepalive import HTTPHandler, HTTPSHandler
-except ImportError, msg:
- keepalive_handlers = ()
-else:
- keepalive_handlers = (HTTPHandler(), HTTPSHandler())
-
-try:
- # add in range support conditionally too
- import byterange
- from byterange import HTTPRangeHandler, HTTPSRangeHandler, \
- FileRangeHandler, FTPRangeHandler, range_tuple_normalize, \
- range_tuple_to_header, RangeError
-except ImportError, msg:
- range_handlers = ()
- RangeError = None
- have_range = 0
-else:
- range_handlers = (HTTPRangeHandler(), HTTPSRangeHandler(),
- FileRangeHandler(), FTPRangeHandler())
- have_range = 1
-
-
-# check whether socket timeout support is available (Python >= 2.3)
-import socket
-try:
- TimeoutError = socket.timeout
- have_socket_timeout = True
-except AttributeError:
- TimeoutError = None
- have_socket_timeout = False
-
-########################################################################
-# functions for debugging output. These functions are here because they
-# are also part of the module initialization.
-DEBUG = None
-def set_logger(DBOBJ):
- """Set the DEBUG object. This is called by _init_default_logger when
- the environment variable URLGRABBER_DEBUG is set, but can also be
- called by a calling program. Basically, if the calling program uses
- the logging module and would like to incorporate urlgrabber logging,
- then it can do so this way. It's probably not necessary as most
- internal logging is only for debugging purposes.
-
- The passed-in object should be a logging.Logger instance. It will
- be pushed into the keepalive and byterange modules if they're
- being used. The mirror module pulls this object in on import, so
- you will need to manually push into it. In fact, you may find it
- tidier to simply push your logging object (or objects) into each
- of these modules independently.
- """
-
- global DEBUG
- DEBUG = DBOBJ
- if keepalive_handlers and keepalive.DEBUG is None:
- keepalive.DEBUG = DBOBJ
- if have_range and byterange.DEBUG is None:
- byterange.DEBUG = DBOBJ
-
-def _init_default_logger():
- '''Examines the environment variable URLGRABBER_DEBUG and creates
- a logging object (logging.logger) based on the contents. It takes
- the form
-
- URLGRABBER_DEBUG=level,filename
-
- where "level" can be either an integer or a log level from the
- logging module (DEBUG, INFO, etc). If the integer is zero or
- less, logging will be disabled. Filename is the filename where
- logs will be sent. If it is "-", then stdout will be used. If
- the filename is empty or missing, stderr will be used. If the
- variable cannot be processed or the logging module cannot be
- imported (python < 2.3) then logging will be disabled. Here are
- some examples:
-
- URLGRABBER_DEBUG=1,debug.txt # log everything to debug.txt
- URLGRABBER_DEBUG=WARNING,- # log warning and higher to stdout
- URLGRABBER_DEBUG=INFO # log info and higher to stderr
-
- This funtion is called during module initialization. It is not
- intended to be called from outside. The only reason it is a
- function at all is to keep the module-level namespace tidy and to
- collect the code into a nice block.'''
-
- try:
- dbinfo = os.environ['URLGRABBER_DEBUG'].split(',')
- import logging
- level = logging._levelNames.get(dbinfo[0], int(dbinfo[0]))
- if level < 1: raise ValueError()
-
- formatter = logging.Formatter('%(asctime)s %(message)s')
- if len(dbinfo) > 1: filename = dbinfo[1]
- else: filename = ''
- if filename == '': handler = logging.StreamHandler(sys.stderr)
- elif filename == '-': handler = logging.StreamHandler(sys.stdout)
- else: handler = logging.FileHandler(filename)
- handler.setFormatter(formatter)
- DBOBJ = logging.getLogger('urlgrabber')
- DBOBJ.addHandler(handler)
- DBOBJ.setLevel(level)
- except (KeyError, ImportError, ValueError):
- DBOBJ = None
- set_logger(DBOBJ)
-
-_init_default_logger()
-########################################################################
-# END MODULE INITIALIZATION
-########################################################################
-
-
-
-class URLGrabError(IOError):
- """
- URLGrabError error codes:
-
- URLGrabber error codes (0 -- 255)
- 0 - everything looks good (you should never see this)
- 1 - malformed url
- 2 - local file doesn't exist
- 3 - request for non-file local file (dir, etc)
- 4 - IOError on fetch
- 5 - OSError on fetch
- 6 - no content length header when we expected one
- 7 - HTTPException
- 8 - Exceeded read limit (for urlread)
- 9 - Requested byte range not satisfiable.
- 10 - Byte range requested, but range support unavailable
- 11 - Illegal reget mode
- 12 - Socket timeout
- 13 - malformed proxy url
- 14 - HTTPError (includes .code and .exception attributes)
- 15 - user abort
-
- MirrorGroup error codes (256 -- 511)
- 256 - No more mirrors left to try
-
- Custom (non-builtin) classes derived from MirrorGroup (512 -- 767)
- [ this range reserved for application-specific error codes ]
-
- Retry codes (< 0)
- -1 - retry the download, unknown reason
-
- Note: to test which group a code is in, you can simply do integer
- division by 256: e.errno / 256
-
- Negative codes are reserved for use by functions passed in to
- retrygrab with checkfunc. The value -1 is built in as a generic
- retry code and is already included in the retrycodes list.
- Therefore, you can create a custom check function that simply
- returns -1 and the fetch will be re-tried. For more customized
- retries, you can use other negative number and include them in
- retry-codes. This is nice for outputting useful messages about
- what failed.
-
- You can use these error codes like so:
- try: urlgrab(url)
- except URLGrabError, e:
- if e.errno == 3: ...
- # or
- print e.strerror
- # or simply
- print e #### print '[Errno %i] %s' % (e.errno, e.strerror)
- """
- pass
-
-class CallbackObject:
- """Container for returned callback data.
-
- This is currently a dummy class into which urlgrabber can stuff
- information for passing to callbacks. This way, the prototype for
- all callbacks is the same, regardless of the data that will be
- passed back. Any function that accepts a callback function as an
- argument SHOULD document what it will define in this object.
-
- It is possible that this class will have some greater
- functionality in the future.
- """
- def __init__(self, **kwargs):
- self.__dict__.update(kwargs)
-
-def close_all():
- """close any open keepalive connections"""
- for handler in keepalive_handlers:
- handler.close_all()
-
-def urlgrab(url, filename=None, **kwargs):
- """grab the file at <url> and make a local copy at <filename>
- If filename is none, the basename of the url is used.
- urlgrab returns the filename of the local file, which may be different
- from the passed-in filename if the copy_local kwarg == 0.
-
- See module documentation for a description of possible kwargs.
- """
- return default_grabber.urlgrab(url, filename, **kwargs)
-
-def urlopen(url, **kwargs):
- """open the url and return a file object
- If a progress object or throttle specifications exist, then
- a special file object will be returned that supports them.
- The file object can be treated like any other file object.
-
- See module documentation for a description of possible kwargs.
- """
- return default_grabber.urlopen(url, **kwargs)
-
-def urlread(url, limit=None, **kwargs):
- """read the url into a string, up to 'limit' bytes
- If the limit is exceeded, an exception will be thrown. Note that urlread
- is NOT intended to be used as a way of saying "I want the first N bytes"
- but rather 'read the whole file into memory, but don't use too much'
-
- See module documentation for a description of possible kwargs.
- """
- return default_grabber.urlread(url, limit, **kwargs)
-
-
-class URLParser:
- """Process the URLs before passing them to urllib2.
-
- This class does several things:
-
- * add any prefix
- * translate a "raw" file to a proper file: url
- * handle any http or https auth that's encoded within the url
- * quote the url
-
- Only the "parse" method is called directly, and it calls sub-methods.
-
- An instance of this class is held in the options object, which
- means that it's easy to change the behavior by sub-classing and
- passing the replacement in. It need only have a method like:
-
- url, parts = urlparser.parse(url, opts)
- """
-
- def parse(self, url, opts):
- """parse the url and return the (modified) url and its parts
-
- Note: a raw file WILL be quoted when it's converted to a URL.
- However, other urls (ones which come with a proper scheme) may
- or may not be quoted according to opts.quote
-
- opts.quote = 1 --> quote it
- opts.quote = 0 --> do not quote it
- opts.quote = None --> guess
- """
- quote = opts.quote
-
- if opts.prefix:
- url = self.add_prefix(url, opts.prefix)
-
- parts = urlparse.urlparse(url)
- (scheme, host, path, parm, query, frag) = parts
-
- if not scheme or (len(scheme) == 1 and scheme in string.letters):
- # if a scheme isn't specified, we guess that it's "file:"
- if url[0] not in '/\\': url = os.path.abspath(url)
- url = 'file:' + urllib.pathname2url(url)
- parts = urlparse.urlparse(url)
- quote = 0 # pathname2url quotes, so we won't do it again
-
- if scheme in ['http', 'https']:
- parts = self.process_http(parts)
-
- if quote is None:
- quote = self.guess_should_quote(parts)
- if quote:
- parts = self.quote(parts)
-
- url = urlparse.urlunparse(parts)
- return url, parts
-
- def add_prefix(self, url, prefix):
- if prefix[-1] == '/' or url[0] == '/':
- url = prefix + url
- else:
- url = prefix + '/' + url
- return url
-
- def process_http(self, parts):
- (scheme, host, path, parm, query, frag) = parts
-
- if '@' in host and auth_handler:
- try:
- user_pass, host = host.split('@', 1)
- if ':' in user_pass:
- user, password = user_pass.split(':', 1)
- except ValueError, e:
- raise URLGrabError(1, _('Bad URL: %s') % url)
- if DEBUG: DEBUG.info('adding HTTP auth: %s, %s', user, password)
- auth_handler.add_password(None, host, user, password)
-
- return (scheme, host, path, parm, query, frag)
-
- def quote(self, parts):
- """quote the URL
-
- This method quotes ONLY the path part. If you need to quote
- other parts, you should override this and pass in your derived
- class. The other alternative is to quote other parts before
- passing into urlgrabber.
- """
- (scheme, host, path, parm, query, frag) = parts
- path = urllib.quote(path)
- return (scheme, host, path, parm, query, frag)
-
- hexvals = '0123456789ABCDEF'
- def guess_should_quote(self, parts):
- """
- Guess whether we should quote a path. This amounts to
- guessing whether it's already quoted.
-
- find ' ' -> 1
- find '%' -> 1
- find '%XX' -> 0
- else -> 1
- """
- (scheme, host, path, parm, query, frag) = parts
- if ' ' in path:
- return 1
- ind = string.find(path, '%')
- if ind > -1:
- while ind > -1:
- if len(path) < ind+3:
- return 1
- code = path[ind+1:ind+3].upper()
- if code[0] not in self.hexvals or \
- code[1] not in self.hexvals:
- return 1
- ind = string.find(path, '%', ind+1)
- return 0
- return 1
-
-class URLGrabberOptions:
- """Class to ease kwargs handling."""
-
- def __init__(self, delegate=None, **kwargs):
- """Initialize URLGrabberOptions object.
- Set default values for all options and then update options specified
- in kwargs.
- """
- self.delegate = delegate
- if delegate is None:
- self._set_defaults()
- self._set_attributes(**kwargs)
-
- def __getattr__(self, name):
- if self.delegate and hasattr(self.delegate, name):
- return getattr(self.delegate, name)
- raise AttributeError, name
-
- def raw_throttle(self):
- """Calculate raw throttle value from throttle and bandwidth
- values.
- """
- if self.throttle <= 0:
- return 0
- elif type(self.throttle) == type(0):
- return float(self.throttle)
- else: # throttle is a float
- return self.bandwidth * self.throttle
-
- def derive(self, **kwargs):
- """Create a derived URLGrabberOptions instance.
- This method creates a new instance and overrides the
- options specified in kwargs.
- """
- return URLGrabberOptions(delegate=self, **kwargs)
-
- def _set_attributes(self, **kwargs):
- """Update object attributes with those provided in kwargs."""
- self.__dict__.update(kwargs)
- if have_range and kwargs.has_key('range'):
- # normalize the supplied range value
- self.range = range_tuple_normalize(self.range)
- if not self.reget in [None, 'simple', 'check_timestamp']:
- raise URLGrabError(11, _('Illegal reget mode: %s') \
- % (self.reget, ))
-
- def _set_defaults(self):
- """Set all options to their default values.
- When adding new options, make sure a default is
- provided here.
- """
- self.progress_obj = None
- self.throttle = 1.0
- self.bandwidth = 0
- self.retry = None
- self.retrycodes = [-1,2,4,5,6,7]
- self.checkfunc = None
- self.copy_local = 0
- self.close_connection = 0
- self.range = None
- self.user_agent = 'urlgrabber/%s' % __version__
- self.keepalive = 1
- self.proxies = None
- self.reget = None
- self.failure_callback = None
- self.interrupt_callback = None
- self.prefix = None
- self.opener = None
- self.cache_openers = True
- self.timeout = None
- self.text = None
- self.http_headers = None
- self.ftp_headers = None
- self.data = None
- self.urlparser = URLParser()
- self.quote = None
-
-class URLGrabber:
- """Provides easy opening of URLs with a variety of options.
-
- All options are specified as kwargs. Options may be specified when
- the class is created and may be overridden on a per request basis.
-
- New objects inherit default values from default_grabber.
- """
-
- def __init__(self, **kwargs):
- self.opts = URLGrabberOptions(**kwargs)
-
- def _retry(self, opts, func, *args):
- tries = 0
- while 1:
- # there are only two ways out of this loop. The second has
- # several "sub-ways"
- # 1) via the return in the "try" block
- # 2) by some exception being raised
- # a) an excepton is raised that we don't "except"
- # b) a callback raises ANY exception
- # c) we're not retry-ing or have run out of retries
- # d) the URLGrabError code is not in retrycodes
- # beware of infinite loops :)
- tries = tries + 1
- exception = None
- retrycode = None
- callback = None
- if DEBUG: DEBUG.info('attempt %i/%s: %s',
- tries, opts.retry, args[0])
- try:
- r = apply(func, (opts,) + args, {})
- if DEBUG: DEBUG.info('success')
- return r
- except URLGrabError, e:
- exception = e
- callback = opts.failure_callback
- retrycode = e.errno
- except KeyboardInterrupt, e:
- exception = e
- callback = opts.interrupt_callback
-
- if DEBUG: DEBUG.info('exception: %s', exception)
- if callback:
- if DEBUG: DEBUG.info('calling callback: %s', callback)
- cb_func, cb_args, cb_kwargs = self._make_callback(callback)
- obj = CallbackObject(exception=exception, url=args[0],
- tries=tries, retry=opts.retry)
- cb_func(obj, *cb_args, **cb_kwargs)
-
- if (opts.retry is None) or (tries == opts.retry):
- if DEBUG: DEBUG.info('retries exceeded, re-raising')
- raise
-
- if (retrycode is not None) and (retrycode not in opts.retrycodes):
- if DEBUG: DEBUG.info('retrycode (%i) not in list %s, re-raising',
- retrycode, opts.retrycodes)
- raise
-
- def urlopen(self, url, **kwargs):
- """open the url and return a file object
- If a progress object or throttle value specified when this
- object was created, then a special file object will be
- returned that supports them. The file object can be treated
- like any other file object.
- """
- opts = self.opts.derive(**kwargs)
- (url,parts) = opts.urlparser.parse(url, opts)
- def retryfunc(opts, url):
- return URLGrabberFileObject(url, filename=None, opts=opts)
- return self._retry(opts, retryfunc, url)
-
- def urlgrab(self, url, filename=None, **kwargs):
- """grab the file at <url> and make a local copy at <filename>
- If filename is none, the basename of the url is used.
- urlgrab returns the filename of the local file, which may be
- different from the passed-in filename if copy_local == 0.
- """
- opts = self.opts.derive(**kwargs)
- (url,parts) = opts.urlparser.parse(url, opts)
- (scheme, host, path, parm, query, frag) = parts
- if filename is None:
- filename = os.path.basename( urllib.unquote(path) )
- if scheme == 'file' and not opts.copy_local:
- # just return the name of the local file - don't make a
- # copy currently
- path = urllib.url2pathname(path)
- if host:
- path = os.path.normpath('//' + host + path)
- if not os.path.exists(path):
- raise URLGrabError(2,
- _('Local file does not exist: %s') % (path, ))
- elif not os.path.isfile(path):
- raise URLGrabError(3,
- _('Not a normal file: %s') % (path, ))
- elif not opts.range:
- return path
-
- def retryfunc(opts, url, filename):
- fo = URLGrabberFileObject(url, filename, opts)
- try:
- fo._do_grab()
- if not opts.checkfunc is None:
- cb_func, cb_args, cb_kwargs = \
- self._make_callback(opts.checkfunc)
- obj = CallbackObject()
- obj.filename = filename
- obj.url = url
- apply(cb_func, (obj, )+cb_args, cb_kwargs)
- finally:
- fo.close()
- return filename
-
- return self._retry(opts, retryfunc, url, filename)
-
- def urlread(self, url, limit=None, **kwargs):
- """read the url into a string, up to 'limit' bytes
- If the limit is exceeded, an exception will be thrown. Note
- that urlread is NOT intended to be used as a way of saying
- "I want the first N bytes" but rather 'read the whole file
- into memory, but don't use too much'
- """
- opts = self.opts.derive(**kwargs)
- (url,parts) = opts.urlparser.parse(url, opts)
- if limit is not None:
- limit = limit + 1
-
- def retryfunc(opts, url, limit):
- fo = URLGrabberFileObject(url, filename=None, opts=opts)
- s = ''
- try:
- # this is an unfortunate thing. Some file-like objects
- # have a default "limit" of None, while the built-in (real)
- # file objects have -1. They each break the other, so for
- # now, we just force the default if necessary.
- if limit is None: s = fo.read()
- else: s = fo.read(limit)
-
- if not opts.checkfunc is None:
- cb_func, cb_args, cb_kwargs = \
- self._make_callback(opts.checkfunc)
- obj = CallbackObject()
- obj.data = s
- obj.url = url
- apply(cb_func, (obj, )+cb_args, cb_kwargs)
- finally:
- fo.close()
- return s
-
- s = self._retry(opts, retryfunc, url, limit)
- if limit and len(s) > limit:
- raise URLGrabError(8,
- _('Exceeded limit (%i): %s') % (limit, url))
- return s
-
- def _make_callback(self, callback_obj):
- if callable(callback_obj):
- return callback_obj, (), {}
- else:
- return callback_obj
-
-# create the default URLGrabber used by urlXXX functions.
-# NOTE: actual defaults are set in URLGrabberOptions
-default_grabber = URLGrabber()
-
-class URLGrabberFileObject:
- """This is a file-object wrapper that supports progress objects
- and throttling.
-
- This exists to solve the following problem: lets say you want to
- drop-in replace a normal open with urlopen. You want to use a
- progress meter and/or throttling, but how do you do that without
- rewriting your code? Answer: urlopen will return a wrapped file
- object that does the progress meter and-or throttling internally.
- """
-
- def __init__(self, url, filename, opts):
- self.url = url
- self.filename = filename
- self.opts = opts
- self.fo = None
- self._rbuf = ''
- self._rbufsize = 1024*8
- self._ttime = time.time()
- self._tsize = 0
- self._amount_read = 0
- self._opener = None
- self._do_open()
-
- def __getattr__(self, name):
- """This effectively allows us to wrap at the instance level.
- Any attribute not found in _this_ object will be searched for
- in self.fo. This includes methods."""
- if hasattr(self.fo, name):
- return getattr(self.fo, name)
- raise AttributeError, name
-
- def _get_opener(self):
- """Build a urllib2 OpenerDirector based on request options."""
- if self.opts.opener:
- return self.opts.opener
- elif self._opener is None:
- handlers = []
- need_keepalive_handler = (keepalive_handlers and self.opts.keepalive)
- need_range_handler = (range_handlers and \
- (self.opts.range or self.opts.reget))
- # if you specify a ProxyHandler when creating the opener
- # it _must_ come before all other handlers in the list or urllib2
- # chokes.
- if self.opts.proxies:
- handlers.append( CachedProxyHandler(self.opts.proxies) )
-
- # -------------------------------------------------------
- # OK, these next few lines are a serious kludge to get
- # around what I think is a bug in python 2.2's
- # urllib2. The basic idea is that default handlers
- # get applied first. If you override one (like a
- # proxy handler), then the default gets pulled, but
- # the replacement goes on the end. In the case of
- # proxies, this means the normal handler picks it up
- # first and the proxy isn't used. Now, this probably
- # only happened with ftp or non-keepalive http, so not
- # many folks saw it. The simple approach to fixing it
- # is just to make sure you override the other
- # conflicting defaults as well. I would LOVE to see
- # these go way or be dealt with more elegantly. The
- # problem isn't there after 2.2. -MDS 2005/02/24
- if not need_keepalive_handler:
- handlers.append( urllib2.HTTPHandler() )
- if not need_range_handler:
- handlers.append( urllib2.FTPHandler() )
- # -------------------------------------------------------
-
- if need_keepalive_handler:
- handlers.extend( keepalive_handlers )
- if need_range_handler:
- handlers.extend( range_handlers )
- handlers.append( auth_handler )
- if self.opts.cache_openers:
- self._opener = CachedOpenerDirector(*handlers)
- else:
- self._opener = urllib2.build_opener(*handlers)
- # OK, I don't like to do this, but otherwise, we end up with
- # TWO user-agent headers.
- self._opener.addheaders = []
- return self._opener
-
- def _do_open(self):
- opener = self._get_opener()
-
- req = urllib2.Request(self.url, self.opts.data) # build request object
- self._add_headers(req) # add misc headers that we need
- self._build_range(req) # take care of reget and byterange stuff
-
- fo, hdr = self._make_request(req, opener)
- if self.reget_time and self.opts.reget == 'check_timestamp':
- # do this if we have a local file with known timestamp AND
- # we're in check_timestamp reget mode.
- fetch_again = 0
- try:
- modified_tuple = hdr.getdate_tz('last-modified')
- modified_stamp = rfc822.mktime_tz(modified_tuple)
- if modified_stamp > self.reget_time: fetch_again = 1
- except (TypeError,):
- fetch_again = 1
-
- if fetch_again:
- # the server version is newer than the (incomplete) local
- # version, so we should abandon the version we're getting
- # and fetch the whole thing again.
- fo.close()
- self.opts.reget = None
- del req.headers['Range']
- self._build_range(req)
- fo, hdr = self._make_request(req, opener)
-
- (scheme, host, path, parm, query, frag) = urlparse.urlparse(self.url)
- path = urllib.unquote(path)
- if not (self.opts.progress_obj or self.opts.raw_throttle() \
- or self.opts.timeout):
- # if we're not using the progress_obj, throttling, or timeout
- # we can get a performance boost by going directly to
- # the underlying fileobject for reads.
- self.read = fo.read
- if hasattr(fo, 'readline'):
- self.readline = fo.readline
- elif self.opts.progress_obj:
- try:
- length = int(hdr['Content-Length'])
- length = length + self._amount_read # Account for regets
- except (KeyError, ValueError, TypeError):
- length = None
-
- self.opts.progress_obj.start(str(self.filename),
- urllib.unquote(self.url),
- os.path.basename(path),
- length, text=self.opts.text)
- self.opts.progress_obj.update(0)
- (self.fo, self.hdr) = (fo, hdr)
-
- def _add_headers(self, req):
- if self.opts.user_agent:
- req.add_header('User-agent', self.opts.user_agent)
- try: req_type = req.get_type()
- except ValueError: req_type = None
- if self.opts.http_headers and req_type in ('http', 'https'):
- for h, v in self.opts.http_headers:
- req.add_header(h, v)
- if self.opts.ftp_headers and req_type == 'ftp':
- for h, v in self.opts.ftp_headers:
- req.add_header(h, v)
-
- def _build_range(self, req):
- self.reget_time = None
- self.append = 0
- reget_length = 0
- rt = None
- if have_range and self.opts.reget and type(self.filename) in types.StringTypes:
- # we have reget turned on and we're dumping to a file
- try:
- s = os.stat(self.filename)
- except OSError:
- pass
- else:
- self.reget_time = s[ST_MTIME]
- reget_length = s[ST_SIZE]
-
- # Set initial length when regetting
- self._amount_read = reget_length
-
- rt = reget_length, ''
- self.append = 1
-
- if self.opts.range:
- if not have_range:
- raise URLGrabError(10, _('Byte range requested but range '\
- 'support unavailable'))
- rt = self.opts.range
- if rt[0]: rt = (rt[0] + reget_length, rt[1])
-
- if rt:
- header = range_tuple_to_header(rt)
- if header: req.add_header('Range', header)
-
- def _make_request(self, req, opener):
- try:
- if have_socket_timeout and self.opts.timeout:
- old_to = socket.getdefaulttimeout()
- socket.setdefaulttimeout(self.opts.timeout)
- try:
- fo = opener.open(req)
- finally:
- socket.setdefaulttimeout(old_to)
- else:
- fo = opener.open(req)
- hdr = fo.info()
- except ValueError, e:
- raise URLGrabError(1, _('Bad URL: %s') % (e, ))
- except RangeError, e:
- raise URLGrabError(9, str(e))
- except urllib2.HTTPError, e:
- new_e = URLGrabError(14, str(e))
- new_e.code = e.code
- new_e.exception = e
- raise new_e
- except IOError, e:
- if hasattr(e, 'reason') and have_socket_timeout and \
- isinstance(e.reason, TimeoutError):
- raise URLGrabError(12, _('Timeout: %s') % (e, ))
- else:
- raise URLGrabError(4, _('IOError: %s') % (e, ))
- except OSError, e:
- raise URLGrabError(5, _('OSError: %s') % (e, ))
- except HTTPException, e:
- raise URLGrabError(7, _('HTTP Exception (%s): %s') % \
- (e.__class__.__name__, e))
- else:
- return (fo, hdr)
-
- def _do_grab(self):
- """dump the file to self.filename."""
- if self.append: new_fo = open(self.filename, 'ab')
- else: new_fo = open(self.filename, 'wb')
- try:
- # if we have a known range, only try to read that much.
- (low, high) = self.opts.range
- amount = high - low
- except TypeError, ValueError:
- amount = None
- bs = 1024*8
- size = 0
-
- try:
- if amount is not None: bs = min(bs, amount - size)
- block = self.read(bs)
- size = size + len(block)
- while block:
- new_fo.write(block)
- if amount is not None: bs = min(bs, amount - size)
- block = self.read(bs)
- size = size + len(block)
- finally:
- new_fo.close()
-
- try:
- modified_tuple = self.hdr.getdate_tz('last-modified')
- modified_stamp = rfc822.mktime_tz(modified_tuple)
- os.utime(self.filename, (modified_stamp, modified_stamp))
- except (TypeError,), e: pass
-
- return size
-
- def _fill_buffer(self, amt=None):
- """fill the buffer to contain at least 'amt' bytes by reading
- from the underlying file object. If amt is None, then it will
- read until it gets nothing more. It updates the progress meter
- and throttles after every self._rbufsize bytes."""
- # the _rbuf test is only in this first 'if' for speed. It's not
- # logically necessary
- if self._rbuf and not amt is None:
- L = len(self._rbuf)
- if amt > L:
- amt = amt - L
- else:
- return
-
- # if we've made it here, then we don't have enough in the buffer
- # and we need to read more.
-
- buf = [self._rbuf]
- bufsize = len(self._rbuf)
- while amt is None or amt:
- # first, delay if necessary for throttling reasons
- if self.opts.raw_throttle():
- diff = self._tsize/self.opts.raw_throttle() - \
- (time.time() - self._ttime)
- if diff > 0: time.sleep(diff)
- self._ttime = time.time()
-
- # now read some data, up to self._rbufsize
- if amt is None: readamount = self._rbufsize
- else: readamount = min(amt, self._rbufsize)
- try:
- new = self.fo.read(readamount)
- except socket.error, e:
- raise URLGrabError(4, _('Socket Error: %s') % (e, ))
- except TimeoutError, e:
- raise URLGrabError(12, _('Timeout: %s') % (e, ))
- except IOError, e:
- raise URLGrabError(4, _('IOError: %s') %(e,))
- newsize = len(new)
- if not newsize: break # no more to read
-
- if amt: amt = amt - newsize
- buf.append(new)
- bufsize = bufsize + newsize
- self._tsize = newsize
- self._amount_read = self._amount_read + newsize
- if self.opts.progress_obj:
- self.opts.progress_obj.update(self._amount_read)
-
- self._rbuf = string.join(buf, '')
- return
-
- def read(self, amt=None):
- self._fill_buffer(amt)
- if amt is None:
- s, self._rbuf = self._rbuf, ''
- else:
- s, self._rbuf = self._rbuf[:amt], self._rbuf[amt:]
- return s
-
- def readline(self, limit=-1):
- i = string.find(self._rbuf, '\n')
- while i < 0 and not (0 < limit <= len(self._rbuf)):
- L = len(self._rbuf)
- self._fill_buffer(L + self._rbufsize)
- if not len(self._rbuf) > L: break
- i = string.find(self._rbuf, '\n', L)
-
- if i < 0: i = len(self._rbuf)
- else: i = i+1
- if 0 <= limit < len(self._rbuf): i = limit
-
- s, self._rbuf = self._rbuf[:i], self._rbuf[i:]
- return s
-
- def close(self):
- if self.opts.progress_obj:
- self.opts.progress_obj.end(self._amount_read)
- self.fo.close()
- if self.opts.close_connection:
- try: self.fo.close_connection()
- except: pass
-
-_handler_cache = []
-def CachedOpenerDirector(*handlers):
- for (cached_handlers, opener) in _handler_cache:
- if cached_handlers == handlers:
- for handler in opener.handlers:
- handler.add_parent(opener)
- return opener
- opener = urllib2.build_opener(*handlers)
- _handler_cache.append( (handlers, opener) )
- return opener
-
-_proxy_cache = []
-def CachedProxyHandler(proxies):
- for (pdict, handler) in _proxy_cache:
- if pdict == proxies:
- if DEBUG: DEBUG.debug('re-using proxy settings: %s', proxies)
- break
- else:
- for k, v in proxies.items():
- utype, url = urllib.splittype(v)
- host, other = urllib.splithost(url)
- if (utype is None) or (host is None):
- raise URLGrabError(13, _('Bad proxy URL: %s') % v)
-
- if DEBUG: DEBUG.info('creating new proxy handler: %s', proxies)
- handler = urllib2.ProxyHandler(proxies)
- _proxy_cache.append( (proxies, handler) )
- return handler
-
-#####################################################################
-# DEPRECATED FUNCTIONS
-def set_throttle(new_throttle):
- """Deprecated. Use: default_grabber.throttle = new_throttle"""
- default_grabber.throttle = new_throttle
-
-def set_bandwidth(new_bandwidth):
- """Deprecated. Use: default_grabber.bandwidth = new_bandwidth"""
- default_grabber.bandwidth = new_bandwidth
-
-def set_progress_obj(new_progress_obj):
- """Deprecated. Use: default_grabber.progress_obj = new_progress_obj"""
- default_grabber.progress_obj = new_progress_obj
-
-def set_user_agent(new_user_agent):
- """Deprecated. Use: default_grabber.user_agent = new_user_agent"""
- default_grabber.user_agent = new_user_agent
-
-def retrygrab(url, filename=None, copy_local=0, close_connection=0,
- progress_obj=None, throttle=None, bandwidth=None,
- numtries=3, retrycodes=[-1,2,4,5,6,7], checkfunc=None):
- """Deprecated. Use: urlgrab() with the retry arg instead"""
- kwargs = {'copy_local' : copy_local,
- 'close_connection' : close_connection,
- 'progress_obj' : progress_obj,
- 'throttle' : throttle,
- 'bandwidth' : bandwidth,
- 'retry' : numtries,
- 'retrycodes' : retrycodes,
- 'checkfunc' : checkfunc
- }
- return urlgrab(url, filename, **kwargs)
-
-
-#####################################################################
-# TESTING
-def _main_test():
- import sys
- try: url, filename = sys.argv[1:3]
- except ValueError:
- print 'usage:', sys.argv[0], \
- '<url> <filename> [copy_local=0|1] [close_connection=0|1]'
- sys.exit()
-
- kwargs = {}
- for a in sys.argv[3:]:
- k, v = string.split(a, '=', 1)
- kwargs[k] = int(v)
-
- set_throttle(1.0)
- set_bandwidth(32 * 1024)
- print "throttle: %s, throttle bandwidth: %s B/s" % (default_grabber.throttle,
- default_grabber.bandwidth)
-
- try: from progress import text_progress_meter
- except ImportError, e: pass
- else: kwargs['progress_obj'] = text_progress_meter()
-
- try: name = apply(urlgrab, (url, filename), kwargs)
- except URLGrabError, e: print e
- else: print 'LOCAL FILE:', name
-
-
-def _retry_test():
- import sys
- try: url, filename = sys.argv[1:3]
- except ValueError:
- print 'usage:', sys.argv[0], \
- '<url> <filename> [copy_local=0|1] [close_connection=0|1]'
- sys.exit()
-
- kwargs = {}
- for a in sys.argv[3:]:
- k, v = string.split(a, '=', 1)
- kwargs[k] = int(v)
-
- try: from progress import text_progress_meter
- except ImportError, e: pass
- else: kwargs['progress_obj'] = text_progress_meter()
-
- def cfunc(filename, hello, there='foo'):
- print hello, there
- import random
- rnum = random.random()
- if rnum < .5:
- print 'forcing retry'
- raise URLGrabError(-1, 'forcing retry')
- if rnum < .75:
- print 'forcing failure'
- raise URLGrabError(-2, 'forcing immediate failure')
- print 'success'
- return
-
- close_all()
- kwargs['checkfunc'] = (cfunc, ('hello',), {'there':'there'})
- try: name = apply(retrygrab, (url, filename), kwargs)
- except URLGrabError, e: print e
- else: print 'LOCAL FILE:', name
-
-def _file_object_test(filename=None):
- import random, cStringIO, sys
- if filename is None:
- filename = __file__
- print 'using file "%s" for comparisons' % filename
- fo = open(filename)
- s_input = fo.read()
- fo.close()
-
- for testfunc in [_test_file_object_smallread,
- _test_file_object_readall,
- _test_file_object_readline,
- _test_file_object_readlines]:
- fo_input = cStringIO.StringIO(s_input)
- fo_output = cStringIO.StringIO()
- wrapper = URLGrabberFileObject(fo_input, None, 0)
- print 'testing %-30s ' % testfunc.__name__,
- testfunc(wrapper, fo_output)
- s_output = fo_output.getvalue()
- if s_output == s_input: print 'passed'
- else: print 'FAILED'
-
-def _test_file_object_smallread(wrapper, fo_output):
- while 1:
- s = wrapper.read(23)
- fo_output.write(s)
- if not s: return
-
-def _test_file_object_readall(wrapper, fo_output):
- s = wrapper.read()
- fo_output.write(s)
-
-def _test_file_object_readline(wrapper, fo_output):
- while 1:
- s = wrapper.readline()
- fo_output.write(s)
- if not s: return
-
-def _test_file_object_readlines(wrapper, fo_output):
- li = wrapper.readlines()
- fo_output.write(string.join(li, ''))
-
-if __name__ == '__main__':
- _main_test()
- _retry_test()
- _file_object_test('test')
diff --git a/tails_installer/urlgrabber/keepalive.py b/tails_installer/urlgrabber/keepalive.py
deleted file mode 100644
index df796bd..0000000
--- a/tails_installer/urlgrabber/keepalive.py
+++ /dev/null
@@ -1,603 +0,0 @@
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the
-# Free Software Foundation, Inc.,
-# 59 Temple Place, Suite 330,
-# Boston, MA 02111-1307 USA
-
-# This file is part of urlgrabber, a high-level cross-protocol url-grabber
-# Copyright 2002-2004 Michael D. Stenner, Ryan Tomayko
-
-"""An HTTP handler for urllib2 that supports HTTP 1.1 and keepalive.
-
->>> import urllib2
->>> from keepalive import HTTPHandler
->>> keepalive_handler = HTTPHandler()
->>> opener = urllib2.build_opener(keepalive_handler)
->>> urllib2.install_opener(opener)
->>>
->>> fo = urllib2.urlopen('http://www.python.org')
-
-If a connection to a given host is requested, and all of the existing
-connections are still in use, another connection will be opened. If
-the handler tries to use an existing connection but it fails in some
-way, it will be closed and removed from the pool.
-
-To remove the handler, simply re-run build_opener with no arguments, and
-install that opener.
-
-You can explicitly close connections by using the close_connection()
-method of the returned file-like object (described below) or you can
-use the handler methods:
-
- close_connection(host)
- close_all()
- open_connections()
-
-NOTE: using the close_connection and close_all methods of the handler
-should be done with care when using multiple threads.
- * there is nothing that prevents another thread from creating new
- connections immediately after connections are closed
- * no checks are done to prevent in-use connections from being closed
-
->>> keepalive_handler.close_all()
-
-EXTRA ATTRIBUTES AND METHODS
-
- Upon a status of 200, the object returned has a few additional
- attributes and methods, which should not be used if you want to
- remain consistent with the normal urllib2-returned objects:
-
- close_connection() - close the connection to the host
- readlines() - you know, readlines()
- status - the return status (ie 404)
- reason - english translation of status (ie 'File not found')
-
- If you want the best of both worlds, use this inside an
- AttributeError-catching try:
-
- >>> try: status = fo.status
- >>> except AttributeError: status = None
-
- Unfortunately, these are ONLY there if status == 200, so it's not
- easy to distinguish between non-200 responses. The reason is that
- urllib2 tries to do clever things with error codes 301, 302, 401,
- and 407, and it wraps the object upon return.
-
- For python versions earlier than 2.4, you can avoid this fancy error
- handling by setting the module-level global HANDLE_ERRORS to zero.
- You see, prior to 2.4, it's the HTTP Handler's job to determine what
- to handle specially, and what to just pass up. HANDLE_ERRORS == 0
- means "pass everything up". In python 2.4, however, this job no
- longer belongs to the HTTP Handler and is now done by a NEW handler,
- HTTPErrorProcessor. Here's the bottom line:
-
- python version < 2.4
- HANDLE_ERRORS == 1 (default) pass up 200, treat the rest as
- errors
- HANDLE_ERRORS == 0 pass everything up, error processing is
- left to the calling code
- python version >= 2.4
- HANDLE_ERRORS == 1 pass up 200, treat the rest as errors
- HANDLE_ERRORS == 0 (default) pass everything up, let the
- other handlers (specifically,
- HTTPErrorProcessor) decide what to do
-
- In practice, setting the variable either way makes little difference
- in python 2.4, so for the most consistent behavior across versions,
- you probably just want to use the defaults, which will give you
- exceptions on errors.
-
-"""
-
-# $Id: keepalive.py,v 1.15 2006/07/20 20:15:58 mstenner Exp $
-
-import urllib2
-import httplib
-import socket
-import thread
-
-DEBUG = None
-
-import sys
-if sys.version_info < (2, 4): HANDLE_ERRORS = 1
-else: HANDLE_ERRORS = 0
-
-class ConnectionManager:
- """
- The connection manager must be able to:
- * keep track of all existing
- """
- def __init__(self):
- self._lock = thread.allocate_lock()
- self._hostmap = {} # map hosts to a list of connections
- self._connmap = {} # map connections to host
- self._readymap = {} # map connection to ready state
-
- def add(self, host, connection, ready):
- self._lock.acquire()
- try:
- if not self._hostmap.has_key(host): self._hostmap[host] = []
- self._hostmap[host].append(connection)
- self._connmap[connection] = host
- self._readymap[connection] = ready
- finally:
- self._lock.release()
-
- def remove(self, connection):
- self._lock.acquire()
- try:
- try:
- host = self._connmap[connection]
- except KeyError:
- pass
- else:
- del self._connmap[connection]
- del self._readymap[connection]
- self._hostmap[host].remove(connection)
- if not self._hostmap[host]: del self._hostmap[host]
- finally:
- self._lock.release()
-
- def set_ready(self, connection, ready):
- try: self._readymap[connection] = ready
- except KeyError: pass
-
- def get_ready_conn(self, host):
- conn = None
- self._lock.acquire()
- try:
- if self._hostmap.has_key(host):
- for c in self._hostmap[host]:
- if self._readymap[c]:
- self._readymap[c] = 0
- conn = c
- break
- finally:
- self._lock.release()
- return conn
-
- def get_all(self, host=None):
- if host:
- return list(self._hostmap.get(host, []))
- else:
- return dict(self._hostmap)
-
-class KeepAliveHandler:
- def __init__(self):
- self._cm = ConnectionManager()
-
- #### Connection Management
- def open_connections(self):
- """return a list of connected hosts and the number of connections
- to each. [('foo.com:80', 2), ('bar.org', 1)]"""
- return [(host, len(li)) for (host, li) in self._cm.get_all().items()]
-
- def close_connection(self, host):
- """close connection(s) to <host>
- host is the host:port spec, as in 'www.cnn.com:8080' as passed in.
- no error occurs if there is no connection to that host."""
- for h in self._cm.get_all(host):
- self._cm.remove(h)
- h.close()
-
- def close_all(self):
- """close all open connections"""
- for host, conns in self._cm.get_all().items():
- for h in conns:
- self._cm.remove(h)
- h.close()
-
- def _request_closed(self, request, host, connection):
- """tells us that this request is now closed and the the
- connection is ready for another request"""
- self._cm.set_ready(connection, 1)
-
- def _remove_connection(self, host, connection, close=0):
- if close: connection.close()
- self._cm.remove(connection)
-
- #### Transaction Execution
- def do_open(self, http_class, req):
- host = req.get_host()
- if not host:
- raise urllib2.URLError('no host given')
-
- try:
- h = self._cm.get_ready_conn(host)
- while h:
- r = self._reuse_connection(h, req, host)
-
- # if this response is non-None, then it worked and we're
- # done. Break out, skipping the else block.
- if r: break
-
- # connection is bad - possibly closed by server
- # discard it and ask for the next free connection
- h.close()
- self._cm.remove(h)
- h = self._cm.get_ready_conn(host)
- else:
- # no (working) free connections were found. Create a new one.
- h = http_class(host)
- if DEBUG: DEBUG.info("creating new connection to %s (%d)",
- host, id(h))
- self._cm.add(host, h, 0)
- self._start_transaction(h, req)
- r = h.getresponse()
- except (socket.error, httplib.HTTPException), err:
- raise urllib2.URLError(err)
-
- # if not a persistent connection, don't try to reuse it
- if r.will_close: self._cm.remove(h)
-
- if DEBUG: DEBUG.info("STATUS: %s, %s", r.status, r.reason)
- r._handler = self
- r._host = host
- r._url = req.get_full_url()
- r._connection = h
- r.code = r.status
- r.headers = r.msg
- r.msg = r.reason
-
- if r.status == 200 or not HANDLE_ERRORS:
- return r
- else:
- return self.parent.error('http', req, r,
- r.status, r.msg, r.headers)
-
- def _reuse_connection(self, h, req, host):
- """start the transaction with a re-used connection
- return a response object (r) upon success or None on failure.
- This DOES not close or remove bad connections in cases where
- it returns. However, if an unexpected exception occurs, it
- will close and remove the connection before re-raising.
- """
- try:
- self._start_transaction(h, req)
- r = h.getresponse()
- # note: just because we got something back doesn't mean it
- # worked. We'll check the version below, too.
- except (socket.error, httplib.HTTPException):
- r = None
- except:
- # adding this block just in case we've missed
- # something we will still raise the exception, but
- # lets try and close the connection and remove it
- # first. We previously got into a nasty loop
- # where an exception was uncaught, and so the
- # connection stayed open. On the next try, the
- # same exception was raised, etc. The tradeoff is
- # that it's now possible this call will raise
- # a DIFFERENT exception
- if DEBUG: DEBUG.error("unexpected exception - closing " + \
- "connection to %s (%d)", host, id(h))
- self._cm.remove(h)
- h.close()
- raise
-
- if r is None or r.version == 9:
- # httplib falls back to assuming HTTP 0.9 if it gets a
- # bad header back. This is most likely to happen if
- # the socket has been closed by the server since we
- # last used the connection.
- if DEBUG: DEBUG.info("failed to re-use connection to %s (%d)",
- host, id(h))
- r = None
- else:
- if DEBUG: DEBUG.info("re-using connection to %s (%d)", host, id(h))
-
- return r
-
- def _start_transaction(self, h, req):
- try:
- if req.has_data():
- data = req.get_data()
- h.putrequest('POST', req.get_selector())
- if not req.headers.has_key('Content-type'):
- h.putheader('Content-type',
- 'application/x-www-form-urlencoded')
- if not req.headers.has_key('Content-length'):
- h.putheader('Content-length', '%d' % len(data))
- else:
- h.putrequest('GET', req.get_selector())
- except (socket.error, httplib.HTTPException), err:
- raise urllib2.URLError(err)
-
- for args in self.parent.addheaders:
- h.putheader(*args)
- for k, v in req.headers.items():
- h.putheader(k, v)
- h.endheaders()
- if req.has_data():
- h.send(data)
-
-class HTTPHandler(KeepAliveHandler, urllib2.HTTPHandler):
- def __init__(self):
- KeepAliveHandler.__init__(self)
-
- def http_open(self, req):
- return self.do_open(HTTPConnection, req)
-
-class HTTPSHandler(KeepAliveHandler, urllib2.HTTPSHandler):
- def __init__(self):
- KeepAliveHandler.__init__(self)
-
- def https_open(self, req):
- return self.do_open(HTTPSConnection, req)
-
-class HTTPResponse(httplib.HTTPResponse):
- # we need to subclass HTTPResponse in order to
- # 1) add readline() and readlines() methods
- # 2) add close_connection() methods
- # 3) add info() and geturl() methods
-
- # in order to add readline(), read must be modified to deal with a
- # buffer. example: readline must read a buffer and then spit back
- # one line at a time. The only real alternative is to read one
- # BYTE at a time (ick). Once something has been read, it can't be
- # put back (ok, maybe it can, but that's even uglier than this),
- # so if you THEN do a normal read, you must first take stuff from
- # the buffer.
-
- # the read method wraps the original to accomodate buffering,
- # although read() never adds to the buffer.
- # Both readline and readlines have been stolen with almost no
- # modification from socket.py
-
-
- def __init__(self, sock, debuglevel=0, strict=0, method=None):
- if method: # the httplib in python 2.3 uses the method arg
- httplib.HTTPResponse.__init__(self, sock, debuglevel, method)
- else: # 2.2 doesn't
- httplib.HTTPResponse.__init__(self, sock, debuglevel)
- self.fileno = sock.fileno
- self.code = None
- self._rbuf = ''
- self._rbufsize = 8096
- self._handler = None # inserted by the handler later
- self._host = None # (same)
- self._url = None # (same)
- self._connection = None # (same)
-
- _raw_read = httplib.HTTPResponse.read
-
- def close(self):
- if self.fp:
- self.fp.close()
- self.fp = None
- if self._handler:
- self._handler._request_closed(self, self._host,
- self._connection)
-
- def close_connection(self):
- self._handler._remove_connection(self._host, self._connection, close=1)
- self.close()
-
- def info(self):
- return self.headers
-
- def geturl(self):
- return self._url
-
- def read(self, amt=None):
- # the _rbuf test is only in this first if for speed. It's not
- # logically necessary
- if self._rbuf and not amt is None:
- L = len(self._rbuf)
- if amt > L:
- amt -= L
- else:
- s = self._rbuf[:amt]
- self._rbuf = self._rbuf[amt:]
- return s
-
- s = self._rbuf + self._raw_read(amt)
- self._rbuf = ''
- return s
-
- def readline(self, limit=-1):
- data = ""
- i = self._rbuf.find('\n')
- while i < 0 and not (0 < limit <= len(self._rbuf)):
- new = self._raw_read(self._rbufsize)
- if not new: break
- i = new.find('\n')
- if i >= 0: i = i + len(self._rbuf)
- self._rbuf = self._rbuf + new
- if i < 0: i = len(self._rbuf)
- else: i = i+1
- if 0 <= limit < len(self._rbuf): i = limit
- data, self._rbuf = self._rbuf[:i], self._rbuf[i:]
- return data
-
- def readlines(self, sizehint = 0):
- total = 0
- list = []
- while 1:
- line = self.readline()
- if not line: break
- list.append(line)
- total += len(line)
- if sizehint and total >= sizehint:
- break
- return list
-
-
-class HTTPConnection(httplib.HTTPConnection):
- # use the modified response class
- response_class = HTTPResponse
-
-class HTTPSConnection(httplib.HTTPSConnection):
- response_class = HTTPResponse
-
-#########################################################################
-##### TEST FUNCTIONS
-#########################################################################
-
-def error_handler(url):
- global HANDLE_ERRORS
- orig = HANDLE_ERRORS
- keepalive_handler = HTTPHandler()
- opener = urllib2.build_opener(keepalive_handler)
- urllib2.install_opener(opener)
- pos = {0: 'off', 1: 'on'}
- for i in (0, 1):
- print " fancy error handling %s (HANDLE_ERRORS = %i)" % (pos[i], i)
- HANDLE_ERRORS = i
- try:
- fo = urllib2.urlopen(url)
- foo = fo.read()
- fo.close()
- try: status, reason = fo.status, fo.reason
- except AttributeError: status, reason = None, None
- except IOError, e:
- print " EXCEPTION: %s" % e
- raise
- else:
- print " status = %s, reason = %s" % (status, reason)
- HANDLE_ERRORS = orig
- hosts = keepalive_handler.open_connections()
- print "open connections:", hosts
- keepalive_handler.close_all()
-
-def continuity(url):
- import md5
- format = '%25s: %s'
-
- # first fetch the file with the normal http handler
- opener = urllib2.build_opener()
- urllib2.install_opener(opener)
- fo = urllib2.urlopen(url)
- foo = fo.read()
- fo.close()
- m = md5.new(foo)
- print format % ('normal urllib', m.hexdigest())
-
- # now install the keepalive handler and try again
- opener = urllib2.build_opener(HTTPHandler())
- urllib2.install_opener(opener)
-
- fo = urllib2.urlopen(url)
- foo = fo.read()
- fo.close()
- m = md5.new(foo)
- print format % ('keepalive read', m.hexdigest())
-
- fo = urllib2.urlopen(url)
- foo = ''
- while 1:
- f = fo.readline()
- if f: foo = foo + f
- else: break
- fo.close()
- m = md5.new(foo)
- print format % ('keepalive readline', m.hexdigest())
-
-def comp(N, url):
- print ' making %i connections to:\n %s' % (N, url)
-
- sys.stdout.write(' first using the normal urllib handlers')
- # first use normal opener
- opener = urllib2.build_opener()
- urllib2.install_opener(opener)
- t1 = fetch(N, url)
- print ' TIME: %.3f s' % t1
-
- sys.stdout.write(' now using the keepalive handler ')
- # now install the keepalive handler and try again
- opener = urllib2.build_opener(HTTPHandler())
- urllib2.install_opener(opener)
- t2 = fetch(N, url)
- print ' TIME: %.3f s' % t2
- print ' improvement factor: %.2f' % (t1/t2, )
-
-def fetch(N, url, delay=0):
- import time
- lens = []
- starttime = time.time()
- for i in range(N):
- if delay and i > 0: time.sleep(delay)
- fo = urllib2.urlopen(url)
- foo = fo.read()
- fo.close()
- lens.append(len(foo))
- diff = time.time() - starttime
-
- j = 0
- for i in lens[1:]:
- j = j + 1
- if not i == lens[0]:
- print "WARNING: inconsistent length on read %i: %i" % (j, i)
-
- return diff
-
-def test_timeout(url):
- global DEBUG
- dbbackup = DEBUG
- class FakeLogger:
- def debug(self, msg, *args): print msg % args
- info = warning = error = debug
- DEBUG = FakeLogger()
- print " fetching the file to establish a connection"
- fo = urllib2.urlopen(url)
- data1 = fo.read()
- fo.close()
-
- i = 20
- print " waiting %i seconds for the server to close the connection" % i
- while i > 0:
- sys.stdout.write('\r %2i' % i)
- sys.stdout.flush()
- time.sleep(1)
- i -= 1
- sys.stderr.write('\r')
-
- print " fetching the file a second time"
- fo = urllib2.urlopen(url)
- data2 = fo.read()
- fo.close()
-
- if data1 == data2:
- print ' data are identical'
- else:
- print ' ERROR: DATA DIFFER'
-
- DEBUG = dbbackup
-
-
-def test(url, N=10):
- print "checking error hander (do this on a non-200)"
- try: error_handler(url)
- except IOError, e:
- print "exiting - exception will prevent further tests"
- sys.exit()
- print
- print "performing continuity test (making sure stuff isn't corrupted)"
- continuity(url)
- print
- print "performing speed comparison"
- comp(N, url)
- print
- print "performing dropped-connection check"
- test_timeout(url)
-
-if __name__ == '__main__':
- import time
- import sys
- try:
- N = int(sys.argv[1])
- url = sys.argv[2]
- except:
- print "%s <integer> <url>" % sys.argv[0]
- else:
- test(url, N)
diff --git a/tails_installer/urlgrabber/mirror.py b/tails_installer/urlgrabber/mirror.py
deleted file mode 100644
index 3a39986..0000000
--- a/tails_installer/urlgrabber/mirror.py
+++ /dev/null
@@ -1,459 +0,0 @@
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the
-# Free Software Foundation, Inc.,
-# 59 Temple Place, Suite 330,
-# Boston, MA 02111-1307 USA
-
-# This file is part of urlgrabber, a high-level cross-protocol url-grabber
-# Copyright 2002-2004 Michael D. Stenner, Ryan Tomayko
-
-"""Module for downloading files from a pool of mirrors
-
-DESCRIPTION
-
- This module provides support for downloading files from a pool of
- mirrors with configurable failover policies. To a large extent, the
- failover policy is chosen by using different classes derived from
- the main class, MirrorGroup.
-
- Instances of MirrorGroup (and cousins) act very much like URLGrabber
- instances in that they have urlread, urlgrab, and urlopen methods.
- They can therefore, be used in very similar ways.
-
- from urlgrabber.grabber import URLGrabber
- from urlgrabber.mirror import MirrorGroup
- gr = URLGrabber()
- mg = MirrorGroup(gr, ['http://foo.com/some/directory/',
- 'http://bar.org/maybe/somewhere/else/',
- 'ftp://baz.net/some/other/place/entirely/']
- mg.urlgrab('relative/path.zip')
-
- The assumption is that all mirrors are identical AFTER the base urls
- specified, so that any mirror can be used to fetch any file.
-
-FAILOVER
-
- The failover mechanism is designed to be customized by subclassing
- from MirrorGroup to change the details of the behavior. In general,
- the classes maintain a master mirror list and a "current mirror"
- index. When a download is initiated, a copy of this list and index
- is created for that download only. The specific failover policy
- depends on the class used, and so is documented in the class
- documentation. Note that ANY behavior of the class can be
- overridden, so any failover policy at all is possible (although
- you may need to change the interface in extreme cases).
-
-CUSTOMIZATION
-
- Most customization of a MirrorGroup object is done at instantiation
- time (or via subclassing). There are four major types of
- customization:
-
- 1) Pass in a custom urlgrabber - The passed in urlgrabber will be
- used (by default... see #2) for the grabs, so options to it
- apply for the url-fetching
-
- 2) Custom mirror list - Mirror lists can simply be a list of
- stings mirrors (as shown in the example above) but each can
- also be a dict, allowing for more options. For example, the
- first mirror in the list above could also have been:
-
- {'mirror': 'http://foo.com/some/directory/',
- 'grabber': <a custom grabber to be used for this mirror>,
- 'kwargs': { <a dict of arguments passed to the grabber> }}
-
- All mirrors are converted to this format internally. If
- 'grabber' is omitted, the default grabber will be used. If
- kwargs are omitted, then (duh) they will not be used.
-
- 3) Pass keyword arguments when instantiating the mirror group.
- See, for example, the failure_callback argument.
-
- 4) Finally, any kwargs passed in for the specific file (to the
- urlgrab method, for example) will be folded in. The options
- passed into the grabber's urlXXX methods will override any
- options specified in a custom mirror dict.
-
-"""
-
-# $Id: mirror.py,v 1.14 2006/02/22 18:26:46 mstenner Exp $
-
-import random
-import thread # needed for locking to make this threadsafe
-import types
-
-from grabber import URLGrabError, CallbackObject, DEBUG
-
-try:
- from i18n import _
-except ImportError, msg:
- def _(st): return st
-
-class GrabRequest:
- """This is a dummy class used to hold information about the specific
- request. For example, a single file. By maintaining this information
- separately, we can accomplish two things:
-
- 1) make it a little easier to be threadsafe
- 2) have request-specific parameters
- """
- pass
-
-class MirrorGroup:
- """Base Mirror class
-
- Instances of this class are built with a grabber object and a list
- of mirrors. Then all calls to urlXXX should be passed relative urls.
- The requested file will be searched for on the first mirror. If the
- grabber raises an exception (possibly after some retries) then that
- mirror will be removed from the list, and the next will be attempted.
- If all mirrors are exhausted, then an exception will be raised.
-
- MirrorGroup has the following failover policy:
-
- * downloads begin with the first mirror
-
- * by default (see default_action below) a failure (after retries)
- causes it to increment the local AND master indices. Also,
- the current mirror is removed from the local list (but NOT the
- master list - the mirror can potentially be used for other
- files)
-
- * if the local list is ever exhausted, a URLGrabError will be
- raised (errno=256, no more mirrors)
-
- OPTIONS
-
- In addition to the required arguments "grabber" and "mirrors",
- MirrorGroup also takes the following optional arguments:
-
- default_action
-
- A dict that describes the actions to be taken upon failure
- (after retries). default_action can contain any of the
- following keys (shown here with their default values):
-
- default_action = {'increment': 1,
- 'increment_master': 1,
- 'remove': 1,
- 'remove_master': 0,
- 'fail': 0}
-
- In this context, 'increment' means "use the next mirror" and
- 'remove' means "never use this mirror again". The two
- 'master' values refer to the instance-level mirror list (used
- for all files), whereas the non-master values refer to the
- current download only.
-
- The 'fail' option will cause immediate failure by re-raising
- the exception and no further attempts to get the current
- download.
-
- This dict can be set at instantiation time,
- mg = MirrorGroup(grabber, mirrors, default_action={'fail':1})
- at method-execution time (only applies to current fetch),
- filename = mg.urlgrab(url, default_action={'increment': 0})
- or by returning an action dict from the failure_callback
- return {'fail':0}
- in increasing precedence.
-
- If all three of these were done, the net result would be:
- {'increment': 0, # set in method
- 'increment_master': 1, # class default
- 'remove': 1, # class default
- 'remove_master': 0, # class default
- 'fail': 0} # set at instantiation, reset
- # from callback
-
- failure_callback
-
- this is a callback that will be called when a mirror "fails",
- meaning the grabber raises some URLGrabError. If this is a
- tuple, it is interpreted to be of the form (cb, args, kwargs)
- where cb is the actual callable object (function, method,
- etc). Otherwise, it is assumed to be the callable object
- itself. The callback will be passed a grabber.CallbackObject
- instance along with args and kwargs (if present). The following
- attributes are defined withing the instance:
-
- obj.exception = < exception that was raised >
- obj.mirror = < the mirror that was tried >
- obj.relative_url = < url relative to the mirror >
- obj.url = < full url that failed >
- # .url is just the combination of .mirror
- # and .relative_url
-
- The failure callback can return an action dict, as described
- above.
-
- Like default_action, the failure_callback can be set at
- instantiation time or when the urlXXX method is called. In
- the latter case, it applies only for that fetch.
-
- The callback can re-raise the exception quite easily. For
- example, this is a perfectly adequate callback function:
-
- def callback(obj): raise obj.exception
-
- WARNING: do not save the exception object (or the
- CallbackObject instance). As they contain stack frame
- references, they can lead to circular references.
-
- Notes:
- * The behavior can be customized by deriving and overriding the
- 'CONFIGURATION METHODS'
- * The 'grabber' instance is kept as a reference, not copied.
- Therefore, the grabber instance can be modified externally
- and changes will take effect immediately.
- """
-
- # notes on thread-safety:
-
- # A GrabRequest should never be shared by multiple threads because
- # it's never saved inside the MG object and never returned outside it.
- # therefore, it should be safe to access/modify grabrequest data
- # without a lock. However, accessing the mirrors and _next attributes
- # of the MG itself must be done when locked to prevent (for example)
- # removal of the wrong mirror.
-
- ##############################################################
- # CONFIGURATION METHODS - intended to be overridden to
- # customize behavior
- def __init__(self, grabber, mirrors, **kwargs):
- """Initialize the MirrorGroup object.
-
- REQUIRED ARGUMENTS
-
- grabber - URLGrabber instance
- mirrors - a list of mirrors
-
- OPTIONAL ARGUMENTS
-
- failure_callback - callback to be used when a mirror fails
- default_action - dict of failure actions
-
- See the module-level and class level documentation for more
- details.
- """
-
- # OVERRIDE IDEAS:
- # shuffle the list to randomize order
- self.grabber = grabber
- self.mirrors = self._parse_mirrors(mirrors)
- self._next = 0
- self._lock = thread.allocate_lock()
- self.default_action = None
- self._process_kwargs(kwargs)
-
- # if these values are found in **kwargs passed to one of the urlXXX
- # methods, they will be stripped before getting passed on to the
- # grabber
- options = ['default_action', 'failure_callback']
-
- def _process_kwargs(self, kwargs):
- self.failure_callback = kwargs.get('failure_callback')
- self.default_action = kwargs.get('default_action')
-
- def _parse_mirrors(self, mirrors):
- parsed_mirrors = []
- for m in mirrors:
- if type(m) in types.StringTypes: m = {'mirror': m}
- parsed_mirrors.append(m)
- return parsed_mirrors
-
- def _load_gr(self, gr):
- # OVERRIDE IDEAS:
- # shuffle gr list
- self._lock.acquire()
- gr.mirrors = list(self.mirrors)
- gr._next = self._next
- self._lock.release()
-
- def _get_mirror(self, gr):
- # OVERRIDE IDEAS:
- # return a random mirror so that multiple mirrors get used
- # even without failures.
- if not gr.mirrors:
- raise URLGrabError(256, _('No more mirrors to try.'))
- return gr.mirrors[gr._next]
-
- def _failure(self, gr, cb_obj):
- # OVERRIDE IDEAS:
- # inspect the error - remove=1 for 404, remove=2 for connection
- # refused, etc. (this can also be done via
- # the callback)
- cb = gr.kw.get('failure_callback') or self.failure_callback
- if cb:
- if type(cb) == type( () ):
- cb, args, kwargs = cb
- else:
- args, kwargs = (), {}
- action = cb(cb_obj, *args, **kwargs) or {}
- else:
- action = {}
- # XXXX - decide - there are two ways to do this
- # the first is action-overriding as a whole - use the entire action
- # or fall back on module level defaults
- #action = action or gr.kw.get('default_action') or self.default_action
- # the other is to fall through for each element in the action dict
- a = dict(self.default_action or {})
- a.update(gr.kw.get('default_action', {}))
- a.update(action)
- action = a
- self.increment_mirror(gr, action)
- if action and action.get('fail', 0): raise
-
- def increment_mirror(self, gr, action={}):
- """Tell the mirror object increment the mirror index
-
- This increments the mirror index, which amounts to telling the
- mirror object to use a different mirror (for this and future
- downloads).
-
- This is a SEMI-public method. It will be called internally,
- and you may never need to call it. However, it is provided
- (and is made public) so that the calling program can increment
- the mirror choice for methods like urlopen. For example, with
- urlopen, there's no good way for the mirror group to know that
- an error occurs mid-download (it's already returned and given
- you the file object).
-
- remove --- can have several values
- 0 do not remove the mirror from the list
- 1 remove the mirror for this download only
- 2 remove the mirror permanently
-
- beware of remove=0 as it can lead to infinite loops
- """
- badmirror = gr.mirrors[gr._next]
-
- self._lock.acquire()
- try:
- ind = self.mirrors.index(badmirror)
- except ValueError:
- pass
- else:
- if action.get('remove_master', 0):
- del self.mirrors[ind]
- elif self._next == ind and action.get('increment_master', 1):
- self._next += 1
- if self._next >= len(self.mirrors): self._next = 0
- self._lock.release()
-
- if action.get('remove', 1):
- del gr.mirrors[gr._next]
- elif action.get('increment', 1):
- gr._next += 1
- if gr._next >= len(gr.mirrors): gr._next = 0
-
- if DEBUG:
- grm = [m['mirror'] for m in gr.mirrors]
- DEBUG.info('GR mirrors: [%s] %i', ' '.join(grm), gr._next)
- selfm = [m['mirror'] for m in self.mirrors]
- DEBUG.info('MAIN mirrors: [%s] %i', ' '.join(selfm), self._next)
-
- #####################################################################
- # NON-CONFIGURATION METHODS
- # these methods are designed to be largely workhorse methods that
- # are not intended to be overridden. That doesn't mean you can't;
- # if you want to, feel free, but most things can be done by
- # by overriding the configuration methods :)
-
- def _join_url(self, base_url, rel_url):
- if base_url.endswith('/') or rel_url.startswith('/'):
- return base_url + rel_url
- else:
- return base_url + '/' + rel_url
-
- def _mirror_try(self, func, url, kw):
- gr = GrabRequest()
- gr.func = func
- gr.url = url
- gr.kw = dict(kw)
- self._load_gr(gr)
-
- for k in self.options:
- try: del kw[k]
- except KeyError: pass
-
- while 1:
- mirrorchoice = self._get_mirror(gr)
- fullurl = self._join_url(mirrorchoice['mirror'], gr.url)
- kwargs = dict(mirrorchoice.get('kwargs', {}))
- kwargs.update(kw)
- grabber = mirrorchoice.get('grabber') or self.grabber
- func_ref = getattr(grabber, func)
- if DEBUG: DEBUG.info('MIRROR: trying %s -> %s', url, fullurl)
- try:
- return func_ref( *(fullurl,), **kwargs )
- except URLGrabError, e:
- if DEBUG: DEBUG.info('MIRROR: failed')
- obj = CallbackObject()
- obj.exception = e
- obj.mirror = mirrorchoice['mirror']
- obj.relative_url = gr.url
- obj.url = fullurl
- self._failure(gr, obj)
-
- def urlgrab(self, url, filename=None, **kwargs):
- kw = dict(kwargs)
- kw['filename'] = filename
- func = 'urlgrab'
- return self._mirror_try(func, url, kw)
-
- def urlopen(self, url, **kwargs):
- kw = dict(kwargs)
- func = 'urlopen'
- return self._mirror_try(func, url, kw)
-
- def urlread(self, url, limit=None, **kwargs):
- kw = dict(kwargs)
- kw['limit'] = limit
- func = 'urlread'
- return self._mirror_try(func, url, kw)
-
-
-class MGRandomStart(MirrorGroup):
- """A mirror group that starts at a random mirror in the list.
-
- This behavior of this class is identical to MirrorGroup, except that
- it starts at a random location in the mirror list.
- """
-
- def __init__(self, grabber, mirrors, **kwargs):
- """Initialize the object
-
- The arguments for intialization are the same as for MirrorGroup
- """
- MirrorGroup.__init__(self, grabber, mirrors, **kwargs)
- self._next = random.randrange(len(mirrors))
-
-class MGRandomOrder(MirrorGroup):
- """A mirror group that uses mirrors in a random order.
-
- This behavior of this class is identical to MirrorGroup, except that
- it uses the mirrors in a random order. Note that the order is set at
- initialization time and fixed thereafter. That is, it does not pick a
- random mirror after each failure.
- """
-
- def __init__(self, grabber, mirrors, **kwargs):
- """Initialize the object
-
- The arguments for intialization are the same as for MirrorGroup
- """
- MirrorGroup.__init__(self, grabber, mirrors, **kwargs)
- random.shuffle(self.mirrors)
-
-if __name__ == '__main__':
- pass
diff --git a/tails_installer/urlgrabber/progress.py b/tails_installer/urlgrabber/progress.py
deleted file mode 100644
index ed8130c..0000000
--- a/tails_installer/urlgrabber/progress.py
+++ /dev/null
@@ -1,609 +0,0 @@
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the
-# Free Software Foundation, Inc.,
-# 59 Temple Place, Suite 330,
-# Boston, MA 02111-1307 USA
-
-# This file is part of urlgrabber, a high-level cross-protocol url-grabber
-# Copyright 2002-2004 Michael D. Stenner, Ryan Tomayko
-
-# $Id: progress.py,v 1.7 2005/08/19 21:59:07 mstenner Exp $
-
-import sys
-import time
-import math
-import thread
-import types
-
-class BaseMeter:
- def __init__(self):
- self.update_period = 0.3 # seconds
-
- self.filename = None
- self.url = None
- self.basename = None
- self.text = None
- self.size = None
- self.start_time = None
- self.last_amount_read = 0
- self.last_update_time = None
- self.re = RateEstimator()
-
- def start(self, filename=None, url=None, basename=None,
- size=None, now=None, text=None):
- self.filename = filename
- self.url = url
- self.basename = basename
- self.text = text
-
- #size = None ######### TESTING
- self.size = size
- if not size is None: self.fsize = format_number(size) + 'B'
-
- if now is None: now = time.time()
- self.start_time = now
- self.re.start(size, now)
- self.last_amount_read = 0
- self.last_update_time = now
- self._do_start(now)
-
- def _do_start(self, now=None):
- pass
-
- def update(self, amount_read, now=None):
- # for a real gui, you probably want to override and put a call
- # to your mainloop iteration function here
- if now is None: now = time.time()
- if (now >= self.last_update_time + self.update_period) or \
- not self.last_update_time:
- self.re.update(amount_read, now)
- self.last_amount_read = amount_read
- self.last_update_time = now
- self._do_update(amount_read, now)
-
- def _do_update(self, amount_read, now=None):
- pass
-
- def end(self, amount_read, now=None):
- if now is None: now = time.time()
- self.re.update(amount_read, now)
- self.last_amount_read = amount_read
- self.last_update_time = now
- self._do_end(amount_read, now)
-
- def _do_end(self, amount_read, now=None):
- pass
-
-# This is kind of a hack, but progress is gotten from grabber which doesn't
-# know about the total size to download. So we do this so we can get the data
-# out of band here. This will be "fixed" one way or anther soon.
-_text_meter_total_size = 0
-_text_meter_sofar_size = 0
-def text_meter_total_size(size, downloaded=0):
- global _text_meter_total_size
- global _text_meter_sofar_size
- _text_meter_total_size = size
- _text_meter_sofar_size = downloaded
-
-class TextMeter(BaseMeter):
- def __init__(self, fo=sys.stderr):
- BaseMeter.__init__(self)
- self.fo = fo
-
- def _do_update(self, amount_read, now=None):
- etime = self.re.elapsed_time()
- fetime = format_time(etime)
- fread = format_number(amount_read)
- #self.size = None
- if self.text is not None:
- text = self.text
- else:
- text = self.basename
-
- sofar_size = None
- if _text_meter_total_size:
- sofar_size = _text_meter_sofar_size + amount_read
- sofar_pc = (sofar_size * 100) / _text_meter_total_size
-
- if self.size is None:
- out = '\r%-60.60s %5sB %s ' % \
- (text, fread, fetime)
- else:
- rtime = self.re.remaining_time()
- frtime = format_time(rtime)
- frac = self.re.fraction_read()
-
- bar = '='*int(10 * frac)
- ave_dl = format_number(self.re.average_rate())
- if sofar_size is None:
- out = '\r%-25.25s %3i%% |%-14.14s| %5sB/s | %5sB %9s ETA ' % \
- (text, frac*100, bar, ave_dl, fread, frtime)
- else:
- fmt ='\r%-22.22s %3i%% |%4i%% |%-10.10s| %5sB/s | %5sB %9s ETA '
- out = fmt % (text, sofar_pc,frac*100,bar,ave_dl, fread,frtime)
-
- self.fo.write(out)
- self.fo.flush()
-
- def _do_end(self, amount_read, now=None):
- global _text_meter_total_size
- global _text_meter_sofar_size
-
- total_time = format_time(self.re.elapsed_time())
- total_size = format_number(amount_read)
- if self.text is not None:
- text = self.text
- else:
- text = self.basename
- if self.size is None:
- out = '\r%-60.60s %5sB %s ' % \
- (text, total_size, total_time)
- else:
- out = '\r%-56.56s | %5sB %9s ' % \
- (text, total_size, total_time)
-
- self.fo.write(out + '\n')
- self.fo.flush()
- if _text_meter_total_size:
- _text_meter_sofar_size += amount_read
- if _text_meter_total_size <= _text_meter_sofar_size:
- _text_meter_total_size = 0
- _text_meter_sofar_size = 0
-
-text_progress_meter = TextMeter
-
-class MultiFileHelper(BaseMeter):
- def __init__(self, master):
- BaseMeter.__init__(self)
- self.master = master
-
- def _do_start(self, now):
- self.master.start_meter(self, now)
-
- def _do_update(self, amount_read, now):
- # elapsed time since last update
- self.master.update_meter(self, now)
-
- def _do_end(self, amount_read, now):
- self.ftotal_time = format_time(now - self.start_time)
- self.ftotal_size = format_number(self.last_amount_read)
- self.master.end_meter(self, now)
-
- def failure(self, message, now=None):
- self.master.failure_meter(self, message, now)
-
- def message(self, message):
- self.master.message_meter(self, message)
-
-class MultiFileMeter:
- helperclass = MultiFileHelper
- def __init__(self):
- self.meters = []
- self.in_progress_meters = []
- self._lock = thread.allocate_lock()
- self.update_period = 0.3 # seconds
-
- self.numfiles = None
- self.finished_files = 0
- self.failed_files = 0
- self.open_files = 0
- self.total_size = None
- self.failed_size = 0
- self.start_time = None
- self.finished_file_size = 0
- self.last_update_time = None
- self.re = RateEstimator()
-
- def start(self, numfiles=None, total_size=None, now=None):
- if now is None: now = time.time()
- self.numfiles = numfiles
- self.finished_files = 0
- self.failed_files = 0
- self.open_files = 0
- self.total_size = total_size
- self.failed_size = 0
- self.start_time = now
- self.finished_file_size = 0
- self.last_update_time = now
- self.re.start(total_size, now)
- self._do_start(now)
-
- def _do_start(self, now):
- pass
-
- def end(self, now=None):
- if now is None: now = time.time()
- self._do_end(now)
-
- def _do_end(self, now):
- pass
-
- def lock(self): self._lock.acquire()
- def unlock(self): self._lock.release()
-
- ###########################################################
- # child meter creation and destruction
- def newMeter(self):
- newmeter = self.helperclass(self)
- self.meters.append(newmeter)
- return newmeter
-
- def removeMeter(self, meter):
- self.meters.remove(meter)
-
- ###########################################################
- # child functions - these should only be called by helpers
- def start_meter(self, meter, now):
- if not meter in self.meters:
- raise ValueError('attempt to use orphaned meter')
- self._lock.acquire()
- try:
- if not meter in self.in_progress_meters:
- self.in_progress_meters.append(meter)
- self.open_files += 1
- finally:
- self._lock.release()
- self._do_start_meter(meter, now)
-
- def _do_start_meter(self, meter, now):
- pass
-
- def update_meter(self, meter, now):
- if not meter in self.meters:
- raise ValueError('attempt to use orphaned meter')
- if (now >= self.last_update_time + self.update_period) or \
- not self.last_update_time:
- self.re.update(self._amount_read(), now)
- self.last_update_time = now
- self._do_update_meter(meter, now)
-
- def _do_update_meter(self, meter, now):
- pass
-
- def end_meter(self, meter, now):
- if not meter in self.meters:
- raise ValueError('attempt to use orphaned meter')
- self._lock.acquire()
- try:
- try: self.in_progress_meters.remove(meter)
- except ValueError: pass
- self.open_files -= 1
- self.finished_files += 1
- self.finished_file_size += meter.last_amount_read
- finally:
- self._lock.release()
- self._do_end_meter(meter, now)
-
- def _do_end_meter(self, meter, now):
- pass
-
- def failure_meter(self, meter, message, now):
- if not meter in self.meters:
- raise ValueError('attempt to use orphaned meter')
- self._lock.acquire()
- try:
- try: self.in_progress_meters.remove(meter)
- except ValueError: pass
- self.open_files -= 1
- self.failed_files += 1
- if meter.size and self.failed_size is not None:
- self.failed_size += meter.size
- else:
- self.failed_size = None
- finally:
- self._lock.release()
- self._do_failure_meter(meter, message, now)
-
- def _do_failure_meter(self, meter, message, now):
- pass
-
- def message_meter(self, meter, message):
- pass
-
- ########################################################
- # internal functions
- def _amount_read(self):
- tot = self.finished_file_size
- for m in self.in_progress_meters:
- tot += m.last_amount_read
- return tot
-
-
-class TextMultiFileMeter(MultiFileMeter):
- def __init__(self, fo=sys.stderr):
- self.fo = fo
- MultiFileMeter.__init__(self)
-
- # files: ###/### ###% data: ######/###### ###% time: ##:##:##/##:##:##
- def _do_update_meter(self, meter, now):
- self._lock.acquire()
- try:
- format = "files: %3i/%-3i %3i%% data: %6.6s/%-6.6s %3i%% " \
- "time: %8.8s/%8.8s"
- df = self.finished_files
- tf = self.numfiles or 1
- pf = 100 * float(df)/tf + 0.49
- dd = self.re.last_amount_read
- td = self.total_size
- pd = 100 * (self.re.fraction_read() or 0) + 0.49
- dt = self.re.elapsed_time()
- rt = self.re.remaining_time()
- if rt is None: tt = None
- else: tt = dt + rt
-
- fdd = format_number(dd) + 'B'
- ftd = format_number(td) + 'B'
- fdt = format_time(dt, 1)
- ftt = format_time(tt, 1)
-
- out = '%-79.79s' % (format % (df, tf, pf, fdd, ftd, pd, fdt, ftt))
- self.fo.write('\r' + out)
- self.fo.flush()
- finally:
- self._lock.release()
-
- def _do_end_meter(self, meter, now):
- self._lock.acquire()
- try:
- format = "%-30.30s %6.6s %8.8s %9.9s"
- fn = meter.basename
- size = meter.last_amount_read
- fsize = format_number(size) + 'B'
- et = meter.re.elapsed_time()
- fet = format_time(et, 1)
- frate = format_number(size / et) + 'B/s'
-
- out = '%-79.79s' % (format % (fn, fsize, fet, frate))
- self.fo.write('\r' + out + '\n')
- finally:
- self._lock.release()
- self._do_update_meter(meter, now)
-
- def _do_failure_meter(self, meter, message, now):
- self._lock.acquire()
- try:
- format = "%-30.30s %6.6s %s"
- fn = meter.basename
- if type(message) in types.StringTypes:
- message = message.splitlines()
- if not message: message = ['']
- out = '%-79s' % (format % (fn, 'FAILED', message[0] or ''))
- self.fo.write('\r' + out + '\n')
- for m in message[1:]: self.fo.write(' ' + m + '\n')
- self._lock.release()
- finally:
- self._do_update_meter(meter, now)
-
- def message_meter(self, meter, message):
- self._lock.acquire()
- try:
- pass
- finally:
- self._lock.release()
-
- def _do_end(self, now):
- self._do_update_meter(None, now)
- self._lock.acquire()
- try:
- self.fo.write('\n')
- self.fo.flush()
- finally:
- self._lock.release()
-
-######################################################################
-# support classes and functions
-
-class RateEstimator:
- def __init__(self, timescale=5.0):
- self.timescale = timescale
-
- def start(self, total=None, now=None):
- if now is None: now = time.time()
- self.total = total
- self.start_time = now
- self.last_update_time = now
- self.last_amount_read = 0
- self.ave_rate = None
-
- def update(self, amount_read, now=None):
- if now is None: now = time.time()
- if amount_read == 0:
- # if we just started this file, all bets are off
- self.last_update_time = now
- self.last_amount_read = 0
- self.ave_rate = None
- return
-
- #print 'times', now, self.last_update_time
- time_diff = now - self.last_update_time
- read_diff = amount_read - self.last_amount_read
- # First update, on reget is the file size
- if self.last_amount_read:
- self.last_update_time = now
- self.ave_rate = self._temporal_rolling_ave(\
- time_diff, read_diff, self.ave_rate, self.timescale)
- self.last_amount_read = amount_read
- #print 'results', time_diff, read_diff, self.ave_rate
-
- #####################################################################
- # result methods
- def average_rate(self):
- "get the average transfer rate (in bytes/second)"
- return self.ave_rate
-
- def elapsed_time(self):
- "the time between the start of the transfer and the most recent update"
- return self.last_update_time - self.start_time
-
- def remaining_time(self):
- "estimated time remaining"
- if not self.ave_rate or not self.total: return None
- return (self.total - self.last_amount_read) / self.ave_rate
-
- def fraction_read(self):
- """the fraction of the data that has been read
- (can be None for unknown transfer size)"""
- if self.total is None: return None
- elif self.total == 0: return 1.0
- else: return float(self.last_amount_read)/self.total
-
- #########################################################################
- # support methods
- def _temporal_rolling_ave(self, time_diff, read_diff, last_ave, timescale):
- """a temporal rolling average performs smooth averaging even when
- updates come at irregular intervals. This is performed by scaling
- the "epsilon" according to the time since the last update.
- Specifically, epsilon = time_diff / timescale
-
- As a general rule, the average will take on a completely new value
- after 'timescale' seconds."""
- epsilon = time_diff / timescale
- if epsilon > 1: epsilon = 1.0
- return self._rolling_ave(time_diff, read_diff, last_ave, epsilon)
-
- def _rolling_ave(self, time_diff, read_diff, last_ave, epsilon):
- """perform a "rolling average" iteration
- a rolling average "folds" new data into an existing average with
- some weight, epsilon. epsilon must be between 0.0 and 1.0 (inclusive)
- a value of 0.0 means only the old value (initial value) counts,
- and a value of 1.0 means only the newest value is considered."""
-
- try:
- recent_rate = read_diff / time_diff
- except ZeroDivisionError:
- recent_rate = None
- if last_ave is None: return recent_rate
- elif recent_rate is None: return last_ave
-
- # at this point, both last_ave and recent_rate are numbers
- return epsilon * recent_rate + (1 - epsilon) * last_ave
-
- def _round_remaining_time(self, rt, start_time=15.0):
- """round the remaining time, depending on its size
- If rt is between n*start_time and (n+1)*start_time round downward
- to the nearest multiple of n (for any counting number n).
- If rt < start_time, round down to the nearest 1.
- For example (for start_time = 15.0):
- 2.7 -> 2.0
- 25.2 -> 25.0
- 26.4 -> 26.0
- 35.3 -> 34.0
- 63.6 -> 60.0
- """
-
- if rt < 0: return 0.0
- shift = int(math.log(rt/start_time)/math.log(2))
- rt = int(rt)
- if shift <= 0: return rt
- return float(int(rt) >> shift << shift)
-
-
-def format_time(seconds, use_hours=0):
- if seconds is None or seconds < 0:
- if use_hours: return '--:--:--'
- else: return '--:--'
- else:
- seconds = int(seconds)
- minutes = seconds / 60
- seconds = seconds % 60
- if use_hours:
- hours = minutes / 60
- minutes = minutes % 60
- return '%02i:%02i:%02i' % (hours, minutes, seconds)
- else:
- return '%02i:%02i' % (minutes, seconds)
-
-def format_number(number, SI=0, space=' '):
- """Turn numbers into human-readable metric-like numbers"""
- symbols = ['', # (none)
- 'k', # kilo
- 'M', # mega
- 'G', # giga
- 'T', # tera
- 'P', # peta
- 'E', # exa
- 'Z', # zetta
- 'Y'] # yotta
-
- if SI: step = 1000.0
- else: step = 1024.0
-
- thresh = 999
- depth = 0
- max_depth = len(symbols) - 1
-
- # we want numbers between 0 and thresh, but don't exceed the length
- # of our list. In that event, the formatting will be screwed up,
- # but it'll still show the right number.
- while number > thresh and depth < max_depth:
- depth = depth + 1
- number = number / step
-
- if type(number) == type(1) or type(number) == type(1L):
- # it's an int or a long, which means it didn't get divided,
- # which means it's already short enough
- format = '%i%s%s'
- elif number < 9.95:
- # must use 9.95 for proper sizing. For example, 9.99 will be
- # rounded to 10.0 with the .1f format string (which is too long)
- format = '%.1f%s%s'
- else:
- format = '%.0f%s%s'
-
- return(format % (float(number or 0), space, symbols[depth]))
-
-def _tst(fn, cur, tot, beg, size, *args):
- tm = TextMeter()
- text = "(%d/%d): %s" % (cur, tot, fn)
- tm.start(fn, "http://www.example.com/path/to/fn/" + fn, fn, size, text=text)
- num = beg
- off = 0
- for (inc, delay) in args:
- off += 1
- while num < ((size * off) / len(args)):
- num += inc
- tm.update(num)
- time.sleep(delay)
- tm.end(size)
-
-if __name__ == "__main__":
- # (1/2): subversion-1.4.4-7.x86_64.rpm 2.4 MB / 85 kB/s 00:28
- # (2/2): mercurial-0.9.5-6.fc8.x86_64.rpm 924 kB / 106 kB/s 00:08
- if True:
- text_meter_total_size(1000 + 10000 + 10000 + 1000000 + 1000000 +
- 1000000 + 10000 + 10000 + 10000 + 1000000)
- _tst("sm-1.0.0-1.fc8.i386.rpm", 1, 10, 0, 1000,
- (10, 0.2), (10, 0.1), (100, 0.25))
- _tst("s-1.0.1-1.fc8.i386.rpm", 2, 10, 0, 10000,
- (10, 0.2), (100, 0.1), (100, 0.1), (100, 0.25))
- _tst("m-1.0.1-2.fc8.i386.rpm", 3, 10, 5000, 10000,
- (10, 0.2), (100, 0.1), (100, 0.1), (100, 0.25))
- _tst("large-file-name-Foo-11.8.7-4.5.6.1.fc8.x86_64.rpm", 4, 10, 0, 1000000,
- (1000, 0.2), (1000, 0.1), (10000, 0.1))
- _tst("large-file-name-Foo2-11.8.7-4.5.6.2.fc8.x86_64.rpm", 5, 10,
- 500001, 1000000, (1000, 0.2), (1000, 0.1), (10000, 0.1))
- _tst("large-file-name-Foo3-11.8.7-4.5.6.3.fc8.x86_64.rpm", 6, 10,
- 750002, 1000000, (1000, 0.2), (1000, 0.1), (10000, 0.1))
- _tst("large-file-name-Foo4-10.8.7-4.5.6.1.fc8.x86_64.rpm", 7, 10, 0, 10000,
- (100, 0.1))
- _tst("large-file-name-Foo5-10.8.7-4.5.6.2.fc8.x86_64.rpm", 8, 10,
- 5001, 10000, (100, 0.1))
- _tst("large-file-name-Foo6-10.8.7-4.5.6.3.fc8.x86_64.rpm", 9, 10,
- 7502, 10000, (100, 0.1))
- _tst("large-file-name-Foox-9.8.7-4.5.6.1.fc8.x86_64.rpm", 10, 10,
- 0, 1000000, (10, 0.5),
- (10000, 0.1), (10000, 0.1), (10000, 0.1), (10000, 0.1),
- (10000, 0.1), (10000, 0.1), (10000, 0.1), (10000, 0.1),
- (10000, 0.1), (10000, 0.1), (10000, 0.1), (10000, 0.1),
- (10000, 0.1), (10000, 0.1), (10000, 0.1), (10000, 0.1),
- (10000, 0.1), (10000, 0.25))