tor-commits
Threads by month
- ----- 2025 -----
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
August 2020
- 18 participants
- 1961 discussions

[translation/torbutton-branddtd_completed] https://gitweb.torproject.org/translation.git/commit/?h=torbutton-branddtd_completed
by translation@torproject.org 10 Aug '20
by translation@torproject.org 10 Aug '20
10 Aug '20
commit bdfaa9d13a2b6accb5229c619e180d05688508f6
Author: Translation commit bot <translation(a)torproject.org>
Date: Mon Aug 10 10:17:33 2020 +0000
https://gitweb.torproject.org/translation.git/commit/?h=torbutton-branddtd_…
---
mk/brand.dtd | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mk/brand.dtd b/mk/brand.dtd
index 41bb3fa017..7ecdafa4c5 100644
--- a/mk/brand.dtd
+++ b/mk/brand.dtd
@@ -10,7 +10,7 @@
<!-- LOCALIZATION NOTE (brandProductName):
This brand name can be used in messages where the product name needs to
remain unchanged across different versions (Nightly, Beta, etc.). -->
-<!ENTITY brandProductName "">
+<!ENTITY brandProductName "Tor Browser">
<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
<!ENTITY plugins.installed.find "Кликни за вчитување на инсталираните системски приклучоци">
1
0

[translation/torbutton-brandproperties_completed] https://gitweb.torproject.org/translation.git/commit/?h=torbutton-brandproperties_completed
by translation@torproject.org 10 Aug '20
by translation@torproject.org 10 Aug '20
10 Aug '20
commit 24d66b8d098552e66e49d5339f2e090e1b9202b5
Author: Translation commit bot <translation(a)torproject.org>
Date: Mon Aug 10 10:17:30 2020 +0000
https://gitweb.torproject.org/translation.git/commit/?h=torbutton-brandprop…
---
mk/brand.properties | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mk/brand.properties b/mk/brand.properties
index 7780b65c06..ccb79c2c63 100644
--- a/mk/brand.properties
+++ b/mk/brand.properties
@@ -8,7 +8,7 @@ brandFullName=Tor Browser
# LOCALIZATION NOTE(brandProductName):
# This brand name can be used in messages where the product name needs to
# remain unchanged across different versions (Nightly, Beta, etc.).
-# brandProductName=Tor Browser
+brandProductName=Tor Browser
vendorShortName=Tor Browser
homePageSingleStartMain=Firefox Старт, брза домашна страница со вграден пребарувач
1
0

[translation/tails-misc_release] https://gitweb.torproject.org/translation.git/commit/?h=tails-misc_release
by translation@torproject.org 10 Aug '20
by translation@torproject.org 10 Aug '20
10 Aug '20
commit c67b938d6d56b8af65f633792fd9b26afed9682e
Author: Translation commit bot <translation(a)torproject.org>
Date: Mon Aug 10 10:16:48 2020 +0000
https://gitweb.torproject.org/translation.git/commit/?h=tails-misc_release
---
mk.po | 32 ++++++++++++++++----------------
1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/mk.po b/mk.po
index f36c6a668f..fb2fbba094 100644
--- a/mk.po
+++ b/mk.po
@@ -12,8 +12,8 @@ msgstr ""
"Project-Id-Version: Tor Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-27 05:58+0200\n"
-"PO-Revision-Date: 2020-07-27 12:13+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"PO-Revision-Date: 2020-08-10 10:07+0000\n"
+"Last-Translator: Zarko Gjurov <zarkogjurov(a)gmail.com>\n"
"Language-Team: Macedonian (http://www.transifex.com/otf/torproject/language/mk/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -405,19 +405,19 @@ msgstr "Офлајн/Исклучен"
#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/additional_settings.py:333
msgid "_Unsafe Browser"
-msgstr ""
+msgstr "_Небезбеден Прелистувач"
#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/additional_settings.py:342
msgid "Enabled"
-msgstr ""
+msgstr "Овозможено"
#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/additional_settings.py:344
msgid "Disabled (default)"
-msgstr ""
+msgstr "Оневозможено (стандардно)"
#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/additional_settings.py:395
msgid "On (default)"
-msgstr "Уклучено (Стандардно)"
+msgstr "Уклучено (стандардно)"
#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/additional_settings.py:397
msgid "On"
@@ -429,7 +429,7 @@ msgstr "Исклучено"
#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/additional_settings.py:401
msgid "Off (default)"
-msgstr "Исклучено (Стандардно)"
+msgstr "Исклучено (стандардно)"
#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/settings/persistence.py:92
#, python-brace-format
@@ -658,13 +658,13 @@ msgstr "Чувај ги датотеките складирани во `Пост
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:70
msgid "Welcome Screen"
-msgstr ""
+msgstr "Екран за Добредојде"
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:72
msgid ""
"Beta: only the additional setting to enable the Unsafe Browser is made "
"persistent"
-msgstr ""
+msgstr "Бета: само дополнителната поставка за овозможување на Небезбедниот Прелистувач е направена постојана"
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:85
msgid "Browser Bookmarks"
@@ -1397,14 +1397,14 @@ msgstr "Избери контејнер датотека"
#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:38
msgid "Launch the Unsafe Browser?"
-msgstr ""
+msgstr "Стартувај го Небезбедниот Прелистувач?"
#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:40
msgid ""
"The Unsafe Browser is not anonymous and the websites that you visit can see "
"your real IP address.\\n\\nOnly use the Unsafe Browser to log in to a "
"captive portal or browse trusted web pages on the local network."
-msgstr ""
+msgstr "Небезбедниот Прелистувач не е анонимен и веб страните кои ги посетувате можат да ја видат вашата вистинска IP адреса.\\n\\nКористете го Небезбедниот Прелистувач за да се најавите на Најавувачки портал или да пребарувате доверливи веб страни на локалната мрежа."
#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:51
msgid "Starting the Unsafe Browser..."
@@ -1438,7 +1438,7 @@ msgstr "Небезбеден прелистувач"
msgid ""
"The Unsafe Browser was not enabled in the Welcome Screen.\\n\\nTo use the Unsafe Browser, restart Tails and enable the Unsafe Browser in the additional settings of the Welcome Screen.\\n\n"
"To always enable the Unsafe Browser, turn on the Welcome Screen feature of the Persistent Storage."
-msgstr ""
+msgstr "Небезбедниот Прелистувач беше оневозможен на Екранот за Добредојде.\\n\\nЗа да го користите Небезбедниот Прелистувач, повторно стартувајте го Tails и овозможете го Небезбедниот Прелистувач во дополнителните поставки на Екранот за Добредојде.\\n\nЗа секогаш да биде овозможен Небезбедниот Прелистувач, на Екранот за Добредојде вклучете ја опцијата за Постојан Склад."
#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:99
msgid ""
@@ -1628,19 +1628,19 @@ msgid ""
"A captive portal is a web page that is displayed before you can access the Internet. Captive portals usually require to log in to the network or enter information such as an email address.\n"
"\n"
"The Unsafe Browser is not anonymous and can deanonymize you. Use it only to log in to captive portals."
-msgstr ""
+msgstr "Небезбедниот Прелистувач ви дозволува да се најавите на најавувачки портал.\nНајавувачкиот портал е веб страна која е прикажана пред да можете да се поврзете на Интернет. Најавувачките портали обично бараат да се најавите на мрежата или да внесете информации како што е адреса за е-пошта.\n\nНебезбедниот Прелистувач не е анонимен и може да ве деанонимизира. Користете го само за најавување на најавувачки портали."
#: ../config/chroot_local-includes/usr/share/tails/greeter/additional_settings.ui.in:572
msgid "Disable the Unsafe Browser (default)"
-msgstr ""
+msgstr "Оневозможи го Небезбедниот Прелистувач (стандардно)"
#: ../config/chroot_local-includes/usr/share/tails/greeter/additional_settings.ui.in:617
msgid "Enable the Unsafe Browser"
-msgstr ""
+msgstr "Овозможи го Небезбедниот Прелистувач"
#: ../config/chroot_local-includes/usr/share/tails/greeter/main.ui.in:100
msgid "Settings were loaded from the persistent storage."
-msgstr ""
+msgstr "Поставките беа вчитани од постојаниот склад."
#: ../config/chroot_local-includes/usr/share/tails/greeter/main.ui.in:168
msgid ""
1
0

[translation/tails-misc_completed] https://gitweb.torproject.org/translation.git/commit/?h=tails-misc_completed
by translation@torproject.org 10 Aug '20
by translation@torproject.org 10 Aug '20
10 Aug '20
commit 41915e130646374b01e94427e6936c31fe0b94c0
Author: Translation commit bot <translation(a)torproject.org>
Date: Mon Aug 10 10:16:07 2020 +0000
https://gitweb.torproject.org/translation.git/commit/?h=tails-misc_completed
---
mk.po | 1739 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 1739 insertions(+)
diff --git a/mk.po b/mk.po
new file mode 100644
index 0000000000..fb2fbba094
--- /dev/null
+++ b/mk.po
@@ -0,0 +1,1739 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Translators:
+# Emma Peel, 2019
+# Matej Plavevski <matej.plavevski+github(a)gmail.com>, 2019
+# Nena <nena100janovska(a)gmail.com>, 2019
+# Zarko Gjurov <zarkogjurov(a)gmail.com>, 2019-2020
+msgid ""
+msgstr ""
+"Project-Id-Version: Tor Project\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-07-27 05:58+0200\n"
+"PO-Revision-Date: 2020-08-10 10:07+0000\n"
+"Last-Translator: Zarko Gjurov <zarkogjurov(a)gmail.com>\n"
+"Language-Team: Macedonian (http://www.transifex.com/otf/torproject/language/mk/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: mk\n"
+"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
+
+#: config/chroot_local-includes/etc/NetworkManager/dispatcher.d/60-tor-ready.sh:42
+msgid "Tor is ready"
+msgstr "Tor е подготвен"
+
+#: config/chroot_local-includes/etc/NetworkManager/dispatcher.d/60-tor-ready.sh:43
+msgid "You can now access the Internet."
+msgstr "Сега можете да пристапите на Интернет."
+
+#: config/chroot_local-includes/etc/whisperback/config.py:69
+#, python-format
+msgid ""
+"<h1>Help us fix your bug!</h1>\n"
+"<p>Read <a href=\"%s\">our bug reporting instructions</a>.</p>\n"
+"<p><strong>Do not include more personal information than\n"
+"needed!</strong></p>\n"
+"<h2>About giving us an email address</h2>\n"
+"<p>\n"
+"Giving us an email address allows us to contact you to clarify the problem. This\n"
+"is needed for the vast majority of the reports we receive as most reports\n"
+"without any contact information are useless. On the other hand it also provides\n"
+"an opportunity for eavesdroppers, like your email or Internet provider, to\n"
+"confirm that you are using Tails.\n"
+"</p>\n"
+msgstr "<h1>Помогнете ни да ја поправиме вашата грешка!</h1>\n<p>Прочитајте ги <a href=\"%s\">нашите инструкции за пријавување на грешка</a>.</p>\n<p><strong>Не вклучувај лични информации повеќе отколку што е потребно!</strong></p>\n<h2>За да ни дадете адреса за е-пошта</h2>\n<p>\nСо давањето на адреса за е-пошта ни овозможувате да ве контактираме за да го појасниме проблемот. Ова\nе потребно за огромното мнозинство на извештаи кои ги добиваме а најголемиот број на извештаи\nбез информации за контакт се бескорисни. Од друга страна тоа исто така им дава\nможност на прислушувачите,
како вашата е-пошта или Интернет провајдерот, да\nпотврдат дека користите Tails.\n</p>\n"
+
+#: config/chroot_local-includes/usr/share/tails/additional-software/configuration-window.ui:8
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:115
+#: ../config/chroot_local-includes/usr/share/applications/org.boum.tails.additional-software-config.desktop.in.h:1
+msgid "Additional Software"
+msgstr "Дополнителен софтвер"
+
+#: config/chroot_local-includes/usr/share/tails/additional-software/configuration-window.ui:51
+msgid ""
+"You can install additional software automatically from your persistent "
+"storage when starting Tails."
+msgstr "Може да инсталирате дополнителен софтвер автоматски од вашиот постојан склад кога се стартува Tails."
+
+#: config/chroot_local-includes/usr/share/tails/additional-software/configuration-window.ui:77
+msgid ""
+"The following software is installed automatically from your persistent "
+"storage when starting Tails."
+msgstr "Следниот софтвер е инсталиран автоматски од вашиот постојан склад кога се стартува Tails."
+
+#: config/chroot_local-includes/usr/share/tails/additional-software/configuration-window.ui:135
+#: config/chroot_local-includes/usr/local/bin/tails-additional-software-config:171
+msgid ""
+"To add more, install some software using <a "
+"href=\"synaptic.desktop\">Synaptic Package Manager</a> or <a "
+"href=\"org.gnome.Terminal.desktop\">APT on the command line</a>."
+msgstr "За да додадете повеќе, инсталирајте некој софтвер користејќи <a href=\"synaptic.desktop\">Синаптичен пакет менаџер</a> или <a href=\"org.gnome.Terminal.desktop\">APT на командната линија</a>."
+
+#: config/chroot_local-includes/usr/share/tails/additional-software/configuration-window.ui:154
+msgid "_Create persistent storage"
+msgstr "_Создади постојан склад"
+
+#: config/chroot_local-includes/usr/local/bin/electrum:62
+msgid "Persistence is disabled for Electrum"
+msgstr "Постојаноста е оневозможена за Electrum"
+
+#: config/chroot_local-includes/usr/local/bin/electrum:64
+msgid ""
+"When you reboot Tails, all of Electrum's data will be lost, including your Bitcoin wallet.\n"
+"It is strongly recommended to only run Electrum when its persistence feature is activated."
+msgstr "Кога го ребутирате Tails, сите податоци за Electrum ќе бидат изгубени, вклучувајќи го и вашиот Биткоин паричник.\nСилно се препорачува да се стартува Electrum кога неговата постојана карактеристика е активирана."
+
+#: config/chroot_local-includes/usr/local/bin/electrum:65
+msgid "Do you want to start Electrum anyway?"
+msgstr "Дали сепак сакаш да го стартуваш Electrum?"
+
+#: config/chroot_local-includes/usr/local/bin/electrum:68
+#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:41
+msgid "_Launch"
+msgstr "_Лансирање"
+
+#: config/chroot_local-includes/usr/local/bin/electrum:69
+#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:42
+msgid "_Exit"
+msgstr "_Излез"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:178
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:611
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:794
+msgid ""
+"For debugging information, execute the following command: sudo tails-"
+"debugging-info"
+msgstr "За информации за отстранување на грешки, извршете ја оваа команда: sudo tails-debugging-info"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:244
+msgid ""
+"<b>An error occured while updating the signing key.</b>\\n\\n<b>This "
+"prevents determining whether an upgrade is available from our "
+"website.</b>\\n\\nCheck your network connection, and restart Tails to try "
+"upgrading again.\\n\\nIf the problem persists, go to "
+"file:///usr/share/doc/tails/website/doc/upgrade/error/check.en.html"
+msgstr "<b>Се појави грешка за време на ажурирањето на сертфикациониот клуч.</b> \\n\\n<b>Ова спречува утрврдување на тоа дали ажурирање/надоградба е достапна нашата веб страна во моментот.</b>\\n\\nПроверете го вашето интернет поврзување, и повторно стартувајте го Tails за да пробате да ажурирате повторно.\\n\\nАко проблемот сеуште постои, одете на file:///usr/share/doc/tails/website/doc/upgrade/error/check.en.html"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:250
+msgid "Error while updating the signing key"
+msgstr "Грешка при ажурирање на сертификациониот клуч"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:279
+msgid "Error while checking for upgrades"
+msgstr "Грешка при проверката за ажурирања"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:282
+msgid ""
+"<b>Could not determine whether an upgrade is available from our website.</b>\n"
+"\n"
+"Check your network connection, and restart Tails to try upgrading again.\n"
+"\n"
+"If the problem persists, go to file:///usr/share/doc/tails/website/doc/upgrade/error/check.en.html"
+msgstr "<b>Не можеше да одреди дали ажурирањето е достапно од нашата веб страна.</b>\n\nПроверете го вашето мрежно поврзување, и повторно старувајте го Tails за да се обиде да се ажурира повторно.\n\nАко проблемот и понатаму го има, одете во file:///usr/share/doc/tails/website/doc/upgrade/error/check.en.html"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:297
+msgid "no automatic upgrade is available from our website for this version"
+msgstr "нема достапно автоматско ажурирање за оваа верзија на нашата веб страна"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:303
+msgid "your device was not created using a USB image or Tails Installer"
+msgstr "твојот уред не беше создаден со користење на USB слика или со Tails Installer"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:308
+msgid "Tails was started from a DVD or a read-only device"
+msgstr "Tails беше стартуван од ДВД или од само-читај уред"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:313
+msgid "there is not enough free space on the Tails system partition"
+msgstr "нема доволно слободен простор на Tails систем партицијата"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:318
+msgid "not enough memory is available on this system"
+msgstr "нема достапно доволно меморија на овој систем"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:324
+#, perl-brace-format
+msgid "No explanation available for reason '%{reason}s'."
+msgstr "Нема достапно објаснување за причината '%{reason}s'"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:346
+msgid "The system is up-to-date"
+msgstr "Ситемот е ажуриран"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:351
+msgid "This version of Tails is outdated, and may have security issues."
+msgstr "Оваа верзија на Tails е застарена, и може да има безбедносни проблеми."
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:383
+#, perl-brace-format
+msgid ""
+"The available incremental upgrade requires %{space_needed}s of free space on"
+" Tails system partition, but only %{free_space}s is available."
+msgstr "Достапното делумно ажурирање бара %{space_needed}s од слободниот простор на Tails систем партицијата, но само %{free_space}s е достапен."
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:399
+#, perl-brace-format
+msgid ""
+"The available incremental upgrade requires %{memory_needed}s of free memory,"
+" but only %{free_memory}s is available."
+msgstr "Достапното делумно ажурирање бара %{memory_needed}s од слободната меморија, но само %{free_memory}s е достапна."
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:421
+msgid ""
+"An incremental upgrade is available, but no full upgrade is.\n"
+"This should not happen. Please report a bug."
+msgstr "Делумното ажурирање е достапно, но не и целосното ажурирање.\nОва не би требало да се случи. Ве молиме пријавете грешка."
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:425
+msgid "Error while detecting available upgrades"
+msgstr "Грешка за време на детектирањето на достапни ажурирања"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:435
+#, perl-brace-format
+msgid ""
+"<b>You should upgrade to %{name}s %{version}s.</b>\n"
+"\n"
+"For more information about this new version, go to %{details_url}s\n"
+"\n"
+"We recommend you close all other applications during the upgrade.\n"
+"Downloading the upgrade might take a long time, from several minutes to a few hours.\n"
+"\n"
+"Download size: %{size}s\n"
+"\n"
+"Do you want to upgrade now?"
+msgstr "<b>Вие треба да ажурирате во %{name}s %{version}s.</b>\n\nЗа повеќе информации за оваа нова верзија, одете на %{details_url}s\n\nВи препорачуваме да ги затворите другите апликации за време на ажурирањето. Преземањето на ажурирањето може да потрае долго време, од неколку минути до неколку часа.\n\nГолемина на преземањето: %{size}s\n\nДали сакате да ажурирате сега?"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:449
+msgid "Upgrade available"
+msgstr "Ажурирање достапно"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:450
+msgid "Upgrade now"
+msgstr "Ажурирај сега"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:451
+msgid "Upgrade later"
+msgstr "Ажурирај подоцна"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:459
+#, perl-brace-format
+msgid ""
+"<b>You should do a manual upgrade to %{name}s %{version}s.</b>\n"
+"\n"
+"For more information about this new version, go to %{details_url}s\n"
+"\n"
+"It is not possible to automatically upgrade your device to this new version: %{explanation}s.\n"
+"\n"
+"To learn how to do a manual upgrade, go to https://tails.boum.org/doc/upgrade/#manual"
+msgstr "<b>Треба да направите рачна надградба во %{name}s %{version}s. </b>\n\nЗа повеќе информации за новата верзија, одете во %{details_url}s\n\nНе е можно автоматско надградување на вашиот уред во оваа нова верзија: %{explanation}s.\n\nЗа да научите како да направите рачна надградба, одете на https://tails.boum.org/doc/upgrade/#manual"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:475
+msgid "New version available"
+msgstr "Достапна е нова верзија"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:556
+msgid "Downloading upgrade"
+msgstr "Преземање на ажурирање"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:559
+#, perl-brace-format
+msgid "Downloading the upgrade to %{name}s %{version}s..."
+msgstr "Преземање на ажурирањето во %{name}s %{version}s..."
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:600
+msgid ""
+"<b>The upgrade could not be downloaded.</b>\\n\\nCheck your network "
+"connection, and restart Tails to try upgrading again.\\n\\nIf the problem "
+"persists, go to "
+"file:///usr/share/doc/tails/website/doc/upgrade/error/download.en.html"
+msgstr "<b>Ажурирањето не можеше да биде преземено.</b>\\n\\nПроверете го вашето мрежно поврзување, и повторно стартувајте го Tails за да пробате повторно да го ажурирате.\\n\\nАко проблемот сеуште го има, одете во file:///usr/share/doc/tails/website/doc/upgrade/error/download.en.html"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:616
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:635
+msgid "Error while downloading the upgrade"
+msgstr "Грешка за време на преземање на ажурирањето"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:628
+#, perl-brace-format
+msgid ""
+"Output file '%{output_file}s' does not exist, but tails-iuk-get-target-file "
+"did not complain. Please report a bug."
+msgstr "Излезната датотека '%{output_file}s' не постои, но ails-iuk-get-target-file не се пожали. Ве молиме пријавете грешка."
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:647
+msgid "Error while creating temporary downloading directory"
+msgstr "Грешка за време на создавање на привремениот директориум за преземање"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:650
+msgid "Failed to create temporary download directory"
+msgstr "Не успеа создавањето на привремен директориум за преземање"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:674
+msgid ""
+"<b>Could not choose a download server.</b>\n"
+"\n"
+"This should not happen. Please report a bug."
+msgstr "<b>Не можеше да избере сервер за преземање.</b>\n\nОва не би требало да се случи. Ве молиме пријавете грешка."
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:678
+msgid "Error while choosing a download server"
+msgstr "Грешка за време на избирање на сервер за преземање"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:693
+msgid ""
+"The upgrade was successfully downloaded.\n"
+"\n"
+"The network connection will now be disabled.\n"
+"\n"
+"Please save your work and close all other applications."
+msgstr "Ажурирањето беше успешно преземено.\n\nМрежното поврзување нема да биде оневозможено.\n\nВе молиме зачувајте ја вашата работа и затворете ги сите други апликации."
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:699
+msgid "Upgrade successfully downloaded"
+msgstr "Ажурирањето беше успешно преземено"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:701
+msgid "Apply upgrade"
+msgstr "Примени ажурирање"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:708
+msgid ""
+"<b>Your Tails device was successfully upgraded.</b>\n"
+"\n"
+"Some security features were temporarily disabled.\n"
+"You should restart Tails on the new version as soon as possible.\n"
+"\n"
+"Do you want to restart now?"
+msgstr "<b>Твојот Tails уред беше успешно ажуриран.</b>\n\nНекои бебедносни својства беа привремено оневозможени.\nТреба повторно да го стартуваш Tails на оваа нова верзија што е можно поскоро.\n\nДали сакаш да го стартуваш повторно сега?"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:713
+msgid "Restart Tails"
+msgstr "Повторно стартување на Tails"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:714
+msgid "Restart now"
+msgstr "Повторно стартувај сега"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:715
+msgid "Restart later"
+msgstr "Повторно стартувај подоцна"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:726
+msgid "Error while restarting the system"
+msgstr "Грешка при повторното стартување на системот"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:729
+msgid "Failed to restart the system"
+msgstr "Не успеа повторното стартување на системот"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:744
+msgid "Error while shutting down the network"
+msgstr "Грешка при исклучувањето на мрежата"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:747
+msgid "Failed to shutdown network"
+msgstr "Не успеа исклучувањето на мрежата"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:754
+msgid "Upgrading the system"
+msgstr "Ажурирање на системот"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:756
+msgid ""
+"<b>Your Tails device is being upgraded...</b>\n"
+"\n"
+"For security reasons, the networking is now disabled."
+msgstr "<b>Твојот Tails уред беше ажуриран...</b>\n\nОд безбедносни причини, поврзувањето на мрежата не е оневозможено."
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:789
+msgid ""
+"<b>An error occured while installing the upgrade.</b>\\n\\nYour Tails device"
+" needs to be repaired and might be unable to restart.\\n\\nPlease follow the"
+" instructions at "
+"file:///usr/share/doc/tails/website/doc/upgrade/error/install.en.html"
+msgstr "<b>Настана грешка при инсталирањето на ажурирањето.</b>\\n\\nТвојот Tails уре треба да биде поправен и може да не може да биде повторно стартуван.\\n\\nВе молиме следете ги инструкциите на file:///usr/share/doc/tails/website/doc/upgrade/error/install.en.html"
+
+#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:799
+msgid "Error while installing the upgrade"
+msgstr "Грешка за време инсталирање на ажурирањето"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/add_settings_dialog.py:32
+msgid "Additional Settings"
+msgstr "Дополнителни поставки"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/add_settings_dialog.py:40
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:366
+#: config/chroot_local-includes/usr/local/bin/tails-screen-locker:119
+#: config/chroot_local-includes/usr/local/bin/tor-browser:49
+msgid "Cancel"
+msgstr "Откажи"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/add_settings_dialog.py:46
+msgid "Add"
+msgstr "Додади"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/add_settings_dialog.py:54
+msgid "Back"
+msgstr "Назад"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/additional_settings.py:64
+msgid "_Administration Password"
+msgstr "_Администраторска Лозинка"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/additional_settings.py:187
+msgid "_MAC Address Spoofing"
+msgstr "_Спуфирање на MAC адреса"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/additional_settings.py:250
+msgid "_Network Connection"
+msgstr "_Мрежно поврзување"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/additional_settings.py:259
+msgid "Direct (default)"
+msgstr "Директно (стандардно)"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/additional_settings.py:261
+msgid "Bridge & Proxy"
+msgstr "Мост и Прокси"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/additional_settings.py:263
+msgid "Offline"
+msgstr "Офлајн/Исклучен"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/additional_settings.py:333
+msgid "_Unsafe Browser"
+msgstr "_Небезбеден Прелистувач"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/additional_settings.py:342
+msgid "Enabled"
+msgstr "Овозможено"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/additional_settings.py:344
+msgid "Disabled (default)"
+msgstr "Оневозможено (стандардно)"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/additional_settings.py:395
+msgid "On (default)"
+msgstr "Уклучено (стандардно)"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/additional_settings.py:397
+msgid "On"
+msgstr "Уклучено"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/additional_settings.py:399
+msgid "Off"
+msgstr "Исклучено"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/additional_settings.py:401
+msgid "Off (default)"
+msgstr "Исклучено (стандардно)"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/settings/persistence.py:92
+#, python-brace-format
+msgid ""
+"live-persist failed with return code {returncode}:\n"
+"{stderr}"
+msgstr "живо-постојаното не успеа со повратниот код {returncode}:\n{stderr}"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/settings/persistence.py:125
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/settings/persistence.py:142
+#, python-brace-format
+msgid ""
+"cryptsetup failed with return code {returncode}:\n"
+"{stdout}\n"
+"{stderr}"
+msgstr "cryptsetup не успеа со повратен код {returncode}:\n{stdout}\n{stderr}"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/settings/persistence.py:160
+#, python-brace-format
+msgid ""
+"live-persist failed with return code {returncode}:\n"
+"{stdout}\n"
+"{stderr}"
+msgstr "живо-постојаното не успеа со повратен код {returncode}:\n{stdout}\n{stderr}"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/settings/persistence.py:174
+#, python-brace-format
+msgid ""
+"umount failed with return code {returncode}:\n"
+"{stdout}\n"
+"{stderr}"
+msgstr "демонтирањето не успеа со повратен код {returncode}:\n{stdout}\n{stderr}"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/persistent_storage.py:66
+msgid "Unlocking…"
+msgstr "Отклучување..."
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/persistent_storage.py:94
+#: ../config/chroot_local-includes/usr/share/tails/greeter/main.ui.in:462
+msgid "Unlock"
+msgstr "Отклучи"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/persistent_storage.py:99
+#: ../config/chroot_local-includes/usr/share/tails/greeter/main.ui.in:40
+msgid "Cannot unlock encrypted storage with this passphrase."
+msgstr "Не може да се отклучи енкриптираниот скалд со оваа лозинка"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/region_settings.py:164
+msgid "_Language"
+msgstr "_Јазик"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/region_settings.py:207
+msgid "_Formats"
+msgstr "_Формати"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/region_settings.py:244
+msgid "_Keyboard Layout"
+msgstr "_Распоред на тастатура"
+
+#: config/chroot_local-includes/usr/local/bin/keepassxc:15
+#, sh-format
+msgid ""
+"<b><big>Do you want to rename your <i>KeePassXC</i> database?</big></b>\n"
+"\n"
+"You have a <i>KeePassXC</i> database in your <i>Persistent</i> folder:\n"
+"\n"
+"<i>${filename}</i>\n"
+"\n"
+"Renaming it to <i>keepassx.kdbx</i> would allow <i>KeePassXC</i> to open it automatically in the future."
+msgstr "<b><big>Дали сакате да ја преименувате вашата <i>KeePassXC</i> база на податоци?</big></b>\n\nИмате <i>KeePassXC</i> база на податоци во вашата <i>Постојана</i>папка:\n\n<i>${filename}</i>\n\nПреименувањето во <i>keepassx.kdbx</i>ќе дозволи <i>KeePassXC</i> да биде отворано автоматски во иднина."
+
+#: config/chroot_local-includes/usr/local/bin/keepassxc:23
+msgid "Rename"
+msgstr "Преименување"
+
+#: config/chroot_local-includes/usr/local/bin/keepassxc:24
+msgid "Keep current name"
+msgstr "Задржи го моменталното име"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Bootstrap.pm:96
+msgid "Persistence wizard - Persistent volume creation"
+msgstr "Волшебник за Постојаност - Создавање на Постојан простор"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Bootstrap.pm:99
+msgid "Choose a passphrase to protect the persistent volume"
+msgstr "Изберете лозинка за да го заштитите постојаниот простор"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Bootstrap.pm:103
+#, perl-format
+msgid ""
+"A %s persistent volume will be created on the <b>%s %s</b> device. Data on "
+"this volume will be stored in an encrypted form protected by a passphrase."
+msgstr "Постојаниот простор %s ќе биде создаден на <b>%s%s</b>уред. Податоците за овој простор ќе бидат складирани во енкриптирана форма заштитени со лозинка."
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Bootstrap.pm:108
+msgid "Create"
+msgstr "Создади"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Bootstrap.pm:151
+msgid ""
+"<b>Beware!</b> Using persistence has consequences that must be well "
+"understood. Tails can't help you if you use it wrong! See the <i>Encrypted "
+"persistence</i> page of the Tails documentation to learn more."
+msgstr "<b>Пазете се!</b> Користењето на постојаност има последици кои мора добро да ги разберете. Tails не може да ви помогне ако го корисите погрешно! Видете ја страната <i>Енкриптирана постојаност</i>во документацијата за Tails за да научите повеќе."
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Bootstrap.pm:179
+msgid "Passphrase:"
+msgstr "Лозинка:"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Bootstrap.pm:187
+msgid "Verify Passphrase:"
+msgstr "Верфикувајте ја лозинката:"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Bootstrap.pm:198
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Bootstrap.pm:266
+msgid "Passphrase can't be empty"
+msgstr "Полето за лозинка не може да биде празно"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Bootstrap.pm:233
+#: ../config/chroot_local-includes/usr/share/tails/greeter/main.ui.in:394
+msgid "Show Passphrase"
+msgstr "Покажи лозинка"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Bootstrap.pm:257
+msgid "Passphrases do not match"
+msgstr "Лозинките не се исти"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Bootstrap.pm:312
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Configure.pm:181
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Delete.pm:103
+msgid "Failed"
+msgstr "Не успеа"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Bootstrap.pm:320
+msgid "Mounting Tails persistence partition."
+msgstr "Монтирање на Tails постојана партиција."
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Bootstrap.pm:323
+msgid "The Tails persistence partition will be mounted."
+msgstr "Tails постојаната партицијата ќе биде монтирана."
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Bootstrap.pm:332
+msgid "Correcting permissions of the persistent volume."
+msgstr "Собирање на дозволи од постојаниот простор."
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Bootstrap.pm:335
+msgid "The permissions of the persistent volume will be corrected."
+msgstr "Дозволите од постојаниот простор ќе бидат поправени."
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Bootstrap.pm:343
+msgid "Creating default persistence configuration."
+msgstr "Создавање на стандардна постојана конфигурација."
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Bootstrap.pm:346
+msgid "The default persistence configuration will be created."
+msgstr "Стандардната постојана конфигурација ќе биде создадедна."
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Bootstrap.pm:361
+msgid "Creating..."
+msgstr "Создавање..."
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Bootstrap.pm:364
+msgid "Creating the persistent volume..."
+msgstr "Создавање на постојаниот простор..."
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Configure.pm:88
+msgid "Persistence wizard - Persistent volume configuration"
+msgstr "Волшебник за Постојаност - Конфигурирање на Постојан простор"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Configure.pm:91
+msgid "Specify the files that will be saved in the persistent volume"
+msgstr "Наведи ги датотеките кои ќе бидат зачувани на постојаниот простор"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Configure.pm:95
+#, perl-format
+msgid ""
+"The selected files will be stored in the encrypted partition %s (%s), on the"
+" <b>%s %s</b> device."
+msgstr "Избраните датотеки ќе бидат складирани во енкриптираната партиција %s (%s), на <b>%s%s</b> уредот."
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Configure.pm:101
+msgid "Save"
+msgstr "Зачувај"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Configure.pm:195
+msgid "Saving..."
+msgstr "Зачувување..."
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Configure.pm:198
+msgid "Saving persistence configuration..."
+msgstr "Зачувување на постојана конфигурација..."
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Delete.pm:53
+msgid "Persistence wizard - Persistent volume deletion"
+msgstr "Волшебник за Постојаност - Бришење на Постојан простор"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Delete.pm:56
+msgid "Your persistent data will be deleted."
+msgstr "Вашите постојани податоци ќе бидат избришани."
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Delete.pm:60
+#, perl-format
+msgid ""
+"The persistent volume %s (%s), on the <b>%s %s</b> device, will be deleted."
+msgstr "Постојаниот простор %s (%s), на <b>%s%s</b> уред, ќе биде избришан."
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Delete.pm:66
+msgid "Delete"
+msgstr "Избриши"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Delete.pm:117
+msgid "Deleting..."
+msgstr "Бришење..."
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Delete.pm:120
+msgid "Deleting the persistent volume..."
+msgstr "Бришење на постојаниот простор..."
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:55
+msgid "Personal Data"
+msgstr "Лични податоци"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:57
+msgid "Keep files stored in the `Persistent' directory"
+msgstr "Чувај ги датотеките складирани во `Постојаниот' директориум"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:70
+msgid "Welcome Screen"
+msgstr "Екран за Добредојде"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:72
+msgid ""
+"Beta: only the additional setting to enable the Unsafe Browser is made "
+"persistent"
+msgstr "Бета: само дополнителната поставка за овозможување на Небезбедниот Прелистувач е направена постојана"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:85
+msgid "Browser Bookmarks"
+msgstr "Облежувачи на прелистувачот"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:87
+msgid "Bookmarks saved in the Tor Browser"
+msgstr "Обележувачите се зачувани во Tor прелистувачот"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:100
+msgid "Network Connections"
+msgstr "Поврзување на мрежа"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:102
+msgid "Configuration of network devices and connections"
+msgstr "Конфигурирање на мрежните уреди и поврзувања"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:117
+msgid "Software installed when starting Tails"
+msgstr "Софтверот е инсталиран кога Tails е стартуван"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:135
+msgid "Printers"
+msgstr "Печатачи"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:137
+msgid "Printers configuration"
+msgstr "Конфигурирање на печатачи"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:150
+msgid "Thunderbird"
+msgstr "Thunderbird"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:152
+msgid "Thunderbird emails, feeds, and settings"
+msgstr "Thunderbird е-пошти, тековници, и поставки"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:165
+msgid "GnuPG"
+msgstr "GnuPG"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:167
+msgid "GnuPG keyrings and configuration"
+msgstr "GnuPG привезоци и конфигурација"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:180
+msgid "Bitcoin Client"
+msgstr "Биткоин клиент"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:182
+msgid "Electrum's bitcoin wallet and configuration"
+msgstr "Биткоин паричник и конфигурирање на Electrum"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:195
+msgid "Pidgin"
+msgstr "Pidgin"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:197
+msgid "Pidgin profiles and OTR keyring"
+msgstr "Pidgin профили и OTR привезок"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:210
+msgid "SSH Client"
+msgstr "SSH клиент"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:212
+msgid "SSH keys, configuration and known hosts"
+msgstr "SSH клучеви, конфигурација и познати хостови"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:225
+msgid "Dotfiles"
+msgstr "Дотдатотеки"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:227
+msgid ""
+"Symlink into $HOME every file or directory found in the `dotfiles' directory"
+msgstr "Symlink во $HOME секоја датотека или директориум пронајдени во `дотдатотеки' директориумот"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Setting.pm:113
+msgid "Custom"
+msgstr "Прилагодено"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:265
+msgid "Setup Tails persistent volume"
+msgstr "Поставување на постојан простор на Tails"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:343
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:481
+#: config/chroot_local-includes/usr/src/perl5lib/lib/Tails/RunningSystem.pm:223
+#: config/chroot_local-includes/usr/local/bin/tails-upgrade-frontend-wrapper:74
+#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:28
+msgid "Error"
+msgstr "Грешка"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:372
+#, perl-format
+msgid "Device %s already has a persistent volume."
+msgstr "Уредот %s веќе има постојан простор."
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:380
+#, perl-format
+msgid "Device %s has not enough unallocated space."
+msgstr "Уредот %sнема долволно нераспределен простор."
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:387
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:401
+#, perl-format
+msgid "Device %s has no persistent volume."
+msgstr "Уредот %sнема постојан простор."
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:393
+#, perl-format
+msgid ""
+"Cannot delete the persistent volume on %s while in use. You should restart "
+"Tails without persistence."
+msgstr "Не може да биде избришан постојаниот простор на %s додека е во употреба. Треба да го ребутирате Tails без постојаност."
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:407
+#, perl-format
+msgid "Persistence volume on %s is not unlocked."
+msgstr "Постојаноста на просторот на %s не е отклучена."
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:412
+#, perl-format
+msgid "Persistence volume on %s is not mounted."
+msgstr "Постојаниот простор на %s не е монтиран."
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:417
+#, perl-format
+msgid ""
+"Persistence volume on %s is not readable. Permissions or ownership problems?"
+msgstr "Постојаниот простор на %s не е вчитлив. Дозволи или проблеми со сопственоста?"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:422
+#, perl-format
+msgid "Persistence volume on %s is not writable."
+msgstr "Постојаниот простор на %s не е впишлив."
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:431
+#, perl-format
+msgid "Tails is running from non-USB / non-SDIO device %s."
+msgstr "Tails е стартуван од не-USB / не-SDIO уред %s."
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:437
+#, perl-format
+msgid "Device %s is optical."
+msgstr "Уредот %s е оптички."
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:444
+#, perl-format
+msgid "Device %s was not created using a USB image or Tails Installer."
+msgstr "Уредот %s не беше создаден со користење на USB слика или со Tails Installer."
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:688
+msgid "Persistence wizard - Finished"
+msgstr "Волшебник за Постојаност - Завршенo"
+
+#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:691
+msgid ""
+"Any changes you have made will only take effect after restarting Tails.\n"
+"\n"
+"You may now close this application."
+msgstr "Сите промени кои ќе ги превземете ќе имаат ефект само откако повторно ќе го стартувате Tails.\n\nСега можете да ја затворите апикацијата."
+
+#: config/chroot_local-includes/usr/local/bin/replace-su-with-sudo:19
+msgid "su is disabled. Please use sudo instead."
+msgstr "su е оневозможен. Ве молиме користете sudo"
+
+#: config/chroot_local-includes/usr/src/perl5lib/lib/Tails/RunningSystem.pm:225
+msgid ""
+"The device Tails is running from cannot be found. Maybe you used the 'toram'"
+" option?"
+msgstr "Уредот од кој работи Tails не може да биде пронајден. Можеби ја користите 'toram' опцијата?"
+
+#: config/chroot_local-includes/usr/src/perl5lib/lib/Tails/RunningSystem.pm:253
+msgid ""
+"The drive Tails is running from cannot be found. Maybe you used the 'toram' "
+"option?"
+msgstr "Дискот од кој работи Tails не може да биде пронајден. Можеби ја користите 'toram' опцијата?"
+
+#: config/chroot_local-includes/usr/local/lib/seahorse-tool-wrapper:42
+msgid "Import Failed"
+msgstr "Увозот беше неуспешен"
+
+#. Translators: Don't translate {path} or {error},
+#. they are placeholders and will be replaced.
+#: config/chroot_local-includes/usr/local/lib/seahorse-tool-wrapper:45
+#, python-brace-format
+msgid ""
+"Failed to import keys from {path}:\n"
+"{error}"
+msgstr "Не успеа увезувањето на клучеви од {path}:\n{error}"
+
+#: config/chroot_local-includes/usr/local/lib/seahorse-tool-wrapper:53
+msgid "Key Imported"
+msgid_plural "Keys Imported"
+msgstr[0] "Клучот е увезен"
+msgstr[1] "Клучевите се увезени"
+
+#. Translators: Don't translate {uids}, it's a placeholder and
+#. will be replaced.
+#: config/chroot_local-includes/usr/local/lib/seahorse-tool-wrapper:56
+#, python-brace-format
+msgid "Imported a key for {uids}"
+msgid_plural "Imported keys for {uids}"
+msgstr[0] "Увезен клуч за {uids}"
+msgstr[1] "Увезени клучеви за {uids}"
+
+#: config/chroot_local-includes/usr/share/gnome-shell/extensions/status-menu-helper@tails.boum.org/extension.js:75
+msgid "Lock screen"
+msgstr "Екран за заклучување"
+
+#: config/chroot_local-includes/usr/share/gnome-shell/extensions/status-menu-helper@tails.boum.org/extension.js:79
+msgid "Suspend"
+msgstr "Суспендирано"
+
+#: config/chroot_local-includes/usr/share/gnome-shell/extensions/status-menu-helper@tails.boum.org/extension.js:83
+msgid "Restart"
+msgstr "Повторно стартувај"
+
+#: config/chroot_local-includes/usr/share/gnome-shell/extensions/status-menu-helper@tails.boum.org/extension.js:87
+msgid "Power Off"
+msgstr "Исклучување"
+
+#: config/chroot_local-includes/usr/local/bin/tails-about:22
+#: ../config/chroot_local-includes/usr/share/desktop-directories/Tails.directory.in.h:1
+msgid "Tails"
+msgstr "Tails"
+
+#: config/chroot_local-includes/usr/local/bin/tails-about:25
+#: ../config/chroot_local-includes/usr/share/applications/tails-about.desktop.in.h:1
+msgid "About Tails"
+msgstr "За Tails"
+
+#: config/chroot_local-includes/usr/local/bin/tails-about:35
+msgid "The Amnesic Incognito Live System"
+msgstr "Амнезирачки Анонимен Жив Систем"
+
+#: config/chroot_local-includes/usr/local/bin/tails-about:36
+#, python-format
+msgid ""
+"Build information:\n"
+"%s"
+msgstr "Информации за градба:\n%s"
+
+#: config/chroot_local-includes/usr/local/bin/tails-about:54
+msgid "not available"
+msgstr "не е достапно"
+
+#. Translators: Don't translate {details}, it's a placeholder and will
+#. be replaced.
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:148
+#, python-brace-format
+msgid ""
+"{details} Please check your list of additional software or read the system "
+"log to understand the problem."
+msgstr "{details} Ве молиме проверете ја вашата листа на дополнителен софтвер или прочитајте го системскиот лог за да го разберете проблемот."
+
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:153
+msgid ""
+"Please check your list of additional software or read the system log to "
+"understand the problem."
+msgstr "Ве молиме проверете ја вашата листа на дополнителен софтвер или прочитајте го системскиот лог за да ја разберете грешката."
+
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:157
+msgid "Show Log"
+msgstr "Приказ на лог"
+
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:157
+msgid "Configure"
+msgstr "Конфигурирај"
+
+#. Translators: Don't translate {beginning} or {last}, they are
+#. placeholders and will be replaced.
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:223
+#, python-brace-format
+msgid "{beginning} and {last}"
+msgstr "{beginning} и {last}"
+
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:224
+msgid ", "
+msgstr ","
+
+#. Translators: Don't translate {packages}, it's a placeholder and will
+#. be replaced.
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:290
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:320
+#, python-brace-format
+msgid "Add {packages} to your additional software?"
+msgstr "Да се додадат {packages} на вашиот дополнителен софтвер?"
+
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:292
+msgid ""
+"To install it automatically from your persistent storage when starting "
+"Tails."
+msgstr "За да се инсталираат автоматски од вашиот постојан склад кога се стартува Tails."
+
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:294
+msgid "Install Every Time"
+msgstr "Инсталирај секогаш"
+
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:295
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:326
+msgid "Install Only Once"
+msgstr "Инсталирај само еднаш"
+
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:301
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:331
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:371
+msgid "The configuration of your additional software failed."
+msgstr "Конфигурацијата на вашиот дополнителен софтвер не успеа."
+
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:322
+msgid ""
+"To install it automatically when starting Tails, you can create a persistent"
+" storage and activate the <b>Additional Software</b> feature."
+msgstr "За да се инсталира автоматски кога се стартува Tails, треба да создадете постојан склад и да ја активирате <b>Дополнителен софтвер</b> карактеристиката."
+
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:325
+msgid "Create Persistent Storage"
+msgstr "Создај Постојан склад"
+
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:333
+msgid "Creating your persistent storage failed."
+msgstr "Создавањето на вашиот постојан склад не успеа."
+
+#. Translators: Don't translate {packages}, it's a placeholder and
+#. will be replaced.
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:342
+#, python-brace-format
+msgid "You could install {packages} automatically when starting Tails"
+msgstr "Можеш да ги инсталираш {packages} автоматски кога се стартува Tails"
+
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:345
+msgid "To do so, you need to run Tails from a USB stick."
+msgstr "За да го направите тоа, потребно е да го стартувате Tails од USB стик."
+
+#. Translators: Don't translate {packages}, it's a placeholder and will be
+#. replaced.
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:359
+#, python-brace-format
+msgid "Remove {packages} from your additional software?"
+msgstr "Да се отстрани {packages} од вашиот дополнителен софтвер?"
+
+#. Translators: Don't translate {packages}, it's a placeholder
+#. and will be replaced.
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:363
+#, python-brace-format
+msgid "This will stop installing {packages} automatically."
+msgstr "Ова ќе го запре автоматското инсталирање на {packages}. "
+
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:365
+#: config/chroot_local-includes/usr/local/bin/tails-additional-software-config:154
+msgid "Remove"
+msgstr "Отстрани"
+
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:544
+msgid "Installing your additional software from persistent storage..."
+msgstr "Инсталирање на вашиот дополнителен софтвер од постојаниот склад...."
+
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:546
+msgid "This can take several minutes."
+msgstr "Ова може да потрае неколку минути."
+
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:559
+msgid "The installation of your additional software failed"
+msgstr "Инсталацијата на вашиот дополнителен софтвер не успеа"
+
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:574
+msgid "Additional software installed successfully"
+msgstr "Дополнителниот софтвер беше успешно инсталиран"
+
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:594
+msgid "The check for upgrades of your additional software failed"
+msgstr "Проверката за надградби на вашиот дополнителен софтвер на успеа"
+
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:596
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:604
+msgid ""
+"Please check your network connection, restart Tails, or read the system log "
+"to understand the problem."
+msgstr "Ве молиме проверете го вашето мрежно поврзување, повторно стартувајте го Tails, или прочитајте го системскиот лог за да го разберете проблемот."
+
+#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:603
+msgid "The upgrade of your additional software failed"
+msgstr "Надградбата на вашиот дополнителен софтвер не успеа"
+
+#: config/chroot_local-includes/usr/local/lib/tails-additional-software-notify:37
+msgid "Documentation"
+msgstr "Документација"
+
+#. Translators: Don't translate {package}, it's a placeholder and will be
+#. replaced.
+#: config/chroot_local-includes/usr/local/bin/tails-additional-software-config:94
+#, python-brace-format
+msgid ""
+"Remove {package} from your additional software? This will stop installing "
+"the package automatically."
+msgstr "Да бидат остранети {package} од вашиот дополнителен софтвер? Ова ќе го запре автоматското инсталирање на пакетот."
+
+#. Translators: Don't translate {pkg}, it's a placeholder and will be
+#. replaced.
+#: config/chroot_local-includes/usr/local/bin/tails-additional-software-config:105
+#, python-brace-format
+msgid "Failed to remove {pkg}"
+msgstr "Не успеа отстранувањето {pkg}"
+
+#: config/chroot_local-includes/usr/local/bin/tails-additional-software-config:122
+msgid "Failed to read additional software configuration"
+msgstr "Не беше вчитана конфигурацијата на дополнителниот софтвер"
+
+#. Translators: Don't translate {package}, it's a placeholder and will be
+#. replaced.
+#: config/chroot_local-includes/usr/local/bin/tails-additional-software-config:152
+#, python-brace-format
+msgid "Stop installing {package} automatically"
+msgstr "Запри го автоматското инсталирање на {package}"
+
+#: config/chroot_local-includes/usr/local/bin/tails-additional-software-config:178
+msgid ""
+"To do so, install some software using <a href=\"synaptic.desktop\">Synaptic "
+"Package Manager</a> or <a href=\"org.gnome.Terminal.desktop\">APT on the "
+"command line</a>."
+msgstr "За да го направиш ѕоа, инсталирај некој софтвер користејќи <a href=\"synaptic.desktop\">Синаптичен пакет менаџер</a> или <a href=\"org.gnome.Terminal.desktop\">APT на командната линија </a>."
+
+#: config/chroot_local-includes/usr/local/bin/tails-additional-software-config:187
+msgid ""
+"To do so, unlock your persistent storage when starting Tails and install "
+"some software using <a href=\"synaptic.desktop\">Synaptic Package "
+"Manager</a> or <a href=\"org.gnome.Terminal.desktop\">APT on the command "
+"line</a>."
+msgstr "За да го направите тоа, отклучете го вашиот постојан склад кога го стартувате Tails и инсталирате некој софтвер користејќи <a href=\"synaptic.desktop\">Синаптички пакет менаџер</a> или <a href=\"org.gnome.Terminal.desktop\">ATP на командната линија</a>."
+
+#: config/chroot_local-includes/usr/local/bin/tails-additional-software-config:197
+msgid ""
+"To do so, create a persistent storage and install some software using <a "
+"href=\"synaptic.desktop\">Synaptic Package Manager</a> or <a "
+"href=\"org.gnome.Terminal.desktop\">APT on the command line</a>."
+msgstr "За да го направите тоа, создадете постојан склад и инсталирате софтвер користејќи <a href=\"synaptic.desktop\">Синаптички пакет менаџер или <a href=\"org.gnome.Terminal.desktop\">ATP на командната линија."
+
+#: config/chroot_local-includes/usr/local/bin/tails-additional-software-config:205
+msgid ""
+"To do so, install Tails on a USB stick and create a persistent storage."
+msgstr "За да го направите тоа, потребно е да го инсталирате Tails на USB стик и да создадете постојан склад."
+
+#: config/chroot_local-includes/usr/local/bin/tails-additional-software-config:251
+msgid "[package not available]"
+msgstr "[пакетот не е достапен]"
+
+#: config/chroot_local-includes/usr/local/lib/tails-htp-notify-user:52
+msgid "Synchronizing the system's clock"
+msgstr "Синхронизирање на системскиот часовник"
+
+#: config/chroot_local-includes/usr/local/lib/tails-htp-notify-user:53
+msgid ""
+"Tor needs an accurate clock to work properly, especially for Hidden "
+"Services. Please wait..."
+msgstr "На Tor му е потребен точен часовник за да може да работи правилно, особено за Скриени сервиси. Ве молиме почекајте..."
+
+#: config/chroot_local-includes/usr/local/lib/tails-htp-notify-user:87
+msgid "Failed to synchronize the clock!"
+msgstr "Синхронизирањето на часовникот беше неуспешно!"
+
+#: config/chroot_local-includes/usr/local/bin/tails-screen-locker:110
+msgid "Lock Screen"
+msgstr "Екран за заклучување"
+
+#: config/chroot_local-includes/usr/local/bin/tails-screen-locker:125
+msgid "Screen Locker"
+msgstr "Заклучувач на екран"
+
+#: config/chroot_local-includes/usr/local/bin/tails-screen-locker:131
+msgid "Set up a password to unlock the screen."
+msgstr "Постави лозинка за да го отклучиш екранот."
+
+#: config/chroot_local-includes/usr/local/bin/tails-screen-locker:149
+msgid "Password"
+msgstr "Лозинка"
+
+#: config/chroot_local-includes/usr/local/bin/tails-screen-locker:150
+#: ../config/chroot_local-includes/usr/share/tails/greeter/additional_settings.ui.in:93
+msgid "Confirm"
+msgstr "Потврди"
+
+#: config/chroot_local-includes/usr/local/bin/tails-security-check:124
+msgid "This version of Tails has known security issues:"
+msgstr "Оваа верзија на Tails има познати безбедносни проблеми:"
+
+#: config/chroot_local-includes/usr/local/bin/tails-security-check:135
+msgid "Known security issues"
+msgstr "Познати безбедносни проблеми"
+
+#: config/chroot_local-includes/usr/local/lib/tails-spoof-mac:56
+#, sh-format
+msgid "Network card ${nic} disabled"
+msgstr "Мрежната картичка ${nic} е оневозможена"
+
+#: config/chroot_local-includes/usr/local/lib/tails-spoof-mac:57
+#, sh-format
+msgid ""
+"MAC spoofing failed for network card ${nic_name} (${nic}) so it is temporarily disabled.\n"
+"You might prefer to restart Tails and disable MAC spoofing."
+msgstr "MAC спуфирањето не успеа за мрежната картичка ${nic_name} (${nic}) па поради тоа е привремено оневозможена.\nМожеби повеќе ќе сакате повторно да го стартувате Tails и да го оневозможите MAC спуфингот. "
+
+#: config/chroot_local-includes/usr/local/lib/tails-spoof-mac:66
+msgid "All networking disabled"
+msgstr "Сите мрежни поврзувања се оневозможени"
+
+#: config/chroot_local-includes/usr/local/lib/tails-spoof-mac:67
+#, sh-format
+msgid ""
+"MAC spoofing failed for network card ${nic_name} (${nic}). The error recovery also failed so all networking is disabled.\n"
+"You might prefer to restart Tails and disable MAC spoofing."
+msgstr "MAC спуфингот не успеа за мрежната картичка ${nic_name} (${nic}). Враќањето на грешката исто така не успеа па целото мрежно поврзување беше оневозможено.\nМожеби повеќе ќе сакате повторно да го стартувате Tails и да го оневозможите MAC спуфингот. "
+
+#: config/chroot_local-includes/usr/local/bin/tails-upgrade-frontend-wrapper:35
+msgid ""
+"\"<b>Not enough memory available to check for upgrades.</b>\n"
+"\n"
+"Make sure this system satisfies the requirements for running Tails.\n"
+"See file:///usr/share/doc/tails/website/doc/about/requirements.en.html\n"
+"\n"
+"Try to restart Tails to check for upgrades again.\n"
+"\n"
+"Or do a manual upgrade.\n"
+"See https://tails.boum.org/doc/first_steps/upgrade#manual\""
+msgstr "\"<b>Нема доволно достапна меморија за проверка за надградби.</b>\n\nБидете сигурни дека овој систем ги задоволува барањата за работење на Tails.\nВидете file:///usr/share/doc/tails/website/doc/about/requirements.en.html\n\nОбидете се повторно да го стартувате Tails за повторно да проверите за надградби.\n\nИли направете рачна надградба.\nВидете https://tails.boum.org/doc/first_steps/upgrade#manual\" "
+
+#: config/chroot_local-includes/usr/local/bin/tails-upgrade-frontend-wrapper:73
+#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:27
+msgid "error:"
+msgstr "грешка:"
+
+#: config/chroot_local-includes/usr/local/lib/tails-virt-notify-user:71
+msgid "Warning: virtual machine detected!"
+msgstr "Предупредување: беше детектирана виртуелна машина!"
+
+#: config/chroot_local-includes/usr/local/lib/tails-virt-notify-user:74
+msgid "Warning: non-free virtual machine detected!"
+msgstr "Предупредување: беше детектирана виртуелна машина која не е бесплатна!"
+
+#: config/chroot_local-includes/usr/local/lib/tails-virt-notify-user:77
+msgid ""
+"Both the host operating system and the virtualization software are able to "
+"monitor what you are doing in Tails. Only free software can be considered "
+"trustworthy, for both the host operating system and the virtualization "
+"software."
+msgstr "И хост оперативниот систем и софтверот за виртуелизација се способни да следат што правите во Tails. Само слободниот софтвер може да се смета за доверлив, и за хост оперативниот систем и за софтверот за виртуелизација."
+
+#: config/chroot_local-includes/usr/local/lib/tails-virt-notify-user:81
+msgid "Learn more"
+msgstr "Научи повеќе"
+
+#: config/chroot_local-includes/usr/local/bin/tor-browser:46
+msgid "Tor is not ready"
+msgstr "Tor не е подготвен"
+
+#: config/chroot_local-includes/usr/local/bin/tor-browser:47
+msgid "Tor is not ready. Start Tor Browser anyway?"
+msgstr "Tor не е подготвен. Сепак да се стартува Tor прелистувачот? "
+
+#: config/chroot_local-includes/usr/local/bin/tor-browser:48
+msgid "Start Tor Browser"
+msgstr "Старување на Tor прелистувачот"
+
+#: config/chroot_local-includes/usr/share/gnome-shell/extensions/torstatus@tails.boum.org/extension.js:35
+msgid "Tor Status"
+msgstr "Tor статус"
+
+#: config/chroot_local-includes/usr/share/gnome-shell/extensions/torstatus@tails.boum.org/extension.js:50
+msgid "Open Onion Circuits"
+msgstr "Отвори Onion кругови"
+
+#. Translators: Don't translate {volume_label} or {volume_size},
+#. they are placeholders and will be replaced.
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/unlock_veracrypt_volumes/volume.py:64
+#, python-brace-format
+msgid "{volume_label} ({volume_size})"
+msgstr "{volume_label} ({volume_size})"
+
+#. Translators: Don't translate {partition_name} or {partition_size},
+#. they are placeholders and will be replaced.
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/unlock_veracrypt_volumes/volume.py:69
+#, python-brace-format
+msgid "{partition_name} ({partition_size})"
+msgstr "{partition_name} ({partition_size})"
+
+#. Translators: Don't translate {volume_size}, it's a placeholder
+#. and will be replaced.
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/unlock_veracrypt_volumes/volume.py:74
+#, python-brace-format
+msgid "{volume_size} Volume"
+msgstr "{volume_size} Глас"
+
+#. Translators: Don't translate {volume_name}, it's a placeholder and
+#. will be replaced.
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/unlock_veracrypt_volumes/volume.py:113
+#, python-brace-format
+msgid "{volume_name} (Read-Only)"
+msgstr "{volume_name} (Само-читај)"
+
+#. Translators: Don't translate {partition_name} and {container_path}, they
+#. are placeholders and will be replaced.
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/unlock_veracrypt_volumes/volume.py:121
+#, python-brace-format
+msgid "{partition_name} in {container_path}"
+msgstr "{partition_name} во {container_path}"
+
+#. Translators: Don't translate {volume_name} and {path_to_file_container},
+#. they are placeholders and will be replaced. You should only have to
+#. translate
+#. this string if it makes sense to reverse the order of the placeholders.
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/unlock_veracrypt_volumes/volume.py:128
+#, python-brace-format
+msgid "{volume_name} – {path_to_file_container}"
+msgstr "{volume_name} – {path_to_file_container}"
+
+#. Translators: Don't translate {partition_name} and {drive_name}, they
+#. are placeholders and will be replaced.
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/unlock_veracrypt_volumes/volume.py:134
+#, python-brace-format
+msgid "{partition_name} on {drive_name}"
+msgstr "{partition_name} on {drive_name}"
+
+#. Translators: Don't translate {volume_name} and {drive_name},
+#. they are placeholders and will be replaced. You should only have to
+#. translate
+#. this string if it makes sense to reverse the order of the placeholders.
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/unlock_veracrypt_volumes/volume.py:141
+#, python-brace-format
+msgid "{volume_name} – {drive_name}"
+msgstr "{volume_name} – {drive_name}"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/unlock_veracrypt_volumes/volume.py:229
+msgid "Wrong passphrase or parameters"
+msgstr "Грешна лозинка или параметри"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/unlock_veracrypt_volumes/volume.py:231
+msgid "Error unlocking volume"
+msgstr "Грешка при отклучување на просторот"
+
+#. Translators: Don't translate {volume_name} or {error_message},
+#. they are placeholder and will be replaced.
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/unlock_veracrypt_volumes/volume.py:235
+#, python-brace-format
+msgid ""
+"Couldn't unlock volume {volume_name}:\n"
+"{error_message}"
+msgstr "Просторот не можеше да биде отклучен {volume_name}:\n{error_message}"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/unlock_veracrypt_volumes/volume.py:337
+msgid "One or more applications are keeping the volume busy."
+msgstr "Една или повеќе апликации го чуваат просторот зафатен."
+
+#. Translators: Don't translate {volume_name} or {error_message},
+#. they are placeholder and will be replaced.
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/unlock_veracrypt_volumes/volume.py:343
+#, python-brace-format
+msgid ""
+"Couldn't lock volume {volume_name}:\n"
+"{error_message}"
+msgstr "Просторот не можеше да биде заклучен {volume_name}:\n{error_message}"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/unlock_veracrypt_volumes/volume.py:345
+msgid "Locking the volume failed"
+msgstr "Заклучувањето на просторот не успеа"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/unlock_veracrypt_volumes/volume_list.py:83
+msgid "No file containers added"
+msgstr "Не беа додадени контејнер датотеки"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/unlock_veracrypt_volumes/volume_list.py:98
+msgid "No VeraCrypt devices detected"
+msgstr "Не беа детектирани VeraCrypt уреди"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/unlock_veracrypt_volumes/volume_manager.py:40
+#: ../config/chroot_local-includes/usr/share/applications/unlock-veracrypt-volumes.desktop.in.h:1
+msgid "Unlock VeraCrypt Volumes"
+msgstr "Отклучи VeraCrypt простори"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/unlock_veracrypt_volumes/volume_manager.py:114
+msgid "Container already added"
+msgstr "Контејнерот е веќе додаден"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/unlock_veracrypt_volumes/volume_manager.py:115
+#, python-format
+msgid "The file container %s should already be listed."
+msgstr "Контејнер датотеката %s веќе треба да е излистана."
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/unlock_veracrypt_volumes/volume_manager.py:131
+msgid "Container opened read-only"
+msgstr "Отворен само-читај контејнер"
+
+#. Translators: Don't translate {path}, it's a placeholder and will be
+#. replaced.
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/unlock_veracrypt_volumes/volume_manager.py:133
+#, python-brace-format
+msgid ""
+"The file container {path} could not be opened with write access. It was opened read-only instead. You will not be able to modify the content of the container.\n"
+"{error_message}"
+msgstr "Контејнер датотеката {path} не може да се отвори со запишувачки пристап. Наместо тоа беше отворена само-читај контејнер датотека. Нема да можете да ја изменувате содржината на контејнер датотеката.\n{error_message}"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/unlock_veracrypt_volumes/volume_manager.py:138
+msgid "Error opening file"
+msgstr "Грешка при отварање на датотеката"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/unlock_veracrypt_volumes/volume_manager.py:160
+msgid "Not a VeraCrypt container"
+msgstr "Контејнерот не е VeraCrypt"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/unlock_veracrypt_volumes/volume_manager.py:161
+#, python-format
+msgid "The file %s does not seem to be a VeraCrypt container."
+msgstr "Датотеката %s се чини дека не е VeraCrypt контејнер."
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/unlock_veracrypt_volumes/volume_manager.py:163
+msgid "Failed to add container"
+msgstr "Не додаде контејнер"
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/unlock_veracrypt_volumes/volume_manager.py:164
+#, python-format
+msgid ""
+"Could not add file container %s: Timeout while waiting for loop setup.\n"
+"Please try using the <i>Disks</i> application instead."
+msgstr "Не можеше да биде додадена контејнер датотеката %s: Времето истече додека чекавте за поставување на луп.\nВе молиме наместо тоа, обидете се со користење на <i>Disks</i>апликацијата."
+
+#: config/chroot_local-includes/usr/lib/python3/dist-packages/unlock_veracrypt_volumes/volume_manager.py:209
+msgid "Choose File Container"
+msgstr "Избери контејнер датотека"
+
+#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:38
+msgid "Launch the Unsafe Browser?"
+msgstr "Стартувај го Небезбедниот Прелистувач?"
+
+#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:40
+msgid ""
+"The Unsafe Browser is not anonymous and the websites that you visit can see "
+"your real IP address.\\n\\nOnly use the Unsafe Browser to log in to a "
+"captive portal or browse trusted web pages on the local network."
+msgstr "Небезбедниот Прелистувач не е анонимен и веб страните кои ги посетувате можат да ја видат вашата вистинска IP адреса.\\n\\nКористете го Небезбедниот Прелистувач за да се најавите на Најавувачки портал или да пребарувате доверливи веб страни на локалната мрежа."
+
+#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:51
+msgid "Starting the Unsafe Browser..."
+msgstr "Стартување на Небезбеден прелистувач..."
+
+#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:52
+msgid "This may take a while, so please be patient."
+msgstr "Ова може да потрае, ве молиме бидете трпеливи."
+
+#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:57
+msgid "Shutting down the Unsafe Browser..."
+msgstr "Исклучување на Небезбедниот прелистувач..."
+
+#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:58
+msgid ""
+"This may take a while, and you may not restart the Unsafe Browser until it "
+"is properly shut down."
+msgstr "Ова може да потрае, и не треба повторно да го стартувате Небезбедниот прелистувач се додека не е правилно исклучен."
+
+#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:70
+msgid "Failed to restart Tor."
+msgstr "Tor не се стартуваше повторно."
+
+#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:84
+#: ../config/chroot_local-includes/usr/share/applications/unsafe-browser.desktop.in.h:1
+#: ../config/chroot_local-includes/usr/share/tails/greeter/additional_settings.ui.in:510
+msgid "Unsafe Browser"
+msgstr "Небезбеден прелистувач"
+
+#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:90
+msgid ""
+"The Unsafe Browser was not enabled in the Welcome Screen.\\n\\nTo use the Unsafe Browser, restart Tails and enable the Unsafe Browser in the additional settings of the Welcome Screen.\\n\n"
+"To always enable the Unsafe Browser, turn on the Welcome Screen feature of the Persistent Storage."
+msgstr "Небезбедниот Прелистувач беше оневозможен на Екранот за Добредојде.\\n\\nЗа да го користите Небезбедниот Прелистувач, повторно стартувајте го Tails и овозможете го Небезбедниот Прелистувач во дополнителните поставки на Екранот за Добредојде.\\n\nЗа секогаш да биде овозможен Небезбедниот Прелистувач, на Екранот за Добредојде вклучете ја опцијата за Постојан Склад."
+
+#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:99
+msgid ""
+"Another Unsafe Browser is currently running, or being cleaned up. Please "
+"retry in a while."
+msgstr "Друг Небезбеден прелистувач работи во мометов, или е исчистен. Ве молиме обидете се подоцна."
+
+#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:107
+msgid "Failed to setup chroot."
+msgstr "Не беше поставен chroot."
+
+#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:114
+msgid "Failed to configure browser."
+msgstr "Прелистувачот не се конфигурираше."
+
+#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:120
+msgid ""
+"No DNS server was obtained through DHCP or manually configured in "
+"NetworkManager."
+msgstr "DNS сервери не беа пронајдени преку DHCP или не беа рачно конфигурирани во МрежниотМенаџер."
+
+#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:131
+msgid "Failed to run browser."
+msgstr "Прелистувачот не се стартуваше."
+
+#: ../config/chroot_local-includes/etc/skel/Desktop/Report_an_error.desktop.in.h:1
+msgid "Report an error"
+msgstr "Пријави грешка"
+
+#: ../config/chroot_local-includes/etc/skel/Desktop/tails-documentation.desktop.in.h:1
+#: ../config/chroot_local-includes/usr/share/applications/tails-documentation.desktop.in.h:1
+msgid "Tails documentation"
+msgstr "Tails документација"
+
+#: ../config/chroot_local-includes/usr/share/applications/root-terminal.desktop.in.h:1
+msgid "Root Terminal"
+msgstr "Root терминал"
+
+#: ../config/chroot_local-includes/usr/share/applications/root-terminal.desktop.in.h:2
+msgid "Opens a terminal as the root user, using gksu to ask for the password"
+msgstr "Отвори терминал како root корисник, користејќи gksu за да бидеш прашан за лозинка"
+
+#: ../config/chroot_local-includes/usr/share/applications/tails-documentation.desktop.in.h:2
+msgid "Learn how to use Tails"
+msgstr "Научи како да го користиш Tails"
+
+#: ../config/chroot_local-includes/usr/share/applications/tails-about.desktop.in.h:2
+msgid "Learn more about Tails"
+msgstr "Научи повеќе за Tails"
+
+#: ../config/chroot_local-includes/usr/share/applications/tails-persistence-delete.desktop.in.h:1
+msgid "Delete persistent volume"
+msgstr "Избриши го постојаниот простор"
+
+#: ../config/chroot_local-includes/usr/share/applications/tails-persistence-delete.desktop.in.h:2
+msgid "Delete the persistent volume and its content"
+msgstr "Избриши го постојаниот простор и неговата содржина"
+
+#: ../config/chroot_local-includes/usr/share/applications/tails-persistence-setup.desktop.in.h:1
+msgid "Configure persistent volume"
+msgstr "Конфигурирај го постојаниот простор"
+
+#: ../config/chroot_local-includes/usr/share/applications/tails-persistence-setup.desktop.in.h:2
+msgid ""
+"Configure which files and application configuration are saved between "
+"working sessions"
+msgstr "Конфигурирај кои датотеки и конфигурација на апликација да бидат зачувани помеѓу работните сесии"
+
+#: ../config/chroot_local-includes/usr/share/applications/tor-browser.desktop.in.h:1
+msgid "Tor Browser"
+msgstr "Тор прелистувач"
+
+#: ../config/chroot_local-includes/usr/share/applications/tor-browser.desktop.in.h:2
+msgid "Anonymous Web Browser"
+msgstr "Анонимен веб прелистувач"
+
+#: ../config/chroot_local-includes/usr/share/applications/unsafe-browser.desktop.in.h:2
+msgid "Browse the World Wide Web without anonymity"
+msgstr "Прелистувај ја WWW без анонимност"
+
+#: ../config/chroot_local-includes/usr/share/applications/unsafe-browser.desktop.in.h:3
+msgid "Unsafe Web Browser"
+msgstr "Небезбеден веб прелистувач"
+
+#: ../config/chroot_local-includes/usr/share/applications/unlock-veracrypt-volumes.desktop.in.h:2
+msgid "Mount VeraCrypt encrypted file containers and devices"
+msgstr "Монтирај VeraCryp енкриптирани контејнер датотеки и уреди"
+
+#: ../config/chroot_local-includes/usr/share/applications/org.boum.tails.additional-software-config.desktop.in.h:2
+msgid ""
+"Configure the additional software installed from your persistent storage "
+"when starting Tails"
+msgstr "Конфигурирајте го дополнителниот софтвер инсталиран од вашиот постојан склад кога се стартува Tails"
+
+#: ../config/chroot_local-includes/usr/share/desktop-directories/Tails.directory.in.h:2
+msgid "Tails specific tools"
+msgstr "Tails посебни алатки"
+
+#: ../config/chroot_local-includes/usr/share/polkit-1/actions/org.boum.tails.root-terminal.policy.in.h:1
+msgid "To start a Root Terminal, you need to authenticate."
+msgstr "Да стартуваш Root Терминал, потребна е идентификување."
+
+#: ../config/chroot_local-includes/usr/share/polkit-1/actions/org.boum.tails.additional-software.policy.in.h:1
+msgid "Remove an additional software package"
+msgstr "Отстрани дополнителни софтверски пакети"
+
+#: ../config/chroot_local-includes/usr/share/polkit-1/actions/org.boum.tails.additional-software.policy.in.h:2
+msgid ""
+"Authentication is required to remove a package from your additional software"
+" ($(command_line))"
+msgstr "Автентикацијата е потребна за да се отстрани пакетот од вашиот дополнителен софтвер ($(command_line))"
+
+#: ../config/chroot_local-includes/usr/share/tails/greeter/additional_settings.ui.in:18
+#: ../config/chroot_local-includes/usr/share/tails/greeter/additional_settings.ui.in:56
+#: ../config/chroot_local-includes/usr/share/tails/greeter/main.ui.in:693
+msgid "Administration Password"
+msgstr "Администраторска лозинка"
+
+#: ../config/chroot_local-includes/usr/share/tails/greeter/additional_settings.ui.in:34
+msgid ""
+"Set up an administration password if you need to perform administrative "
+"tasks. Otherwise, the administration password is disabled for better "
+"security."
+msgstr "Поставете администраторска лозинка ако треба да извршувате администраторски задачи. Инаку, административната лозинка е оневозможена заради подобра безбедност."
+
+#: ../config/chroot_local-includes/usr/share/tails/greeter/additional_settings.ui.in:69
+msgid "Enter an administration password"
+msgstr "Внеси администраторска лозинка"
+
+#: ../config/chroot_local-includes/usr/share/tails/greeter/additional_settings.ui.in:107
+msgid "Confirm your administration password"
+msgstr "Потврдете ја вашата администраотрска лозинка"
+
+#: ../config/chroot_local-includes/usr/share/tails/greeter/additional_settings.ui.in:124
+msgid "Disable"
+msgstr "Оневозможи"
+
+#: ../config/chroot_local-includes/usr/share/tails/greeter/additional_settings.ui.in:154
+#: ../config/chroot_local-includes/usr/share/tails/greeter/main.ui.in:697
+msgid "MAC Address Spoofing"
+msgstr "Спуфинг на MAC адреса"
+
+#: ../config/chroot_local-includes/usr/share/tails/greeter/additional_settings.ui.in:170
+msgid ""
+"MAC address spoofing hides the serial number of your network interface (Wi-"
+"Fi or wired) to the local network. Spoofing MAC addresses is generally safer"
+" as it helps you hide your geographical location. But it might also create "
+"connectivity problems or look suspicious."
+msgstr "Спуфингот на MAC адресата го крие серискиот број на вашиот мрежен интерфејс (Wi-Fi или жичен) од локалната мрежа. Спуфингот на MAC адресата генерално е побезбеден затоа што ви помага да ја сокриете вашата географска локација. Но исто така може да создаде проблеми со поврзувањето или истото да изгледа сомнително. "
+
+#: ../config/chroot_local-includes/usr/share/tails/greeter/additional_settings.ui.in:212
+msgid "Spoof all MAC addresses (default)"
+msgstr "Имитирај ги сите MAC адреси (стандардно)"
+
+#: ../config/chroot_local-includes/usr/share/tails/greeter/additional_settings.ui.in:258
+msgid "Don't spoof MAC addresses"
+msgstr "Не ги имитирај MAC адресите"
+
+#: ../config/chroot_local-includes/usr/share/tails/greeter/additional_settings.ui.in:311
+#: ../config/chroot_local-includes/usr/share/tails/greeter/main.ui.in:701
+msgid "Network Configuration"
+msgstr "Конфигурирање на мрежа"
+
+#: ../config/chroot_local-includes/usr/share/tails/greeter/additional_settings.ui.in:327
+msgid ""
+"If your Internet connection is censored, filtered, or proxied you can "
+"configure a Tor bridge or a local proxy. To work completely offline, you can"
+" disable all networking."
+msgstr "Ако вашето поврзување на Интернет е цензурирано, филтрирано, или е преку прокси можете да го конфигурирате Tor Мостот или локалното прокси. За да работите целосно офлајн, можете да ја оневозможите целата мрежа."
+
+#: ../config/chroot_local-includes/usr/share/tails/greeter/additional_settings.ui.in:367
+msgid "Connect directly to the Tor network (default)"
+msgstr "Поврзи се директно на Tor мрежата (стандардно)"
+
+#: ../config/chroot_local-includes/usr/share/tails/greeter/additional_settings.ui.in:413
+msgid "Configure a Tor bridge or local proxy"
+msgstr "Конфигурирај Tor мост или локално прокси"
+
+#: ../config/chroot_local-includes/usr/share/tails/greeter/additional_settings.ui.in:457
+msgid "Disable all networking"
+msgstr "Оневозможување на целата мрежа"
+
+#: ../config/chroot_local-includes/usr/share/tails/greeter/additional_settings.ui.in:526
+msgid ""
+"The Unsafe Browser allows you to log in to a captive portal.\n"
+"\n"
+"A captive portal is a web page that is displayed before you can access the Internet. Captive portals usually require to log in to the network or enter information such as an email address.\n"
+"\n"
+"The Unsafe Browser is not anonymous and can deanonymize you. Use it only to log in to captive portals."
+msgstr "Небезбедниот Прелистувач ви дозволува да се најавите на најавувачки портал.\nНајавувачкиот портал е веб страна која е прикажана пред да можете да се поврзете на Интернет. Најавувачките портали обично бараат да се најавите на мрежата или да внесете информации како што е адреса за е-пошта.\n\nНебезбедниот Прелистувач не е анонимен и може да ве деанонимизира. Користете го само за најавување на најавувачки портали."
+
+#: ../config/chroot_local-includes/usr/share/tails/greeter/additional_settings.ui.in:572
+msgid "Disable the Unsafe Browser (default)"
+msgstr "Оневозможи го Небезбедниот Прелистувач (стандардно)"
+
+#: ../config/chroot_local-includes/usr/share/tails/greeter/additional_settings.ui.in:617
+msgid "Enable the Unsafe Browser"
+msgstr "Овозможи го Небезбедниот Прелистувач"
+
+#: ../config/chroot_local-includes/usr/share/tails/greeter/main.ui.in:100
+msgid "Settings were loaded from the persistent storage."
+msgstr "Поставките беа вчитани од постојаниот склад."
+
+#: ../config/chroot_local-includes/usr/share/tails/greeter/main.ui.in:168
+msgid ""
+"You will configure the Tor bridge and local proxy later on after connecting "
+"to a network."
+msgstr "Ќе го конфигирирате Tor мостот и локалното прокси подоцна откако ќе се поврзете на мрежа."
+
+#: ../config/chroot_local-includes/usr/share/tails/greeter/main.ui.in:220
+msgid "Welcome to Tails!"
+msgstr "Добредојдовте во Tails!"
+
+#: ../config/chroot_local-includes/usr/share/tails/greeter/main.ui.in:254
+msgid "Language & Region"
+msgstr "Јазик и Регион"
+
+#: ../config/chroot_local-includes/usr/share/tails/greeter/main.ui.in:290
+msgid "Default Settings"
+msgstr "Основни поставки"
+
+#: ../config/chroot_local-includes/usr/share/tails/greeter/main.ui.in:353
+msgid "Encrypted _Persistent Storage"
+msgstr "Енкриптиран_Постојан склад"
+
+#. The label for this placeholder text is not very big, so keep this string
+#. short.
+#: ../config/chroot_local-includes/usr/share/tails/greeter/main.ui.in:447
+msgid "Enter your passphrase to unlock the persistent storage"
+msgstr "Внесете ја вашата лозинка за да го отклучите постојаниот склад"
+
+#: ../config/chroot_local-includes/usr/share/tails/greeter/main.ui.in:495
+msgid "Your persistent storage is unlocked. Restart Tails to lock it again."
+msgstr "Вашиот постојан скалд е отклучен. Повторно стартувајте го Tails. "
+
+#: ../config/chroot_local-includes/usr/share/tails/greeter/main.ui.in:533
+msgid "_Additional Settings"
+msgstr "_Дополнителни поставки"
+
+#: ../config/chroot_local-includes/usr/share/tails/greeter/main.ui.in:616
+msgid "Add an additional setting"
+msgstr "Додади дополнителна поставка"
+
+#: ../config/chroot_local-includes/usr/share/tails/greeter/main.ui.in:665
+msgid ""
+"The default settings are safe in most situations. To add a custom setting, "
+"press the \"+\" button below."
+msgstr "Стандардните поставки се безбедни во повеќето ситуации. За да додадете прилагодено поставување, притиснете го \"+\" копчето подолу."
+
+#: ../config/chroot_local-includes/usr/share/tails/greeter/main.ui.in:709
+msgid "Shutdown"
+msgstr "Исклучување"
+
+#: ../config/chroot_local-includes/usr/share/tails/greeter/main.ui.in:720
+msgid "_Start Tails"
+msgstr "_Стартување на Tails"
+
+#: ../config/chroot_local-includes/usr/share/tails/unlock-veracrypt-volumes/main.ui.in:61
+msgid "File Containers"
+msgstr "Контејнер датотеки"
+
+#: ../config/chroot_local-includes/usr/share/tails/unlock-veracrypt-volumes/main.ui.in:80
+msgid "_Add"
+msgstr "_Додај"
+
+#: ../config/chroot_local-includes/usr/share/tails/unlock-veracrypt-volumes/main.ui.in:86
+msgid "Add a file container"
+msgstr "Додај контејнер датотека"
+
+#: ../config/chroot_local-includes/usr/share/tails/unlock-veracrypt-volumes/main.ui.in:103
+msgid "Partitions and Drives"
+msgstr "Партиции и Дискови"
+
+#: ../config/chroot_local-includes/usr/share/tails/unlock-veracrypt-volumes/main.ui.in:121
+msgid ""
+"This application is not affiliated with or endorsed by the VeraCrypt project"
+" or IDRIX."
+msgstr "Оваа апликација не е поврзана со или одобрена од VeraCrypt проектот или од IDRIX."
+
+#: ../config/chroot_local-includes/usr/share/tails/unlock-veracrypt-volumes/volume.ui.in:29
+msgid "_Open"
+msgstr "_Отвори"
+
+#: ../config/chroot_local-includes/usr/share/tails/unlock-veracrypt-volumes/volume.ui.in:38
+msgid "Lock this volume"
+msgstr "Заклучи го овој простор"
+
+#: ../config/chroot_local-includes/usr/share/tails/unlock-veracrypt-volumes/volume.ui.in:52
+msgid "_Unlock"
+msgstr "_Отклучи"
+
+#: ../config/chroot_local-includes/usr/share/tails/unlock-veracrypt-volumes/volume.ui.in:61
+msgid "Detach this volume"
+msgstr "Откачи го овој простор"
+
+#: ../config/chroot_local-includes/usr/local/share/mime/packages/unlock-veracrypt-volumes.xml.in.h:1
+msgid "TrueCrypt/VeraCrypt container"
+msgstr "TrueCrypt/VeraCrypt контејнер"
1
0

[translation/tails-misc] https://gitweb.torproject.org/translation.git/commit/?h=tails-misc
by translation@torproject.org 10 Aug '20
by translation@torproject.org 10 Aug '20
10 Aug '20
commit 323d32109ed6fcda961467e8523cd4b0a5b934e2
Author: Translation commit bot <translation(a)torproject.org>
Date: Mon Aug 10 10:15:59 2020 +0000
https://gitweb.torproject.org/translation.git/commit/?h=tails-misc
---
mk.po | 30 +++++++++++++++---------------
1 file changed, 15 insertions(+), 15 deletions(-)
diff --git a/mk.po b/mk.po
index 1e9d7d690f..fb2fbba094 100644
--- a/mk.po
+++ b/mk.po
@@ -12,8 +12,8 @@ msgstr ""
"Project-Id-Version: Tor Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-27 05:58+0200\n"
-"PO-Revision-Date: 2020-07-27 12:13+0000\n"
-"Last-Translator: Transifex Bot <>\n"
+"PO-Revision-Date: 2020-08-10 10:07+0000\n"
+"Last-Translator: Zarko Gjurov <zarkogjurov(a)gmail.com>\n"
"Language-Team: Macedonian (http://www.transifex.com/otf/torproject/language/mk/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -405,7 +405,7 @@ msgstr "Офлајн/Исклучен"
#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/additional_settings.py:333
msgid "_Unsafe Browser"
-msgstr ""
+msgstr "_Небезбеден Прелистувач"
#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/additional_settings.py:342
msgid "Enabled"
@@ -413,11 +413,11 @@ msgstr "Овозможено"
#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/additional_settings.py:344
msgid "Disabled (default)"
-msgstr ""
+msgstr "Оневозможено (стандардно)"
#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/additional_settings.py:395
msgid "On (default)"
-msgstr "Уклучено (Стандардно)"
+msgstr "Уклучено (стандардно)"
#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/additional_settings.py:397
msgid "On"
@@ -429,7 +429,7 @@ msgstr "Исклучено"
#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/ui/additional_settings.py:401
msgid "Off (default)"
-msgstr "Исклучено (Стандардно)"
+msgstr "Исклучено (стандардно)"
#: config/chroot_local-includes/usr/lib/python3/dist-packages/tailsgreeter/settings/persistence.py:92
#, python-brace-format
@@ -658,13 +658,13 @@ msgstr "Чувај ги датотеките складирани во `Пост
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:70
msgid "Welcome Screen"
-msgstr ""
+msgstr "Екран за Добредојде"
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:72
msgid ""
"Beta: only the additional setting to enable the Unsafe Browser is made "
"persistent"
-msgstr ""
+msgstr "Бета: само дополнителната поставка за овозможување на Небезбедниот Прелистувач е направена постојана"
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:85
msgid "Browser Bookmarks"
@@ -1397,14 +1397,14 @@ msgstr "Избери контејнер датотека"
#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:38
msgid "Launch the Unsafe Browser?"
-msgstr ""
+msgstr "Стартувај го Небезбедниот Прелистувач?"
#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:40
msgid ""
"The Unsafe Browser is not anonymous and the websites that you visit can see "
"your real IP address.\\n\\nOnly use the Unsafe Browser to log in to a "
"captive portal or browse trusted web pages on the local network."
-msgstr ""
+msgstr "Небезбедниот Прелистувач не е анонимен и веб страните кои ги посетувате можат да ја видат вашата вистинска IP адреса.\\n\\nКористете го Небезбедниот Прелистувач за да се најавите на Најавувачки портал или да пребарувате доверливи веб страни на локалната мрежа."
#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:51
msgid "Starting the Unsafe Browser..."
@@ -1438,7 +1438,7 @@ msgstr "Небезбеден прелистувач"
msgid ""
"The Unsafe Browser was not enabled in the Welcome Screen.\\n\\nTo use the Unsafe Browser, restart Tails and enable the Unsafe Browser in the additional settings of the Welcome Screen.\\n\n"
"To always enable the Unsafe Browser, turn on the Welcome Screen feature of the Persistent Storage."
-msgstr ""
+msgstr "Небезбедниот Прелистувач беше оневозможен на Екранот за Добредојде.\\n\\nЗа да го користите Небезбедниот Прелистувач, повторно стартувајте го Tails и овозможете го Небезбедниот Прелистувач во дополнителните поставки на Екранот за Добредојде.\\n\nЗа секогаш да биде овозможен Небезбедниот Прелистувач, на Екранот за Добредојде вклучете ја опцијата за Постојан Склад."
#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:99
msgid ""
@@ -1628,19 +1628,19 @@ msgid ""
"A captive portal is a web page that is displayed before you can access the Internet. Captive portals usually require to log in to the network or enter information such as an email address.\n"
"\n"
"The Unsafe Browser is not anonymous and can deanonymize you. Use it only to log in to captive portals."
-msgstr ""
+msgstr "Небезбедниот Прелистувач ви дозволува да се најавите на најавувачки портал.\nНајавувачкиот портал е веб страна која е прикажана пред да можете да се поврзете на Интернет. Најавувачките портали обично бараат да се најавите на мрежата или да внесете информации како што е адреса за е-пошта.\n\nНебезбедниот Прелистувач не е анонимен и може да ве деанонимизира. Користете го само за најавување на најавувачки портали."
#: ../config/chroot_local-includes/usr/share/tails/greeter/additional_settings.ui.in:572
msgid "Disable the Unsafe Browser (default)"
-msgstr ""
+msgstr "Оневозможи го Небезбедниот Прелистувач (стандардно)"
#: ../config/chroot_local-includes/usr/share/tails/greeter/additional_settings.ui.in:617
msgid "Enable the Unsafe Browser"
-msgstr ""
+msgstr "Овозможи го Небезбедниот Прелистувач"
#: ../config/chroot_local-includes/usr/share/tails/greeter/main.ui.in:100
msgid "Settings were loaded from the persistent storage."
-msgstr ""
+msgstr "Поставките беа вчитани од постојаниот склад."
#: ../config/chroot_local-includes/usr/share/tails/greeter/main.ui.in:168
msgid ""
1
0

[onionperf/master] Update Analysis and TGenParser classes to use TGenTools
by karsten@torproject.org 10 Aug '20
by karsten@torproject.org 10 Aug '20
10 Aug '20
commit 0a64de95106fcc3fb389165a74d99200cf4e18ea
Author: Ana Custura <ana(a)netstat.org.uk>
Date: Fri Jun 26 11:01:16 2020 +0100
Update Analysis and TGenParser classes to use TGenTools
---
onionperf/analysis.py | 283 ++------------------------------------------------
1 file changed, 8 insertions(+), 275 deletions(-)
diff --git a/onionperf/analysis.py b/onionperf/analysis.py
index f845dd2..2466aad 100644
--- a/onionperf/analysis.py
+++ b/onionperf/analysis.py
@@ -16,48 +16,28 @@ from stem import CircEvent, CircStatus, CircPurpose, StreamStatus
from stem.response.events import CircuitEvent, CircMinorEvent, StreamEvent, BandwidthEvent, BuildTimeoutSetEvent
from stem.response import ControlMessage, convert
+# tgentools imports
+from tgentools.analysis import Analysis, TGenParser
+
# onionperf imports
from . import util
-class Analysis(object):
+class OPAnalysis(Analysis):
def __init__(self, nickname=None, ip_address=None):
- self.nickname = nickname
- self.measurement_ip = ip_address
- self.hostname = gethostname().split('.')[0]
+ super().__init__(nickname, ip_address)
self.json_db = {'type':'onionperf', 'version':'2.0', 'data':{}}
- self.tgen_filepaths = []
self.torctl_filepaths = []
- self.date_filter = None
- self.did_analysis = False
-
- def add_tgen_file(self, filepath):
- self.tgen_filepaths.append(filepath)
def add_torctl_file(self, filepath):
self.torctl_filepaths.append(filepath)
- def get_nodes(self):
- return list(self.json_db['data'].keys())
-
def get_tor_bandwidth_summary(self, node, direction):
try:
return self.json_db['data'][node]['tor']['bandwidth_summary'][direction]
except:
return None
- def get_tgen_transfers(self, node):
- try:
- return self.json_db['data'][node]['tgen']['transfers']
- except:
- return None
-
- def get_tgen_transfers_summary(self, node):
- try:
- return self.json_db['data'][node]['tgen']['transfers_summary']
- except:
- return None
-
def analyze(self, do_complete=False, date_filter=None):
if self.did_analysis:
return
@@ -84,17 +64,11 @@ class Analysis(object):
if self.measurement_ip is None:
self.measurement_ip = "unknown"
- self.json_db['data'].setdefault(self.nickname, {'measurement_ip': self.measurement_ip}).setdefault(json_db_key, parser.get_data())
-
+ self.json_db['data'].setdefault(self.nickname, {'measurement_ip' : self.measurement_ip}).setdefault(json_db_key, parser.get_data())
+ self.json_db['data'][self.nickname]["tgen"].pop("heartbeats")
+ self.json_db['data'][self.nickname]["tgen"].pop("init_ts")
self.did_analysis = True
- def merge(self, analysis):
- for nickname in analysis.json_db['data']:
- if nickname in self.json_db['data']:
- raise Exception("Merge does not yet support multiple Analysis objects from the same node \
- (add multiple files from the same node to the same Analysis object before calling analyze instead)")
- else:
- self.json_db['data'][nickname] = analysis.json_db['data'][nickname]
def save(self, filename=None, output_prefix=os.getcwd(), do_compress=True, date_prefix=None):
if filename is None:
@@ -147,150 +121,6 @@ class Analysis(object):
analysis_instance.json_db = db
return analysis_instance
-def subproc_analyze_func(analysis_args):
- signal(SIGINT, SIG_IGN) # ignore interrupts
- a = analysis_args[0]
- do_complete = analysis_args[1]
- a.analyze(do_complete=do_complete)
- return a
-
-class ParallelAnalysis(Analysis):
-
- def analyze(self, search_path, do_complete=False, nickname=None, tgen_search_expressions=["tgen.*\.log"],
- torctl_search_expressions=["torctl.*\.log"], num_subprocs=cpu_count()):
-
- pathpairs = util.find_file_paths_pairs(search_path, tgen_search_expressions, torctl_search_expressions)
- logging.info("processing input from {0} nodes...".format(len(pathpairs)))
-
- analysis_jobs = []
- for (tgen_filepaths, torctl_filepaths) in pathpairs:
- a = Analysis()
- for tgen_filepath in tgen_filepaths:
- a.add_tgen_file(tgen_filepath)
- for torctl_filepath in torctl_filepaths:
- a.add_torctl_file(torctl_filepath)
- analysis_args = [a, do_complete]
- analysis_jobs.append(analysis_args)
-
- analyses = None
- pool = Pool(num_subprocs if num_subprocs > 0 else cpu_count())
- try:
- mr = pool.map_async(subproc_analyze_func, analysis_jobs)
- pool.close()
- while not mr.ready(): mr.wait(1)
- analyses = mr.get()
- except KeyboardInterrupt:
- logging.info("interrupted, terminating process pool")
- pool.terminate()
- pool.join()
- sys.exit()
-
- logging.info("merging {0} analysis results now...".format(len(analyses)))
- while analyses is not None and len(analyses) > 0:
- self.merge(analyses.pop())
- logging.info("done merging results: {0} total nicknames present in json db".format(len(self.json_db['data'])))
-
-class TransferStatusEvent(object):
-
- def __init__(self, line):
- self.is_success = False
- self.is_error = False
- self.is_complete = False
-
- parts = line.strip().split()
- self.unix_ts_end = util.timestamp_to_seconds(parts[2])
-
- transport_parts = parts[8].split(',')
- self.endpoint_local = transport_parts[2]
- self.endpoint_proxy = transport_parts[3]
- self.endpoint_remote = transport_parts[4]
-
- transfer_parts = parts[10].split(',')
-
- # for id, combine the time with the transfer num; this is unique for each node,
- # as long as the node was running tgen without restarting for 100 seconds or longer
- # #self.transfer_id = "{0}-{1}".format(round(self.unix_ts_end, -2), transfer_num)
- self.transfer_id = "{0}:{1}".format(transfer_parts[0], transfer_parts[1]) # id:count
-
- self.hostname_local = transfer_parts[2]
- self.method = transfer_parts[3] # 'GET' or 'PUT'
- self.filesize_bytes = int(transfer_parts[4])
- self.hostname_remote = transfer_parts[5]
- self.error_code = transfer_parts[8].split('=')[1]
-
- self.total_bytes_read = int(parts[11].split('=')[1])
- self.total_bytes_write = int(parts[12].split('=')[1])
-
- # the commander is the side that sent the command,
- # i.e., the side that is driving the download, i.e., the client side
- progress_parts = parts[13].split('=')
- self.is_commander = (self.method == 'GET' and 'read' in progress_parts[0]) or \
- (self.method == 'PUT' and 'write' in progress_parts[0])
- self.payload_bytes_status = int(progress_parts[1].split('/')[0])
-
- self.unconsumed_parts = None if len(parts) < 16 else parts[15:]
- self.elapsed_seconds = {}
-
-class TransferCompleteEvent(TransferStatusEvent):
- def __init__(self, line):
- super(TransferCompleteEvent, self).__init__(line)
- self.is_complete = True
-
- i = 0
- elapsed_seconds = 0.0
- # match up self.unconsumed_parts[0:11] with the events in the transfer_steps enum
- for k in ['socket_create', 'socket_connect', 'proxy_init', 'proxy_choice', 'proxy_request',
- 'proxy_response', 'command', 'response', 'first_byte', 'last_byte', 'checksum']:
- # parse out the elapsed time value
- keyval = self.unconsumed_parts[i]
- i += 1
-
- val = float(int(keyval.split('=')[1]))
- if val >= 0.0:
- elapsed_seconds = val / 1000000.0 # usecs to secs
- self.elapsed_seconds.setdefault(k, elapsed_seconds)
-
- self.unix_ts_start = self.unix_ts_end - elapsed_seconds
- del(self.unconsumed_parts)
-
-class TransferSuccessEvent(TransferCompleteEvent):
- def __init__(self, line):
- super(TransferSuccessEvent, self).__init__(line)
- self.is_success = True
-
-class TransferErrorEvent(TransferCompleteEvent):
- def __init__(self, line):
- super(TransferErrorEvent, self).__init__(line)
- self.is_error = True
-
-class Transfer(object):
- def __init__(self, tid):
- self.id = tid
- self.last_event = None
- self.payload_progress = {decile:None for decile in [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]}
- self.payload_bytes = {partial:None for partial in [10240, 20480, 51200, 102400, 204800, 512000, 1048576, 2097152, 5242880]}
-
- def add_event(self, status_event):
- progress_frac = float(status_event.payload_bytes_status) / float(status_event.filesize_bytes)
- progress = float(status_event.payload_bytes_status)
- for partial in sorted(self.payload_bytes.keys()):
- if progress >= partial and self.payload_bytes[partial] is None:
- self.payload_bytes[partial] = status_event.unix_ts_end
- for decile in sorted(self.payload_progress.keys()):
- if progress_frac >= decile and self.payload_progress[decile] is None:
- self.payload_progress[decile] = status_event.unix_ts_end
- self.last_event = status_event
-
- def get_data(self):
- e = self.last_event
- if e is None or not e.is_complete:
- return None
- d = e.__dict__
- if not e.is_error:
- d['elapsed_seconds']['payload_progress'] = {decile: round(self.payload_progress[decile] - e.unix_ts_start, 6) for decile in self.payload_progress if self.payload_progress[decile] is not None}
- d['elapsed_seconds']['payload_bytes'] = {partial: round(self.payload_bytes[partial] - e.unix_ts_start, 6) for partial in self.payload_bytes if self.payload_bytes[partial] is not None}
- return d
-
class Parser(object, metaclass=ABCMeta):
@abstractmethod
def parse(self, source, do_complete):
@@ -302,103 +132,6 @@ class Parser(object, metaclass=ABCMeta):
def get_name(self):
pass
-class TGenParser(Parser):
-
- def __init__(self, date_filter=None):
- ''' date_filter should be given in UTC '''
- self.state = {}
- self.transfers = {}
- self.transfers_summary = {'time_to_first_byte':{}, 'time_to_last_byte':{}, 'errors':{}}
- self.name = None
- self.date_filter = date_filter
-
- def __is_date_valid(self, date_to_check):
- if self.date_filter is None:
- # we are not asked to filter, so every date is valid
- return True
- else:
- # we are asked to filter, so the line is only valid if the date matches the filter
- # both the filter and the unix timestamp should be in UTC at this point
- return util.do_dates_match(self.date_filter, date_to_check)
-
- def __parse_line(self, line, do_complete):
- if self.name is None and re.search("Initializing traffic generator on host", line) is not None:
- self.name = line.strip().split()[11]
-
- if self.date_filter is not None:
- parts = line.split(' ', 3)
- if len(parts) < 4: # the 3rd is the timestamp, the 4th is the rest of the line
- return True
- unix_ts = float(parts[2])
- line_date = datetime.datetime.utcfromtimestamp(unix_ts).date()
- if not self.__is_date_valid(line_date):
- return True
-
- if do_complete and re.search("state\sRESPONSE\sto\sstate\sPAYLOAD", line) is not None:
- # another run of tgen starts the id over counting up from 1
- # if a prev transfer with the same id did not complete, we can be sure it never will
- parts = line.strip().split()
- transfer_parts = parts[7].strip().split(',')
- transfer_id = "{0}:{1}".format(transfer_parts[0], transfer_parts[1]) # id:count
- if transfer_id in self.state:
- self.state.pop(transfer_id)
-
- elif do_complete and re.search("transfer-status", line) is not None:
- status = TransferStatusEvent(line)
- xfer = self.state.setdefault(status.transfer_id, Transfer(status.transfer_id))
- xfer.add_event(status)
-
- elif re.search("transfer-complete", line) is not None:
- complete = TransferSuccessEvent(line)
-
- if do_complete:
- xfer = self.state.setdefault(complete.transfer_id, Transfer(complete.transfer_id))
- xfer.add_event(complete)
- self.transfers[xfer.id] = xfer.get_data()
- self.state.pop(complete.transfer_id)
-
- filesize, second = complete.filesize_bytes, int(complete.unix_ts_end)
- fb_secs = complete.elapsed_seconds['first_byte'] - complete.elapsed_seconds['command']
- lb_secs = complete.elapsed_seconds['last_byte'] - complete.elapsed_seconds['command']
-
- fb_list = self.transfers_summary['time_to_first_byte'].setdefault(filesize, {}).setdefault(second, [])
- fb_list.append(fb_secs)
- lb_list = self.transfers_summary['time_to_last_byte'].setdefault(filesize, {}).setdefault(second, [])
- lb_list.append(lb_secs)
-
- elif re.search("transfer-error", line) is not None:
- error = TransferErrorEvent(line)
-
- if do_complete:
- xfer = self.state.setdefault(error.transfer_id, Transfer(error.transfer_id))
- xfer.add_event(error)
- self.transfers[xfer.id] = xfer.get_data()
- self.state.pop(error.transfer_id)
-
- err_code, filesize, second = error.error_code, error.filesize_bytes, int(error.unix_ts_end)
-
- err_list = self.transfers_summary['errors'].setdefault(err_code, {}).setdefault(second, [])
- err_list.append(filesize)
-
- return True
-
- def parse(self, source, do_complete=False):
- source.open()
- for line in source:
- # ignore line parsing errors
- try:
- if not self.__parse_line(line, do_complete):
- break
- except:
- logging.warning("TGenParser: skipping line due to parsing error: {0}".format(line))
- continue
- source.close()
-
- def get_data(self):
- return {'transfers':self.transfers, 'transfers_summary': self.transfers_summary}
-
- def get_name(self):
- return self.name
class TorStream(object):
def __init__(self, sid):
1
0

[onionperf/master] Update do_simple analysis param to new do_complete tgen semantics
by karsten@torproject.org 10 Aug '20
by karsten@torproject.org 10 Aug '20
10 Aug '20
commit 05eb9cdf56f6ae275ace65a0bdbdcf2c3b5e1c40
Author: Ana Custura <ana(a)netstat.org.uk>
Date: Fri Jun 26 10:52:46 2020 +0100
Update do_simple analysis param to new do_complete tgen semantics
---
onionperf/analysis.py | 42 +++++++++++++++++++++---------------------
onionperf/onionperf | 8 ++++----
onionperf/reprocessing.py | 8 ++++----
3 files changed, 29 insertions(+), 29 deletions(-)
diff --git a/onionperf/analysis.py b/onionperf/analysis.py
index 20ca354..eaacbb9 100644
--- a/onionperf/analysis.py
+++ b/onionperf/analysis.py
@@ -58,7 +58,7 @@ class Analysis(object):
except:
return None
- def analyze(self, do_simple=True, date_filter=None):
+ def analyze(self, do_complete=False, date_filter=None):
if self.did_analysis:
return
@@ -70,7 +70,7 @@ class Analysis(object):
if len(filepaths) > 0:
for filepath in filepaths:
logging.info("parsing log file at {0}".format(filepath))
- parser.parse(util.DataSource(filepath), do_simple=do_simple)
+ parser.parse(util.DataSource(filepath), do_complete=do_complete)
if self.nickname is None:
parsed_name = parser.get_name()
@@ -150,13 +150,13 @@ class Analysis(object):
def subproc_analyze_func(analysis_args):
signal(SIGINT, SIG_IGN) # ignore interrupts
a = analysis_args[0]
- do_simple = analysis_args[1]
- a.analyze(do_simple=do_simple)
+ do_complete = analysis_args[1]
+ a.analyze(do_complete=do_complete)
return a
class ParallelAnalysis(Analysis):
- def analyze(self, search_path, do_simple=True, nickname=None, tgen_search_expressions=["tgen.*\.log"],
+ def analyze(self, search_path, do_complete=False, nickname=None, tgen_search_expressions=["tgen.*\.log"],
torctl_search_expressions=["torctl.*\.log"], num_subprocs=cpu_count()):
pathpairs = util.find_file_paths_pairs(search_path, tgen_search_expressions, torctl_search_expressions)
@@ -169,7 +169,7 @@ class ParallelAnalysis(Analysis):
a.add_tgen_file(tgen_filepath)
for torctl_filepath in torctl_filepaths:
a.add_torctl_file(torctl_filepath)
- analysis_args = [a, do_simple]
+ analysis_args = [a, do_complete]
analysis_jobs.append(analysis_args)
analyses = None
@@ -293,7 +293,7 @@ class Transfer(object):
class Parser(object, metaclass=ABCMeta):
@abstractmethod
- def parse(self, source, do_simple):
+ def parse(self, source, do_complete):
pass
@abstractmethod
def get_data(self):
@@ -321,7 +321,7 @@ class TGenParser(Parser):
# both the filter and the unix timestamp should be in UTC at this point
return util.do_dates_match(self.date_filter, date_to_check)
- def __parse_line(self, line, do_simple):
+ def __parse_line(self, line, do_complete):
if self.name is None and re.search("Initializing traffic generator on host", line) is not None:
self.name = line.strip().split()[11]
@@ -334,7 +334,7 @@ class TGenParser(Parser):
if not self.__is_date_valid(line_date):
return True
- if not do_simple and re.search("state\sRESPONSE\sto\sstate\sPAYLOAD", line) is not None:
+ if do_complete and re.search("state\sRESPONSE\sto\sstate\sPAYLOAD", line) is not None:
# another run of tgen starts the id over counting up from 1
# if a prev transfer with the same id did not complete, we can be sure it never will
parts = line.strip().split()
@@ -343,7 +343,7 @@ class TGenParser(Parser):
if transfer_id in self.state:
self.state.pop(transfer_id)
- elif not do_simple and re.search("transfer-status", line) is not None:
+ elif do_complete and re.search("transfer-status", line) is not None:
status = TransferStatusEvent(line)
xfer = self.state.setdefault(status.transfer_id, Transfer(status.transfer_id))
xfer.add_event(status)
@@ -351,7 +351,7 @@ class TGenParser(Parser):
elif re.search("transfer-complete", line) is not None:
complete = TransferSuccessEvent(line)
- if not do_simple:
+ if do_complete:
xfer = self.state.setdefault(complete.transfer_id, Transfer(complete.transfer_id))
xfer.add_event(complete)
self.transfers[xfer.id] = xfer.get_data()
@@ -369,7 +369,7 @@ class TGenParser(Parser):
elif re.search("transfer-error", line) is not None:
error = TransferErrorEvent(line)
- if not do_simple:
+ if do_complete:
xfer = self.state.setdefault(error.transfer_id, Transfer(error.transfer_id))
xfer.add_event(error)
self.transfers[xfer.id] = xfer.get_data()
@@ -382,12 +382,12 @@ class TGenParser(Parser):
return True
- def parse(self, source, do_simple=True):
+ def parse(self, source, do_complete=False):
source.open()
for line in source:
# ignore line parsing errors
try:
- if not self.__parse_line(line, do_simple):
+ if not self.__parse_line(line, do_complete):
break
except:
logging.warning("TGenParser: skipping line due to parsing error: {0}".format(line))
@@ -526,7 +526,7 @@ class TorCtlParser(Parser):
def __init__(self, date_filter=None):
''' date_filter should be given in UTC '''
- self.do_simple = True
+ self.do_complete = False
self.bandwidth_summary = {'bytes_read':{}, 'bytes_written':{}}
self.circuits_state = {}
self.circuits = {}
@@ -580,11 +580,11 @@ class TorCtlParser(Parser):
self.circuits_summary['buildtimes'].append(built - started)
if ended is not None and started is not None:
self.circuits_summary['lifetimes'].append(ended - started)
- if not self.do_simple:
+ if self.do_complete:
self.circuits[cid] = data
self.circuits_state.pop(cid)
- elif not self.do_simple and isinstance(event, CircMinorEvent):
+ elif self.do_complete and isinstance(event, CircMinorEvent):
if event.purpose != event.old_purpose or event.event != CircEvent.PURPOSE_CHANGED:
key = "{0}:{1}".format(event.event, event.purpose)
circ.add_event(key, arrival_dt)
@@ -620,7 +620,7 @@ class TorCtlParser(Parser):
data = strm.get_data()
if data is not None:
- if not self.do_simple:
+ if self.do_complete:
self.streams[sid] = data
self.streams_summary['lifetimes'].setdefault(stream_type, []).append(ended - started)
self.streams_state.pop(sid)
@@ -664,7 +664,7 @@ class TorCtlParser(Parser):
elif re.search("BOOTSTRAP", line) is not None and re.search("PROGRESS=100", line) is not None:
self.boot_succeeded = True
- if self.do_simple is False or (self.do_simple is True and re.search("650\sBW", line) is not None):
+ if self.do_complete or (self.do_complete is False and re.search("650\sBW", line) is not None):
# parse with stem
timestamps, sep, raw_event_str = line.partition(" 650 ")
if sep == '':
@@ -683,8 +683,8 @@ class TorCtlParser(Parser):
self.__handle_event(event, unix_ts)
return True
- def parse(self, source, do_simple=True):
- self.do_simple = do_simple
+ def parse(self, source, do_complete=False):
+ self.do_complete = do_complete
source.open(newline='\r\n')
for line in source:
# ignore line parsing errors
diff --git a/onionperf/onionperf b/onionperf/onionperf
index a7d32f6..ddbeaf1 100755
--- a/onionperf/onionperf
+++ b/onionperf/onionperf
@@ -281,8 +281,8 @@ files generated by this script will be written""",
analyze_parser.add_argument('-s', '--do-simple-parse',
help="""parse and export only summary statistics rather than full transfer/circuit/stream data""",
- action="store_true", dest="do_simple",
- default=False)
+ action="store_false", dest="do_complete",
+ default=True)
# visualize
visualize_parser = sub_parser.add_parser('visualize', description=DESC_VISUALIZE, help=HELP_VISUALIZE,
@@ -387,7 +387,7 @@ def analyze(args):
analysis.add_tgen_file(args.tgen_logpath)
if args.torctl_logpath is not None:
analysis.add_torctl_file(args.torctl_logpath)
- analysis.analyze(args.do_simple, date_filter=args.date_filter)
+ analysis.analyze(args.do_complete, date_filter=args.date_filter)
analysis.save(output_prefix=args.prefix, date_prefix=args.date_prefix)
elif args.tgen_logpath is not None and os.path.isdir(args.tgen_logpath) and args.torctl_logpath is not None and os.path.isdir(args.torctl_logpath):
@@ -396,7 +396,7 @@ def analyze(args):
torctl_logs = reprocessing.collect_logs(args.torctl_logpath, '*torctl.log*')
log_pairs = reprocessing.match(tgen_logs, torctl_logs, args.date_filter)
logging.info("Found {0} matching log pairs to be reprocessed".format(len(log_pairs)))
- reprocessing.multiprocess_logs(log_pairs, args.prefix, args.nickname, args.do_simple)
+ reprocessing.multiprocess_logs(log_pairs, args.prefix, args.nickname, args.do_complete)
else:
logging.error("Given paths were an unrecognized mix of file and directory paths, nothing will be analyzed")
diff --git a/onionperf/reprocessing.py b/onionperf/reprocessing.py
index f88f311..ad0308f 100644
--- a/onionperf/reprocessing.py
+++ b/onionperf/reprocessing.py
@@ -46,21 +46,21 @@ def match(tgen_logs, tor_logs, date_filter):
return log_pairs
-def analyze_func(prefix, nick, do_simple, pair):
+def analyze_func(prefix, nick, do_complete, pair):
analysis = Analysis(nickname=nick)
logging.info('Analysing pair for date {0}'.format(pair[2]))
analysis.add_tgen_file(pair[0])
analysis.add_torctl_file(pair[1])
- analysis.analyze(do_simple=do_simple, date_filter=pair[2])
+ analysis.analyze(do_complete=do_complete, date_filter=pair[2])
analysis.save(output_prefix=prefix)
return 1
-def multiprocess_logs(log_pairs, prefix, nick=None, do_simple=False):
+def multiprocess_logs(log_pairs, prefix, nick=None, do_complete=False):
pool = Pool(cpu_count())
analyses = None
try:
- func = partial(analyze_func, prefix, nick, do_simple)
+ func = partial(analyze_func, prefix, nick, do_complete)
mr = pool.map_async(func, log_pairs)
pool.close()
while not mr.ready():
1
0

[onionperf/master] Update tor analysis class and method names to be tor-specific
by karsten@torproject.org 10 Aug '20
by karsten@torproject.org 10 Aug '20
10 Aug '20
commit 54911cd9fc2659e0ea4b5cd5a249489e3fed18eb
Author: Ana Custura <ana(a)netstat.org.uk>
Date: Fri Jun 26 10:58:57 2020 +0100
Update tor analysis class and method names to be tor-specific
---
onionperf/analysis.py | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/onionperf/analysis.py b/onionperf/analysis.py
index eaacbb9..f845dd2 100644
--- a/onionperf/analysis.py
+++ b/onionperf/analysis.py
@@ -400,7 +400,7 @@ class TGenParser(Parser):
def get_name(self):
return self.name
-class Stream(object):
+class TorStream(object):
def __init__(self, sid):
self.stream_id = sid
self.circuit_id = None
@@ -460,7 +460,7 @@ class Stream(object):
' '.join(['%s=%s' % (event, arrived_at)
for (event, arrived_at) in sorted(self.elapsed_seconds, key=lambda item: item[1])])))
-class Circuit(object):
+class TorCircuit(object):
def __init__(self, cid):
self.circuit_id = cid
self.unix_ts_start = None
@@ -543,7 +543,7 @@ class TorCtlParser(Parser):
def __handle_circuit(self, event, arrival_dt):
# first make sure we have a circuit object
cid = int(event.id)
- circ = self.circuits_state.setdefault(cid, Circuit(cid))
+ circ = self.circuits_state.setdefault(cid, TorCircuit(cid))
is_hs_circ = True if event.purpose in (CircPurpose.HS_CLIENT_INTRO, CircPurpose.HS_CLIENT_REND, \
CircPurpose.HS_SERVICE_INTRO, CircPurpose.HS_SERVICE_REND) else False
@@ -597,7 +597,7 @@ class TorCtlParser(Parser):
def __handle_stream(self, event, arrival_dt):
sid = int(event.id)
- strm = self.streams_state.setdefault(sid, Stream(sid))
+ strm = self.streams_state.setdefault(sid, TorStream(sid))
if event.circ_id is not None:
strm.set_circ_id(event.circ_id)
1
0

[onionperf/master] Add TGenTools requirement, update code to use new OPAnalysis class
by karsten@torproject.org 10 Aug '20
by karsten@torproject.org 10 Aug '20
10 Aug '20
commit ae18e7a7cbf1330f096ecd569eb45e9cfc039dda
Author: Ana Custura <ana(a)netstat.org.uk>
Date: Fri Jun 26 11:08:28 2020 +0100
Add TGenTools requirement, update code to use new OPAnalysis class
---
onionperf/onionperf | 8 ++++----
requirements.txt | 1 +
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/onionperf/onionperf b/onionperf/onionperf
index ddbeaf1..5e2c2fb 100755
--- a/onionperf/onionperf
+++ b/onionperf/onionperf
@@ -381,8 +381,8 @@ def analyze(args):
logging.warning("No logfile paths were given, nothing will be analyzed")
elif (args.tgen_logpath is None or os.path.isfile(args.tgen_logpath)) and (args.torctl_logpath is None or os.path.isfile(args.torctl_logpath)):
- from onionperf.analysis import Analysis
- analysis = Analysis(nickname=args.nickname, ip_address=args.ip_address)
+ from onionperf.analysis import OPAnalysis
+ analysis = OPAnalysis(nickname=args.nickname, ip_address=args.ip_address)
if args.tgen_logpath is not None:
analysis.add_tgen_file(args.tgen_logpath)
if args.torctl_logpath is not None:
@@ -403,13 +403,13 @@ def analyze(args):
def visualize(args):
from onionperf.visualization import TGenVisualization
- from onionperf.analysis import Analysis
+ from onionperf.analysis import OPAnalysis
tgen_viz = TGenVisualization()
for (paths, label) in args.datasets:
analyses = []
for path in paths:
- analysis = Analysis.load(filename=path)
+ analysis = OPAnalysis.load(filename=path)
if analysis is not None:
analyses.append(analysis)
tgen_viz.add_dataset(analyses, label)
diff --git a/requirements.txt b/requirements.txt
index f70e46a..46853f8 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -8,3 +8,4 @@ pandas
scipy
seaborn
stem >= 1.7.0
+tgentools
1
0

10 Aug '20
commit 074842a412c2d7ede45a40eb4fb610cd32619c11
Author: Ana Custura <ana(a)netstat.org.uk>
Date: Sat Jul 11 11:38:54 2020 +0100
Adds support for previous analyses
---
onionperf/analysis.py | 6 ++++
onionperf/visualization.py | 72 ++++++++++++++++++++++++++++++++--------------
2 files changed, 57 insertions(+), 21 deletions(-)
diff --git a/onionperf/analysis.py b/onionperf/analysis.py
index 53d879c..49d6dba 100644
--- a/onionperf/analysis.py
+++ b/onionperf/analysis.py
@@ -100,6 +100,12 @@ class OPAnalysis(Analysis):
except:
return None
+ def get_tgen_transfers(self, node):
+ try:
+ return self.json_db['data'][node]['tgen']['transfers']
+ except:
+ return None
+
@classmethod
def load(cls, filename="onionperf.analysis.json.xz", input_prefix=os.getcwd()):
filepath = os.path.abspath(os.path.expanduser("{0}".format(filename)))
diff --git a/onionperf/visualization.py b/onionperf/visualization.py
index 48c837b..68ad751 100644
--- a/onionperf/visualization.py
+++ b/onionperf/visualization.py
@@ -54,32 +54,62 @@ class TGenVisualization(Visualization):
streams = []
for (analyses, label) in self.datasets:
for analysis in analyses:
- for client in analysis.get_nodes():
- tgen_streams = analysis.get_tgen_streams(client)
- for stream_id, stream_data in tgen_streams.items():
- stream = {"stream_id": stream_id, "label": label,
- "filesize_bytes": stream_data["stream_info"]["recvsize"]}
- stream["server"] = "onion" if ".onion:" in stream_data["transport_info"]["remote"] else "public"
- if "time_info" in stream_data:
- s = stream_data["time_info"]
- if "payload_progress" in s:
+ if analysis.json_db['version'] >= '3':
+ for client in analysis.get_nodes():
+ tgen_streams = analysis.get_tgen_streams(client)
+ for stream_id, stream_data in tgen_streams.items():
+ stream = {"stream_id": stream_id, "label": label,
+ "filesize_bytes": int(stream_data["stream_info"]["recvsize"])}
+ stream["server"] = "onion" if ".onion:" in stream_data["transport_info"]["remote"] else "public"
+ if "time_info" in stream_data:
+ s = stream_data["time_info"]
+ if "usecs-to-first-byte-recv" in s:
+ stream["time_to_first_byte"] = float(s["usecs-to-first-byte-recv"])/1000000
+ if "usecs-to-last-byte-recv" in s:
+ stream["time_to_last_byte"] = float(s["usecs-to-last-byte-recv"])/1000000
+ if "elapsed_seconds" in stream_data:
+ s = stream_data["elapsed_seconds"]
+ # Explanation of the math below for computing Mbps: From filesize_bytes
+ # and payload_progress fields we can compute the number of seconds that
+ # have elapsed between receiving bytes 524,288 and 1,048,576, which is a
+ # total amount of 524,288 bytes or 4,194,304 bits or 4.194304 megabits.
+ # We want the reciprocal of that value with unit megabits per second.
+ if stream_data["stream_info"]["recvsize"] == 5242880 and "0.2" in s["payload_progress_recv"]:
+ stream["mbps"] = 4.194304 / (s["payload_progress_recv"]["0.2"] - s["payload_progress_recv"]["0.1"])
+ if "error" in stream_data["transport_info"] and stream_data["transport_info"]["error"] != "NONE":
+ stream["error_code"] = stream_data["transport_info"]["error"]
+ if "unix_ts_start" in stream_data:
+ stream["start"] = datetime.datetime.utcfromtimestamp(stream_data["unix_ts_start"])
+ streams.append(stream)
+ else:
+ for client in analysis.get_nodes():
+ tgen_transfers = analysis.get_tgen_transfers(client)
+ for transfer_id, transfer_data in tgen_transfers.items():
+ stream = {"stream_id": transfer_id, "label": label,
+ "filesize_bytes": transfer_data["filesize_bytes"]}
+ stream["server"] = "onion" if ".onion:" in transfer_data["endpoint_remote"] else "public"
+ if "elapsed_seconds" in transfer_data:
+ s = transfer_data["elapsed_seconds"]
+ if "payload_progress" in s:
# Explanation of the math below for computing Mbps: From filesize_bytes
# and payload_progress fields we can compute the number of seconds that
# have elapsed between receiving bytes 524,288 and 1,048,576, which is a
# total amount of 524,288 bytes or 4,194,304 bits or 4.194304 megabits.
# We want the reciprocal of that value with unit megabits per second.
- if stream_data["stream_info"]["recv_size"] == 5242880 and "0.2" in s["elapsed_seconds"]["payload_progress_recv"]:
- stream["mbps"] = 4.194304 / (s["elapsed_seconds"]["payload_progress_recv"]["0.2"] - s["elapsed_seconds"]["payload_progress_recv"]["0.1"])
-
- if "usecs-to-first-byte-recv" in s:
- stream["time_to_first_byte"] = float(s["usecs-to-first-byte-recv"])/1000000
- if "usecs-to-last-byte-recv" in s:
- stream["time_to_last_byte"] = float(s["usecs-to-last-byte-recv"])/1000000
- if "error" in stream_data["transport_info"] and stream_data["transport_info"]["error"] != "NONE":
- stream["error_code"] = stream_data["transport_info"]["error"]
- if "unix_ts_start" in stream_data:
- stream["start"] = datetime.datetime.utcfromtimestamp(stream_data["unix_ts_start"])
- streams.append(stream)
+ if transfer_data["filesize_bytes"] == 1048576 and "1.0" in s["payload_progress"]:
+ stream["mbps"] = 4.194304 / (s["payload_progress"]["1.0"] - s["payload_progress"]["0.5"])
+ if transfer_data["filesize_bytes"] == 5242880 and "0.2" in s["payload_progress"]:
+ stream["mbps"] = 4.194304 / (s["payload_progress"]["0.2"] - s["payload_progress"]["0.1"])
+ if "first_byte" in s:
+ stream["time_to_first_byte"] = s["first_byte"]
+ if "last_byte" in s:
+ stream["time_to_last_byte"] = s["last_byte"]
+ if "error_code" in transfer_data and transfer_data["error_code"] != "NONE":
+ stream["error_code"] = transfer_data["error_code"]
+ if "unix_ts_start" in transfer_data:
+ stream["start"] = datetime.datetime.utcfromtimestamp(transfer_data["unix_ts_start"])
+ streams.append(stream)
+
self.data = pd.DataFrame.from_records(streams, index="stream_id")
def __plot_firstbyte_ecdf(self):
1
0