tor-commits
Threads by month
- ----- 2025 -----
- June
- 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
May 2019
- 17 participants
- 2795 discussions

[translation/tpo-web_completed] Update translations for tpo-web_completed
by translation@torproject.org 13 May '19
by translation@torproject.org 13 May '19
13 May '19
commit 37999c2a28814b42342d22304c0f56da9559e160
Author: Translation commit bot <translation(a)torproject.org>
Date: Mon May 13 14:51:07 2019 +0000
Update translations for tpo-web_completed
---
contents+pt-PT.po | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/contents+pt-PT.po b/contents+pt-PT.po
index f6ac2b39d..c5db000d7 100644
--- a/contents+pt-PT.po
+++ b/contents+pt-PT.po
@@ -4,8 +4,8 @@
# Manuela Silva <inactive+h_manuela_rodsilva(a)transifex.com>, 2019
# Manuela Silva, 2019
# Rui Melo <viper5000pt(a)gmail.com>, 2019
-# Hugo9191 <hugoncosta(a)gmail.com>, 2019
# Rui <xymarior(a)yandex.com>, 2019
+# Hugo9191 <hugoncosta(a)gmail.com>, 2019
#
msgid ""
msgstr ""
@@ -13,7 +13,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-09 15:06+CET\n"
"PO-Revision-Date: 2019-03-09 10:41+0000\n"
-"Last-Translator: Rui <xymarior(a)yandex.com>, 2019\n"
+"Last-Translator: Hugo9191 <hugoncosta(a)gmail.com>, 2019\n"
"Language-Team: Portuguese (Portugal) (https://www.transifex.com/otf/teams/1519/pt_PT/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -505,6 +505,8 @@ msgid ""
"The Tor Project, Inc. is a US 501(c)(3) nonprofit organization committed to "
"transparency in its work and reporting."
msgstr ""
+"O Tor Project é uma organização sem fins lucrativos US 501(c)(3) "
+"comprometida à transparência do seu trabalho e comunicação."
#: https//www.torproject.org/press/-new-release-tails/
#: (content/press/new-release-tails/contents+en.lrpost.title)
@@ -559,6 +561,11 @@ msgid ""
"href=\"https://www.torproject.org/dist/torbrowser/8.5a10/\">distribution "
"directory</a>."
msgstr ""
+"O Tor Browser 8.5a10 está agora disponível na <a "
+"href=\"https://www.torproject.org/projects/torbrowser.html.en#downloads-"
+"alpha\">Página do projeto Tor Browser</a> e também no nosso <a "
+"href=\"https://www.torproject.org/dist/torbrowser/8.5a10/\">diretório de "
+"distribuição</a>."
#: templates/contact.html:8
msgid "Chat with us on"
@@ -720,7 +727,7 @@ msgstr "Idioma"
#: templates/download-tor.html:25 templates/download-tor.html:30
msgid "sig"
-msgstr ""
+msgstr "sig"
#: templates/download.html:5
msgid "Get Connected"
1
0

13 May '19
commit 060ff713fd720cd16d69808c22cc21e3ffc6e5ef
Author: Translation commit bot <translation(a)torproject.org>
Date: Mon May 13 14:51:01 2019 +0000
Update translations for tpo-web
---
contents+pt-PT.po | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/contents+pt-PT.po b/contents+pt-PT.po
index f6ac2b39d..c5db000d7 100644
--- a/contents+pt-PT.po
+++ b/contents+pt-PT.po
@@ -4,8 +4,8 @@
# Manuela Silva <inactive+h_manuela_rodsilva(a)transifex.com>, 2019
# Manuela Silva, 2019
# Rui Melo <viper5000pt(a)gmail.com>, 2019
-# Hugo9191 <hugoncosta(a)gmail.com>, 2019
# Rui <xymarior(a)yandex.com>, 2019
+# Hugo9191 <hugoncosta(a)gmail.com>, 2019
#
msgid ""
msgstr ""
@@ -13,7 +13,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-09 15:06+CET\n"
"PO-Revision-Date: 2019-03-09 10:41+0000\n"
-"Last-Translator: Rui <xymarior(a)yandex.com>, 2019\n"
+"Last-Translator: Hugo9191 <hugoncosta(a)gmail.com>, 2019\n"
"Language-Team: Portuguese (Portugal) (https://www.transifex.com/otf/teams/1519/pt_PT/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -505,6 +505,8 @@ msgid ""
"The Tor Project, Inc. is a US 501(c)(3) nonprofit organization committed to "
"transparency in its work and reporting."
msgstr ""
+"O Tor Project é uma organização sem fins lucrativos US 501(c)(3) "
+"comprometida à transparência do seu trabalho e comunicação."
#: https//www.torproject.org/press/-new-release-tails/
#: (content/press/new-release-tails/contents+en.lrpost.title)
@@ -559,6 +561,11 @@ msgid ""
"href=\"https://www.torproject.org/dist/torbrowser/8.5a10/\">distribution "
"directory</a>."
msgstr ""
+"O Tor Browser 8.5a10 está agora disponível na <a "
+"href=\"https://www.torproject.org/projects/torbrowser.html.en#downloads-"
+"alpha\">Página do projeto Tor Browser</a> e também no nosso <a "
+"href=\"https://www.torproject.org/dist/torbrowser/8.5a10/\">diretório de "
+"distribuição</a>."
#: templates/contact.html:8
msgid "Chat with us on"
@@ -720,7 +727,7 @@ msgstr "Idioma"
#: templates/download-tor.html:25 templates/download-tor.html:30
msgid "sig"
-msgstr ""
+msgstr "sig"
#: templates/download.html:5
msgid "Get Connected"
1
0

[exonerator/master] Adapt "About Tor" links to redesigned Tor website.
by karsten@torproject.org 13 May '19
by karsten@torproject.org 13 May '19
13 May '19
commit 41c7671ec0bd10e769d559c932d5cedebf080440
Author: Karsten Loesing <karsten.loesing(a)gmx.net>
Date: Mon May 13 15:18:53 2019 +0200
Adapt "About Tor" links to redesigned Tor website.
Reported by nusenu, changes suggested by irl.
Fixes #30415.
---
CHANGELOG.md | 7 +++++++
.../torproject/metrics/exonerator/ExoneraTorServlet.java | 15 ++++++---------
src/main/resources/ExoneraTor.properties | 7 +++----
src/main/resources/ExoneraTor_de.properties | 7 +++----
src/main/resources/ExoneraTor_fr.properties | 7 +++----
src/main/resources/ExoneraTor_ro.properties | 7 +++----
src/main/resources/ExoneraTor_sv.properties | 7 +++----
7 files changed, 28 insertions(+), 29 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8a628fa..4b2646d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+# Changes in version 4.1.0 - 2019-05-??
+
+ * Minor changes
+ - Remove first link under "About Tor" and change second and third
+ link to adapt to redesigned Tor website.
+
+
# Changes in version 4.0.0 - 2018-08-14
* Major changes
diff --git a/src/main/java/org/torproject/metrics/exonerator/ExoneraTorServlet.java b/src/main/java/org/torproject/metrics/exonerator/ExoneraTorServlet.java
index 5909f26..a74aa60 100644
--- a/src/main/java/org/torproject/metrics/exonerator/ExoneraTorServlet.java
+++ b/src/main/java/org/torproject/metrics/exonerator/ExoneraTorServlet.java
@@ -373,7 +373,7 @@ public class ExoneraTorServlet extends HttpServlet {
private void writeSummaryUnableToConnectToBackend(PrintWriter out,
ResourceBundle rb) {
String contactLink =
- "<a href=\"https://www.torproject.org/about/contact\">"
+ "<a href=\"https://www.torproject.org/contact\">"
+ rb.getString("summary.serverproblem.dbempty.body.link")
+ "</a>";
this.writeSummary(out, rb.getString("summary.heading"),
@@ -385,7 +385,7 @@ public class ExoneraTorServlet extends HttpServlet {
private void writeSummaryNoData(PrintWriter out, ResourceBundle rb) {
String contactLink =
- "<a href=\"https://www.torproject.org/about/contact\">"
+ "<a href=\"https://www.torproject.org/contact\">"
+ rb.getString("summary.serverproblem.dbempty.body.link")
+ "</a>";
this.writeSummary(out, rb.getString("summary.heading"),
@@ -453,7 +453,7 @@ public class ExoneraTorServlet extends HttpServlet {
private void writeSummaryNoDataForThisInterval(PrintWriter out,
ResourceBundle rb) {
String contactLink =
- "<a href=\"https://www.torproject.org/about/contact\">"
+ "<a href=\"https://www.torproject.org/contact\">"
+ rb.getString("summary.serverproblem.dbempty.body.link")
+ "</a>";
this.writeSummary(out, rb.getString("summary.heading"),
@@ -625,13 +625,10 @@ public class ExoneraTorServlet extends HttpServlet {
+ " </div><!-- col -->\n",
rb.getString("footer.abouttor.heading"),
String.format(rb.getString("footer.abouttor.body.text"),
- "<a href=\"https://www.torproject.org/about/"
- + "overview#thesolution\">"
+ "<a href=\"https://www.torproject.org/about\">"
+ rb.getString("footer.abouttor.body.link1") + "</a>",
- "<a href=\"https://www.torproject.org/about/overview\">"
- + rb.getString("footer.abouttor.body.link2") + "</a>",
- "<a href=\"https://www.torproject.org/about/contact\">"
- + rb.getString("footer.abouttor.body.link3") + "</a>"));
+ "<a href=\"https://www.torproject.org/contact\">"
+ + rb.getString("footer.abouttor.body.link2") + "</a>"));
out.printf(" <div class=\"col-xs-6\">\n"
+ " <h3>%s</h3>\n"
+ " <p class=\"small\">%s</p>\n"
diff --git a/src/main/resources/ExoneraTor.properties b/src/main/resources/ExoneraTor.properties
index 936754a..05bb0cb 100644
--- a/src/main/resources/ExoneraTor.properties
+++ b/src/main/resources/ExoneraTor.properties
@@ -43,10 +43,9 @@ technicaldetails.exit.yes=Yes
technicaldetails.exit.no=No
permanentlink.heading=Permanent link
footer.abouttor.heading=About Tor
-footer.abouttor.body.text=Tor is an international software project to anonymize Internet traffic by %s. Therefore, if you see traffic from a Tor relay, this traffic usually originates from someone using Tor, rather than from the relay operator. The Tor Project and Tor relay operators have no records of the traffic that passes over the network and therefore cannot provide any information about its origin. Be sure to %s, and don't hesitate to %s for more information.
-footer.abouttor.body.link1=encrypting packets and sending them through a series of hops before they reach their destination
-footer.abouttor.body.link2=learn more about Tor
-footer.abouttor.body.link3=contact The Tor Project, Inc.
+footer.abouttor.body.text=Tor is an international software project to anonymize Internet traffic by encrypting packets and sending them through a series of hops before they reach their destination. Therefore, if you see traffic from a Tor relay, this traffic usually originates from someone using Tor, rather than from the relay operator. The Tor Project and Tor relay operators have no records of the traffic that passes over the network and therefore cannot provide any information about its origin. Be sure to %s, and don't hesitate to %s for more information.
+footer.abouttor.body.link1=learn more about Tor
+footer.abouttor.body.link2=contact The Tor Project, Inc.
footer.aboutexonerator.heading=About ExoneraTor
footer.aboutexonerator.body=The ExoneraTor service maintains a database of IP addresses that have been part of the Tor network. It answers the question whether there was a Tor relay running on a given IP address on a given date. ExoneraTor may store more than one IP address per relay if relays use a different IP address for exiting to the Internet than for registering in the Tor network, and it stores whether a relay permitted transit of Tor traffic to the open Internet at that time.
footer.language.name=English
diff --git a/src/main/resources/ExoneraTor_de.properties b/src/main/resources/ExoneraTor_de.properties
index fbe8464..13b150b 100644
--- a/src/main/resources/ExoneraTor_de.properties
+++ b/src/main/resources/ExoneraTor_de.properties
@@ -43,10 +43,9 @@ technicaldetails.exit.yes=Ja
technicaldetails.exit.no=Nein
permanentlink.heading=Dauerhafter Link
footer.abouttor.heading=\u00dcber Tor
-footer.abouttor.body.text=Tor ist ein internationales Softwareprojekt um Internetverbindungen zu anonymisieren indem %s. Wenn Sie eine Internetverbindung sehen, die von einem Tor-Server kommt, stammt diese in der Regel von jemandem, der Tor benutzt, und nicht vom Betreiber des Tor-Servers selbst. Weder The Tor Project, Inc. noch die Tor-Server-Betreiber besitzen Aufzeichnungen \u00fcber die Internetverbindungen im Tor-Netzwerk und k\u00f6nnen daher keine Auskunft \u00fcber den Ursprung der Internetverbindung geben. Mehr Informationen \u00fcber Tor erhalten Sie %s. The Tor Project, Inc. steht Ihnen jederzeit f\u00fcr %s zur Verf\u00fcgung.
-footer.abouttor.body.link1=Datenpakete verschl\u00fcsselt und \u00fcber eine Reihe von Stationen geleitet werden bevor diese ihr Ziel erreichen
-footer.abouttor.body.link2=hier
-footer.abouttor.body.link3=Fragen
+footer.abouttor.body.text=Tor ist ein internationales Softwareprojekt um Internetverbindungen zu anonymisieren indem Datenpakete verschl\u00fcsselt und \u00fcber eine Reihe von Stationen geleitet werden bevor diese ihr Ziel erreichen. Wenn Sie eine Internetverbindung sehen, die von einem Tor-Server kommt, stammt diese in der Regel von jemandem, der Tor benutzt, und nicht vom Betreiber des Tor-Servers selbst. Weder The Tor Project, Inc. noch die Tor-Server-Betreiber besitzen Aufzeichnungen \u00fcber die Internetverbindungen im Tor-Netzwerk und k\u00f6nnen daher keine Auskunft \u00fcber den Ursprung der Internetverbindung geben. Mehr Informationen \u00fcber Tor erhalten Sie %s. The Tor Project, Inc. steht Ihnen jederzeit f\u00fcr %s zur Verf\u00fcgung.
+footer.abouttor.body.link1=hier
+footer.abouttor.body.link2=Fragen
footer.aboutexonerator.heading=\u00dcber ExoneraTor
footer.aboutexonerator.body=Der ExoneraTor-Dienst basiert auf einer Datenbank von IP-Adressen, die Teil des Tor-Netzwerks sind oder waren. Dieser Dienst beantwortet die Frage, ob es an einem bestimmten Tag einen Tor-Server mit einer bestimmten IP-Adresse gegeben hat. ExoneraTor kann in einigen F\u00e4llen mehr als nur eine IP-Adresse pro Tor-Server speichern, falls ein Tor-Server eine andere IP-Adresse f\u00fcr ausgehende Verbindungen verwendet hat als die IP-Adresse um sich im Tor-Netzwerk zu registrieren. ExoneraTor speichert au\u00dferdem ob ein Tor-Server Verbindungen ins offene Internet zugelassen hat oder nicht.
footer.language.name=Deutsch
diff --git a/src/main/resources/ExoneraTor_fr.properties b/src/main/resources/ExoneraTor_fr.properties
index 93c33bb..3aaf3e5 100644
--- a/src/main/resources/ExoneraTor_fr.properties
+++ b/src/main/resources/ExoneraTor_fr.properties
@@ -43,10 +43,9 @@ technicaldetails.exit.yes=Oui
technicaldetails.exit.no=Non
permanentlink.heading=Lien permanent
footer.abouttor.heading=\u00c0 propos de Tor
-footer.abouttor.body.text=Tor est un projet international d\u00e9veloppant des logiciels pour anonymiser le trafic Internet en %s. Par cons\u00e9quent, si vous voyez du trafic en provenance d'un relais Tor, ce trafic provient habituellement de quelqu'un qui utilise Tor, plut\u00f4t que de l'op\u00e9rateur du relais. Le Projet Tor et les op\u00e9rateurs de relais Tor n'ont aucune trace du trafic relay\u00e9 par le r\u00e9seau et ne peuvent donc fournir aucune information sur son origine. N'h\u00e9sitez pas \u00e0 vous %s et n'h\u00e9sitez pas \u00e0 %s pour obtenir d'avantage d'informations.
-footer.abouttor.body.link1=chiffrant les paquets et en les faisant transiter par une s\u00e9rie de relais avant qu'ils n'atteignent leur destination
-footer.abouttor.body.link2=renseigner d'avantage au sujet de Tor
-footer.abouttor.body.link3=contacter \u00ab The Tor Project, Inc. \u00bb
+footer.abouttor.body.text=Tor est un projet international d\u00e9veloppant des logiciels pour anonymiser le trafic Internet en chiffrant les paquets et en les faisant transiter par une s\u00e9rie de relais avant qu'ils n'atteignent leur destination. Par cons\u00e9quent, si vous voyez du trafic en provenance d'un relais Tor, ce trafic provient habituellement de quelqu'un qui utilise Tor, plut\u00f4t que de l'op\u00e9rateur du relais. Le Projet Tor et les op\u00e9rateurs de relais Tor n'ont aucune trace du trafic relay\u00e9 par le r\u00e9seau et ne peuvent donc fournir aucune information sur son origine. N'h\u00e9sitez pas \u00e0 vous %s et n'h\u00e9sitez pas \u00e0 %s pour obtenir d'avantage d'informations.
+footer.abouttor.body.link1=renseigner d'avantage au sujet de Tor
+footer.abouttor.body.link2=contacter \u00ab The Tor Project, Inc. \u00bb
footer.aboutexonerator.heading=\u00c0 propos d'ExoneraTor
footer.aboutexonerator.body=Le service ExoneraTor g\u00e8re une base de donn\u00e9es d'adresses IP qui ont fait partie du r\u00e9seau Tor. Il permet de savoir si un relais Tor fonctionnait pour une adresse IP donn\u00e9e \u00e0 une date pr\u00e9cise. ExoneraTor peut enregistrer plus d'une adresse IP par relais si ces derniers utilisent une adresse IP diff\u00e9rente pour se connecter \u00e0 Internet de celle utilis\u00e9e pour s'enregistrer sur le r\u00e9seau Tor. ExoneraTor enregistre \u00e9galement les dates et heures auxquelles un relais a permis de faire transiter du trafic en provenance de Tor vers Internet.
footer.language.name=fran\u00e7ais
diff --git a/src/main/resources/ExoneraTor_ro.properties b/src/main/resources/ExoneraTor_ro.properties
index 3d58072..476f020 100644
--- a/src/main/resources/ExoneraTor_ro.properties
+++ b/src/main/resources/ExoneraTor_ro.properties
@@ -43,10 +43,9 @@ technicaldetails.exit.yes=Da
technicaldetails.exit.no=Nu
permanentlink.heading=Link permanent
footer.abouttor.heading=Despre Tor
-footer.abouttor.body.text=Tor este un proiect software interna\u021bional pentru anonimizarea traficului de internet prin %s. De aceea, dac\u0103 vede\u021bi trafic de la un nod Tor, acest trafic provine mai degrab\u0103 de la un client care folose\u0219te Tor, nu de la operatorul releului. The Tor Project, Inc. (organiza\u021bia) \u0219i operatorii nodurilor Tor nu de\u021bin informa\u021bii referitoare la traficul care trece prin re\u021bea \u0219i, implicit, prin nodurile operate de ace\u0219tia, de aceea nu pot furniza informa\u021bii despre originea acestuia. Asigura\u021bi-v\u0103 c\u0103 %s \u0219i nu ezita\u021bi s\u0103 %s pentru mai multe informa\u021bii.
-footer.abouttor.body.link1=criptarea pachetelor de date \u0219i transmiterea acestora printr-o serie de hop-uri \u00eenainte ca ele s\u0103 ajung\u0103 la destina\u021bie
-footer.abouttor.body.link2=Afla\u021bi mai multe despre Tor
-footer.abouttor.body.link3=contacta\u021bi The Tor Project, Inc.
+footer.abouttor.body.text=Tor este un proiect software interna\u021bional pentru anonimizarea traficului de internet prin criptarea pachetelor de date \u0219i transmiterea acestora printr-o serie de hop-uri \u00eenainte ca ele s\u0103 ajung\u0103 la destina\u021bie. De aceea, dac\u0103 vede\u021bi trafic de la un nod Tor, acest trafic provine mai degrab\u0103 de la un client care folose\u0219te Tor, nu de la operatorul releului. The Tor Project, Inc. (organiza\u021bia) \u0219i operatorii nodurilor Tor nu de\u021bin informa\u021bii referitoare la traficul care trece prin re\u021bea \u0219i, implicit, prin nodurile operate de ace\u0219tia, de aceea nu pot furniza informa\u021bii despre originea acestuia. Asigura\u021bi-v\u0103 c\u0103 %s \u0219i nu ezita\u021bi s\u0103 %s pentru mai multe informa\u021bii.
+footer.abouttor.body.link1=Afla\u021bi mai multe despre Tor
+footer.abouttor.body.link2=contacta\u021bi The Tor Project, Inc.
footer.aboutexonerator.heading=Despre ExoneraTor
footer.aboutexonerator.body=Serviciul ExoneraTor opereaz\u0103 o baz\u0103 de date de adrese IP care au fost parte din re\u021belaua Tor la un anumit moment. Acest serviciu r\u0103spunde la \u00eentrebarea dac\u0103 a existat un nod Tor care a func\u021bionat pe o anumit\u0103 adres\u0103 IP la o anumit\u0103 dat\u0103. ExoneraTor poate stoca mai mult de o adresa IP per nod dac\u0103 nodurile folosesc o alt\u0103 adres\u0103 IP pentru a ie\u0219i pe internet dec\u00e2t cea folosit\u0103 pentru \u00eenregistrarea \u00een re\u021beaua Tor \u0219i stocheaz\u0103 dac\u0103 un nod a permis tranzitarea de trafic din re\u021beaua Tor catre internetul public la acea dat\u0103.
footer.language.name=rom\u00e2n\u0103
diff --git a/src/main/resources/ExoneraTor_sv.properties b/src/main/resources/ExoneraTor_sv.properties
index 8e649bd..53427b6 100644
--- a/src/main/resources/ExoneraTor_sv.properties
+++ b/src/main/resources/ExoneraTor_sv.properties
@@ -43,10 +43,9 @@ technicaldetails.exit.yes=Ja
technicaldetails.exit.no=Nej
permanentlink.heading=Permanent l\u00e4nk
footer.abouttor.heading=Om Tor
-footer.abouttor.body.text=Tor \u00e4r ett internationellt mjukvaruprojekt f\u00f6r att anonymisera internettrafik genom att %s. Om du ser trafik fr\u00e5n ett Tor-rel\u00e4 s\u00e5 kommer den trafiken oftast fr\u00e5n n\u00e5gon som anv\u00e4nder sig av Tor snarare \u00e4n fr\u00e5n sj\u00e4lva rel\u00e4operat\u00f6ren. Vare sig Tor-projektet eller Tor-rel\u00e4operat\u00f6rer har n\u00e5gon historik \u00f6ver trafiken som passerar genom n\u00e4tverket och kan d\u00e4rf\u00f6r inte ge n\u00e5gon information om dess ursprung. Se till att %s och tveka inte att %s f\u00f6r ytterligare information.
-footer.abouttor.body.link1=kryptera datat och skicka det genom flera hopp innan det n\u00e5r sin destination
-footer.abouttor.body.link2=l\u00e4sa p\u00e5 om Tor
-footer.abouttor.body.link3=kontakta Tor-projektet
+footer.abouttor.body.text=Tor \u00e4r ett internationellt mjukvaruprojekt f\u00f6r att anonymisera internettrafik genom att kryptera datat och skicka det genom flera hopp innan det n\u00e5r sin destination. Om du ser trafik fr\u00e5n ett Tor-rel\u00e4 s\u00e5 kommer den trafiken oftast fr\u00e5n n\u00e5gon som anv\u00e4nder sig av Tor snarare \u00e4n fr\u00e5n sj\u00e4lva rel\u00e4operat\u00f6ren. Vare sig Tor-projektet eller Tor-rel\u00e4operat\u00f6rer har n\u00e5gon historik \u00f6ver trafiken som passerar genom n\u00e4tverket och kan d\u00e4rf\u00f6r inte ge n\u00e5gon information om dess ursprung. Se till att %s och tveka inte att %s f\u00f6r ytterligare information.
+footer.abouttor.body.link1=l\u00e4sa p\u00e5 om Tor
+footer.abouttor.body.link2=kontakta Tor-projektet
footer.aboutexonerator.heading=Om ExoneraTor
footer.aboutexonerator.body=Tj\u00e4nsten ExoneraTor uppr\u00e4tth\u00e5ller en databas \u00f6ver IP-adresser som har varit en del av Tor-n\u00e4tverket. Den ger svar p\u00e5 fr\u00e5gan om det var ett Tor-rel\u00e4 som anv\u00e4nde en viss IP-adress vid ett givet datum. ExoneraTor kan komma att lagra fler \u00e4n en IP-adress per rel\u00e4 f\u00f6r rel\u00e4n som anv\u00e4nder en annan IP-adress f\u00f6r att ansluta till internet \u00e4n den som anv\u00e4ndes f\u00f6r att registrera sig i Tor-n\u00e4tverket. Huruvida ett rel\u00e4 har till\u00e5tit Tor-trafik ut mot internet vid tidpunkten eller ej lagras ocks\u00e5.
footer.language.name=svenska
1
0

[collector/master] Archive bandwidth files in relaydescs module.
by karsten@torproject.org 13 May '19
by karsten@torproject.org 13 May '19
13 May '19
commit dcbac68b48ae31b1bfbabab7a9c32f5577b78571
Author: Karsten Loesing <karsten.loesing(a)gmx.net>
Date: Thu May 2 22:02:23 2019 +0200
Archive bandwidth files in relaydescs module.
Also update to metrics-lib 2.6.1.
Implements #30218.
---
CHANGELOG.md | 7 ++++
build.xml | 4 +--
.../metrics/collector/conf/Annotation.java | 1 +
.../collector/relaydescs/ArchiveWriter.java | 42 +++++++++++++++++++++-
.../relaydescs/RelayDescriptorDownloader.java | 24 ++++++++++---
.../relaydescs/RelayDescriptorParser.java | 42 ++++++++++++++++++++++
src/main/resources/create-tarballs.sh | 7 ++++
7 files changed, 120 insertions(+), 7 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0307748..0e592ae 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+# Changes in version 1.9.0 - 2019-05-??
+
+ * Medium changes
+ - Archive bandwidth files in relaydescs module.
+ - Update to metrics-lib 2.6.1.
+
+
# Changes in version 1.8.0 - 2018-10-11
* Medium changes
diff --git a/build.xml b/build.xml
index 5cea51a..5874013 100644
--- a/build.xml
+++ b/build.xml
@@ -11,7 +11,7 @@
<property name="release.version" value="1.8.0-dev" />
<property name="project-main-class" value="org.torproject.metrics.collector.Main" />
<property name="name" value="collector"/>
- <property name="metricslibversion" value="2.4.0" />
+ <property name="metricslibversion" value="2.6.1" />
<property name="jarincludes" value="collector.properties logback.xml" />
<patternset id="runtime" >
@@ -21,7 +21,7 @@
<include name="jackson-core-2.8.6.jar"/>
<include name="jackson-databind-2.8.6.jar"/>
<include name="xz-1.6.jar"/>
- <include name="metrics-lib-${metricslibversion}.jar"/>
+ <include name="metrics-lib-${metricslibversion}-thin.jar"/>
<include name="logback-core-1.1.9.jar" />
<include name="logback-classic-1.1.9.jar" />
<include name="slf4j-api-1.7.22.jar" />
diff --git a/src/main/java/org/torproject/metrics/collector/conf/Annotation.java b/src/main/java/org/torproject/metrics/collector/conf/Annotation.java
index f90516b..2e47df0 100644
--- a/src/main/java/org/torproject/metrics/collector/conf/Annotation.java
+++ b/src/main/java/org/torproject/metrics/collector/conf/Annotation.java
@@ -6,6 +6,7 @@ package org.torproject.metrics.collector.conf;
/** This enum contains all currently valid descriptor annotations. */
public enum Annotation {
+ BandwidthFile("@type bandwidth-file 1.0\n"),
BridgeExtraInfo("@type bridge-extra-info 1.3\n"),
BridgeServer("@type bridge-server-descriptor 1.2\n"),
Cert("@type dir-key-certificate-3 1.0\n"),
diff --git a/src/main/java/org/torproject/metrics/collector/relaydescs/ArchiveWriter.java b/src/main/java/org/torproject/metrics/collector/relaydescs/ArchiveWriter.java
index 966b649..e1279ee 100644
--- a/src/main/java/org/torproject/metrics/collector/relaydescs/ArchiveWriter.java
+++ b/src/main/java/org/torproject/metrics/collector/relaydescs/ArchiveWriter.java
@@ -3,6 +3,7 @@
package org.torproject.metrics.collector.relaydescs;
+import org.torproject.descriptor.BandwidthFile;
import org.torproject.descriptor.Descriptor;
import org.torproject.descriptor.DescriptorParser;
import org.torproject.descriptor.DescriptorSourceFactory;
@@ -33,6 +34,10 @@ import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.ParseException;
import java.text.SimpleDateFormat;
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneOffset;
+import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
@@ -44,6 +49,7 @@ import java.util.SortedSet;
import java.util.Stack;
import java.util.TimeZone;
import java.util.TreeMap;
+import java.util.TreeSet;
public class ArchiveWriter extends CollecTorMain {
@@ -51,12 +57,15 @@ public class ArchiveWriter extends CollecTorMain {
ArchiveWriter.class);
private long now = System.currentTimeMillis();
+ private LocalDateTime nowLocalDateTime
+ = LocalDateTime.ofInstant(Instant.ofEpochMilli(this.now), ZoneOffset.UTC);
private String outputDirectory;
private String rsyncCatString;
private DescriptorParser descriptorParser;
private int storedConsensusesCounter = 0;
private int storedMicrodescConsensusesCounter = 0;
private int storedVotesCounter = 0;
+ private int storedBandwidthsCounter = 0;
private int storedCertsCounter = 0;
private int storedServerDescriptorsCounter = 0;
private int storedExtraInfoDescriptorsCounter = 0;
@@ -74,6 +83,8 @@ public class ArchiveWriter extends CollecTorMain {
private SortedMap<Long, Set<String>> storedExtraInfoDescriptors =
new TreeMap<>();
private SortedMap<Long, Set<String>> storedMicrodescriptors = new TreeMap<>();
+ private SortedMap<LocalDateTime, Set<String>> storedBandwidths
+ = new TreeMap<>();
private File storedServerDescriptorsFile;
private File storedExtraInfoDescriptorsFile;
@@ -103,6 +114,8 @@ public class ArchiveWriter extends CollecTorMain {
RelayServerDescriptor.class);
this.mapPathDescriptors.put("recent/relay-descriptors/extra-infos",
RelayExtraInfoDescriptor.class);
+ this.mapPathDescriptors.put("recent/relay-descriptors/bandwidths",
+ BandwidthFile.class);
}
@Override
@@ -203,6 +216,7 @@ public class ArchiveWriter extends CollecTorMain {
this.storedConsensuses.clear();
this.storedMicrodescConsensuses.clear();
this.storedVotes.clear();
+ this.storedBandwidths.clear();
this.storedServerDescriptors.clear();
this.storedExtraInfoDescriptors.clear();
this.storedMicrodescriptors.clear();
@@ -299,7 +313,8 @@ public class ArchiveWriter extends CollecTorMain {
.append(this.storedConsensusesCounter).append(" consensus(es), ")
.append(this.storedMicrodescConsensusesCounter).append(" microdesc ")
.append("consensus(es), ").append(this.storedVotesCounter)
- .append(" vote(s), ").append(this.storedCertsCounter)
+ .append(" vote(s), ").append(this.storedBandwidthsCounter)
+ .append(" bandwidth file(s), ").append(this.storedCertsCounter)
.append(" certificate(s), ").append(this.storedServerDescriptorsCounter)
.append(" server descriptor(s), ")
.append(this.storedExtraInfoDescriptorsCounter).append(" extra-info ")
@@ -309,6 +324,7 @@ public class ArchiveWriter extends CollecTorMain {
this.storedConsensusesCounter = 0;
this.storedMicrodescConsensusesCounter = 0;
this.storedVotesCounter = 0;
+ this.storedBandwidthsCounter = 0;
this.storedCertsCounter = 0;
this.storedServerDescriptorsCounter = 0;
this.storedExtraInfoDescriptorsCounter = 0;
@@ -727,6 +743,30 @@ public class ArchiveWriter extends CollecTorMain {
}
}
+ /** Stores a bandwidth file to disk. */
+ void storeBandwidthFile(byte[] data, LocalDateTime fileCreatedOrTimestamp,
+ String bandwidthFileDigest) {
+ DateTimeFormatter printFormat = DateTimeFormatter
+ .ofPattern("uuuu/MM/dd/uuuu-MM-dd-HH-mm-ss").withZone(ZoneOffset.UTC);
+ File tarballFile = Paths.get(this.outputDirectory, "bandwidth",
+ fileCreatedOrTimestamp.format(printFormat) + "-bandwidth-"
+ + bandwidthFileDigest).toFile();
+ boolean tarballFileExistedBefore = tarballFile.exists();
+ File rsyncFile = Paths.get(recentPathName, RELAY_DESCRIPTORS, "bandwidths",
+ tarballFile.getName()).toFile();
+ File[] outputFiles = new File[] { tarballFile, rsyncFile };
+ if (this.store(Annotation.BandwidthFile.bytes(), data, outputFiles, null)) {
+ this.storedVotesCounter++;
+ }
+ if (!tarballFileExistedBefore
+ && this.nowLocalDateTime.isAfter(fileCreatedOrTimestamp.plusDays(3L))) {
+ this.storedBandwidths.putIfAbsent(fileCreatedOrTimestamp,
+ new TreeSet<>());
+ this.storedBandwidths.get(fileCreatedOrTimestamp)
+ .add(bandwidthFileDigest);
+ }
+ }
+
/** Stores a key certificate to disk. */
public void storeCertificate(byte[] data, String fingerprint,
long published) {
diff --git a/src/main/java/org/torproject/metrics/collector/relaydescs/RelayDescriptorDownloader.java b/src/main/java/org/torproject/metrics/collector/relaydescs/RelayDescriptorDownloader.java
index 4764a4b..5a241f4 100644
--- a/src/main/java/org/torproject/metrics/collector/relaydescs/RelayDescriptorDownloader.java
+++ b/src/main/java/org/torproject/metrics/collector/relaydescs/RelayDescriptorDownloader.java
@@ -258,6 +258,8 @@ public class RelayDescriptorDownloader {
private int requestedVotes = 0;
+ private int requestedBandwidthFiles = 0;
+
private int requestedMissingServerDescriptors = 0;
private int requestedAllServerDescriptors = 0;
@@ -274,6 +276,8 @@ public class RelayDescriptorDownloader {
private int downloadedVotes = 0;
+ private int downloadedBandwidthFiles = 0;
+
private int downloadedMissingServerDescriptors = 0;
private int downloadedAllServerDescriptors = 0;
@@ -729,6 +733,14 @@ public class RelayDescriptorDownloader {
}
}
+ /* Now try to download the bandwidth file, regardless of whether this
+ * authority might provide one or when we last downloaded a bandwidth
+ * file from it. */
+ this.requestedBandwidthFiles++;
+ this.downloadedBandwidthFiles +=
+ this.downloadResourceFromAuthority(authority,
+ "/tor/status-vote/next/bandwidth");
+
/* Download either all server and extra-info descriptors or only
* those that we're missing. Start with server descriptors, then
* request extra-info descriptors. Finally, request missing
@@ -886,7 +898,7 @@ public class RelayDescriptorDownloader {
allData == null ? 0 : allData.length);
int receivedDescriptors = 0;
if (allData != null) {
- if (resource.startsWith("/tor/status-vote/current/")) {
+ if (resource.startsWith("/tor/status-vote/")) {
this.rdp.parse(allData);
receivedDescriptors = 1;
} else if (resource.startsWith("/tor/server/")
@@ -1067,11 +1079,13 @@ public class RelayDescriptorDownloader {
this.newMissingServerDescriptors, this.newMissingExtraInfoDescriptors,
this.newMissingMicrodescriptors);
logger.info("We requested {} consensus(es), {} microdesc consensus(es), "
- + "{} vote(s), {} missing server descriptor(s), {} times all server "
+ + "{} vote(s), {} bandwidth file(s), {} missing server descriptor(s), "
+ + "{} times all server "
+ "descriptors, {} missing extra-info descriptor(s), {} times all "
+ "extra-info descriptors, and {} missing microdescriptor(s) from the "
+ "directory authorities.", this.requestedConsensuses,
this.requestedMicrodescConsensuses, this.requestedVotes,
+ this.requestedBandwidthFiles,
this.requestedMissingServerDescriptors,
this.requestedAllServerDescriptors,
this.requestedMissingExtraInfoDescriptors,
@@ -1085,12 +1099,14 @@ public class RelayDescriptorDownloader {
logger.info("We sent these numbers of requests to the directory "
+ "authorities:{}", sb.toString());
logger.info("We successfully downloaded {} consensus(es), {} microdesc "
- + "consensus(es), {} vote(s), {} missing server descriptor(s), {} "
+ + "consensus(es), {} vote(s), {} bandwidth file(s), "
+ + "{} missing server descriptor(s), {} "
+ "server descriptor(s) when downloading all descriptors, {} missing "
+ "extra-info descriptor(s), {} extra-info descriptor(s) when "
+ "downloading all descriptors, and {} missing microdescriptor(s).",
this.downloadedConsensuses, this.downloadedMicrodescConsensuses,
- this.downloadedVotes, this.downloadedMissingServerDescriptors,
+ this.downloadedVotes, this.downloadedBandwidthFiles,
+ this.downloadedMissingServerDescriptors,
this.downloadedAllServerDescriptors,
this.downloadedMissingExtraInfoDescriptors,
this.downloadedAllExtraInfoDescriptors,
diff --git a/src/main/java/org/torproject/metrics/collector/relaydescs/RelayDescriptorParser.java b/src/main/java/org/torproject/metrics/collector/relaydescs/RelayDescriptorParser.java
index 5224a61..113ac77 100644
--- a/src/main/java/org/torproject/metrics/collector/relaydescs/RelayDescriptorParser.java
+++ b/src/main/java/org/torproject/metrics/collector/relaydescs/RelayDescriptorParser.java
@@ -14,6 +14,10 @@ import java.io.IOException;
import java.io.StringReader;
import java.text.ParseException;
import java.text.SimpleDateFormat;
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneOffset;
+import java.time.format.DateTimeParseException;
import java.util.SortedSet;
import java.util.TimeZone;
import java.util.TreeSet;
@@ -318,6 +322,44 @@ public class RelayDescriptorParser {
* time(s) of microdesc consensuses containing them, because we
* don't know which month directories to put them in. Have to use
* storeMicrodescriptor below. */
+ } else if (line.matches("[0-9]{10}")) {
+ /* The following code is a much more lenient version of the parser in
+ * metrics-lib that we need for storing a bandwidth file even if
+ * metrics-lib has trouble verifying its format. As in metrics-lib,
+ * identifying bandwidth files by a 10-digit timestamp in the first line
+ * breaks with files generated before 2002 or after 2286 and when the
+ * next descriptor identifier starts with just a timestamp in the first
+ * line rather than a document type identifier. */
+ String timestampLine = line;
+ LocalDateTime fileCreatedOrTimestamp = null;
+ try {
+ while ((line = br.readLine()) != null) {
+ if (line.startsWith("file_created=")) {
+ fileCreatedOrTimestamp = LocalDateTime.parse(
+ line.substring("file_created=".length()));
+ break;
+ } else if (line.startsWith("bw=") || line.contains(" bw=")
+ || "====".equals(line) || "=====".equals(line)) {
+ break;
+ }
+ }
+ } catch (IOException | DateTimeParseException e) {
+ /* Fall back to using timestamp in first line. */
+ }
+ if (null == fileCreatedOrTimestamp) {
+ try {
+ fileCreatedOrTimestamp = LocalDateTime.ofInstant(
+ Instant.ofEpochSecond(Long.parseLong(timestampLine)),
+ ZoneOffset.UTC);
+ } catch (NumberFormatException | DateTimeParseException e) {
+ logger.warn("Could not parse timestamp or file_created time from "
+ + "bandwidth file. Storing with timestamp 2000-01-01 00:00:00");
+ fileCreatedOrTimestamp = LocalDateTime.of(2000, 1, 1, 0, 0, 0);
+ }
+ }
+ this.aw.storeBandwidthFile(data, fileCreatedOrTimestamp,
+ DigestUtils.sha256Hex(data).toUpperCase());
+ stored = true;
}
br.close();
} catch (IOException | ParseException e) {
diff --git a/src/main/resources/create-tarballs.sh b/src/main/resources/create-tarballs.sh
index d247c52..7e4668a 100755
--- a/src/main/resources/create-tarballs.sh
+++ b/src/main/resources/create-tarballs.sh
@@ -47,6 +47,8 @@ TARBALLS=(
consensuses-$YEARTWO-$MONTHTWO
votes-$YEARONE-$MONTHONE
votes-$YEARTWO-$MONTHTWO
+ bandwidths-$YEARONE-$MONTHONE
+ bandwidths-$YEARTWO-$MONTHTWO
server-descriptors-$YEARONE-$MONTHONE
server-descriptors-$YEARTWO-$MONTHTWO
extra-infos-$YEARONE-$MONTHONE
@@ -72,6 +74,8 @@ DIRECTORIES=(
$OUTDIR/relay-descriptors/consensus/$YEARTWO/$MONTHTWO
$OUTDIR/relay-descriptors/vote/$YEARONE/$MONTHONE/
$OUTDIR/relay-descriptors/vote/$YEARTWO/$MONTHTWO/
+ $OUTDIR/relay-descriptors/bandwidth/$YEARONE/$MONTHONE/
+ $OUTDIR/relay-descriptors/bandwidth/$YEARTWO/$MONTHTWO/
$OUTDIR/relay-descriptors/server-descriptor/$YEARONE/$MONTHONE/
$OUTDIR/relay-descriptors/server-descriptor/$YEARTWO/$MONTHTWO/
$OUTDIR/relay-descriptors/extra-info/$YEARONE/$MONTHONE/
@@ -156,6 +160,9 @@ ln -f -s -t $ARCHIVEDIR/relay-descriptors/tor/ $TARBALLTARGETDIR/tor-20??-??.tar
mkdir -p $ARCHIVEDIR/relay-descriptors/votes/
ln -f -s -t $ARCHIVEDIR/relay-descriptors/votes/ $TARBALLTARGETDIR/votes-20??-??.tar.xz
+mkdir -p $ARCHIVEDIR/relay-descriptors/bandwidths/
+ln -f -s -t $ARCHIVEDIR/relay-descriptors/bandwidths/ $TARBALLTARGETDIR/bandwidths-20??-??.tar.xz
+
mkdir -p $ARCHIVEDIR/torperf/
ln -f -s -t $ARCHIVEDIR/torperf/ $TARBALLTARGETDIR/torperf-20??-??.tar.xz
1
0
commit 2f44786e304ae275501c1e3f74709435ae931def
Merge: 501d1ae0b f35bd3681
Author: David Goulet <dgoulet(a)torproject.org>
Date: Mon May 13 07:34:00 2019 -0400
Merge branch 'tor-github/pr/976'
changes/ticket27251 | 4 ++++
src/test/include.am | 4 +---
2 files changed, 5 insertions(+), 3 deletions(-)
1
0

[tor/master] test-network-all: Test IPv6-only v3 single onion services
by dgoulet@torproject.org 13 May '19
by dgoulet@torproject.org 13 May '19
13 May '19
commit f35bd3681466e58e525d95714ba630caa98f67ae
Author: teor <teor(a)torproject.org>
Date: Wed Apr 24 17:41:09 2019 +1000
test-network-all: Test IPv6-only v3 single onion services
In "make test-network-all", test IPv6-only v3 single onion services,
using the chutney network single-onion-v23-ipv6-md. This test will
not pass until 23588 has been merged.
Closes ticket 27251.
---
changes/ticket27251 | 4 ++++
src/test/include.am | 4 +---
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/changes/ticket27251 b/changes/ticket27251
new file mode 100644
index 000000000..7ce296e8d
--- /dev/null
+++ b/changes/ticket27251
@@ -0,0 +1,4 @@
+ o Testing (chutney):
+ - In "make test-network-all", test IPv6-only v3 single onion services,
+ using the chutney network single-onion-v23-ipv6-md. This test will
+ not pass until 23588 has been merged. Closes ticket 27251.
diff --git a/src/test/include.am b/src/test/include.am
index 497aa320a..fb4e9f4bc 100644
--- a/src/test/include.am
+++ b/src/test/include.am
@@ -46,10 +46,8 @@ TESTS += src/test/test src/test/test-slow src/test/test-memwipe \
TEST_CHUTNEY_FLAVORS = basic-min bridges-min hs-v2-min hs-v3-min \
single-onion-v23
# only run if we can ping6 ::1 (localhost)
-# IPv6-only v3 single onion services don't work yet, so we don't test the
-# single-onion-v23-ipv6-md flavor
TEST_CHUTNEY_FLAVORS_IPV6 = bridges+ipv6-min ipv6-exit-min hs-v23-ipv6-md \
- single-onion-ipv6-md
+ single-onion-v23-ipv6-md
# only run if we can find a stable (or simply another) version of tor
TEST_CHUTNEY_FLAVORS_MIXED = mixed+hs-v2
1
0

13 May '19
commit b3e80fce17f04cf7c83ef3843d2de0cc3bfef389
Author: Karsten Loesing <karsten.loesing(a)gmx.net>
Date: Fri May 3 09:28:06 2019 +0200
Fix unknown issue with spread() function.
This is a hotfix to work around the issue described in #30351.
Hopefully, we'll come up with a better fix that doesn't go backwards
from tidyr to reshape2.
---
src/main/R/rserver/rserve-init.R | 21 ++++++++++++---------
1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/src/main/R/rserver/rserve-init.R b/src/main/R/rserver/rserve-init.R
index 5a47550..3d6dad7 100644
--- a/src/main/R/rserver/rserve-init.R
+++ b/src/main/R/rserver/rserve-init.R
@@ -1,3 +1,4 @@
+require(reshape2)
require(ggplot2)
require(RColorBrewer)
require(scales)
@@ -436,7 +437,7 @@ prepare_platforms <- function(start_p = NULL, end_p = NULL) {
filter(if (!is.null(start_p)) date >= as.Date(start_p) else TRUE) %>%
filter(if (!is.null(end_p)) date <= as.Date(end_p) else TRUE) %>%
mutate(platform = tolower(platform)) %>%
- spread(platform, relays)
+ dcast(date ~ platform, value.var = "relays")
}
plot_platforms <- function(start_p, end_p, path_p) {
@@ -700,7 +701,7 @@ prepare_connbidirect <- function(start_p = NULL, end_p = NULL) {
filter(if (!is.null(end_p)) date <= as.Date(end_p) else TRUE) %>%
mutate(quantile = paste("X", quantile, sep = ""),
fraction = fraction / 100) %>%
- spread(quantile, fraction) %>%
+ dcast(date + direction ~ quantile, value.var = "fraction") %>%
rename(q1 = X0.25, md = X0.5, q3 = X0.75)
}
@@ -752,7 +753,8 @@ prepare_bandwidth_flags <- function(start_p = NULL, end_p = NULL) {
filter(if (!is.null(end_p)) date <= as.Date(end_p) else TRUE) %>%
filter(!is.na(have_exit_flag)) %>%
filter(!is.na(have_guard_flag)) %>%
- spread(variable, value)
+ dcast(date + have_guard_flag + have_exit_flag ~ variable,
+ value.var = "value")
}
plot_bandwidth_flags <- function(start_p, end_p, path_p) {
@@ -1058,7 +1060,7 @@ prepare_advbwdist_perc <- function(start_p = NULL, end_p = NULL, p_p = NULL) {
transmute(date, percentile = as.factor(percentile),
variable = ifelse(is.na(isexit), "all", "exits"),
advbw = advbw * 8 / 1e9) %>%
- spread(variable, advbw) %>%
+ dcast(date + percentile ~ variable, value.var = "advbw") %>%
rename(p = percentile)
}
@@ -1096,7 +1098,7 @@ prepare_advbwdist_relay <- function(start_p = NULL, end_p = NULL, n_p = NULL) {
transmute(date, relay = as.factor(relay),
variable = ifelse(is.na(isexit), "all", "exits"),
advbw = advbw * 8 / 1e9) %>%
- spread(variable, advbw) %>%
+ dcast(date + relay ~ variable, value.var = "advbw") %>%
rename(n = relay)
}
@@ -1194,7 +1196,7 @@ prepare_webstats_tb <- function(start_p = NULL, end_p = NULL) {
filter(request_type %in% c("tbid", "tbsd", "tbup", "tbur")) %>%
group_by(log_date, request_type) %>%
summarize(count = sum(count)) %>%
- spread(request_type, count) %>%
+ dcast(log_date ~ request_type, value.var = "count") %>%
rename(date = log_date, initial_downloads = tbid,
signature_downloads = tbsd, update_pings = tbup,
update_requests = tbur)
@@ -1239,7 +1241,7 @@ prepare_webstats_tb_platform <- function(start_p = NULL, end_p = NULL) {
filter(request_type %in% c("tbid", "tbup")) %>%
group_by(log_date, platform, request_type) %>%
summarize(count = sum(count)) %>%
- spread(request_type, count, fill = 0) %>%
+ dcast(log_date + platform ~ request_type, value.var = "count") %>%
rename(date = log_date, initial_downloads = tbid, update_pings = tbup)
}
@@ -1287,7 +1289,7 @@ prepare_webstats_tb_locale <- function(start_p = NULL, end_p = NULL) {
group_by(date, locale, request_type) %>%
summarize(count = sum(count)) %>%
mutate(request_type = factor(request_type, levels = c("tbid", "tbup"))) %>%
- spread(request_type, count, fill = 0) %>%
+ dcast(date + locale ~ request_type, value.var = "count") %>%
rename(initial_downloads = tbid, update_pings = tbup)
}
@@ -1342,7 +1344,8 @@ prepare_webstats_tm <- function(start_p = NULL, end_p = NULL) {
group_by(log_date, request_type) %>%
summarize(count = sum(count)) %>%
mutate(request_type = factor(request_type, levels = c("tmid", "tmup"))) %>%
- spread(request_type, count, drop = FALSE, fill = 0) %>%
+ dcast(log_date ~ request_type, value.var = "count", drop = FALSE,
+ fill = 0) %>%
rename(date = log_date, initial_downloads = tmid, update_pings = tmup)
}
1
0

13 May '19
commit 68d7be6c41aa408c20cb87511efe59e7afa60357
Author: Georg Koppen <gk(a)torproject.org>
Date: Mon May 13 09:49:32 2019 +0000
Bumping tor browser branch for 9.0
---
projects/firefox/config | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/projects/firefox/config b/projects/firefox/config
index c60ee8e..427033e 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -10,7 +10,7 @@ gpg_keyring: torbutton.gpg
var:
firefox_platform_version: 60.6.1
firefox_version: '[% c("var/firefox_platform_version") %]esr'
- torbrowser_branch: 8.5
+ torbrowser_branch: 9.0
torbrowser_update_channel: alpha
branding_directory: '[% IF c("var/android") %]mobile/android[% ELSE %]browser[% END %]/branding/alpha'
copyright_year: '[% exec("git show -s --format=%ci").remove("-.*") %]'
1
0

[tor-browser-build/master] Bug 28044: Integrate Tor Launcher into tor-browser
by gk@torproject.org 13 May '19
by gk@torproject.org 13 May '19
13 May '19
commit 6d94f73dc055c1739a67ffd422f7f5bf29218723
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Tue Feb 26 10:16:15 2019 -0500
Bug 28044: Integrate Tor Launcher into tor-browser
Place the Tor Launcher sources within browser/extension before
starting the Firefox build (instead of creating an .xpi which
was included during the tor-browser packaging step).
---
projects/firefox/build | 5 +++++
projects/firefox/config | 3 +++
projects/firefox/mozconfig-android-armv7 | 3 +++
projects/firefox/mozconfig-android-x86 | 3 +++
projects/tor-browser/build | 1 -
projects/tor-browser/config | 3 ---
projects/tor-launcher/build | 12 ++++--------
projects/tor-launcher/config | 2 +-
8 files changed, 19 insertions(+), 13 deletions(-)
diff --git a/projects/firefox/build b/projects/firefox/build
index 5cf86a4..3aa4a4d 100644
--- a/projects/firefox/build
+++ b/projects/firefox/build
@@ -151,6 +151,11 @@ fi
patch -p1 < $rootdir/1527534.patch
[% END -%]
+[% IF ! c("var/android") %]
+ # Place a copy of the Tor Launcher sources under browser/extensions
+ tar -C browser/extensions -xf $rootdir/[% c('input_files_by_name/tor-launcher') %]
+[% END -%]
+
rm -f configure
rm -f js/src/configure
diff --git a/projects/firefox/config b/projects/firefox/config
index 566cbc0..c60ee8e 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -149,6 +149,9 @@ input_files:
enable: '[% c("var/linux") %]'
- filename: start-firefox
enable: '[% c("var/linux") %]'
+ - project: tor-launcher
+ name: tor-launcher
+ enable: '[% ! c("var/android") %]'
- filename: 'gradle-dependencies-[% c("var/gradle_dependencies_version") %]'
name: gradle-dependencies
exec: '[% INCLUDE "fetch-gradle-dependencies" %]'
diff --git a/projects/firefox/mozconfig-android-armv7 b/projects/firefox/mozconfig-android-armv7
index dfa3aaf..6dde8b1 100644
--- a/projects/firefox/mozconfig-android-armv7
+++ b/projects/firefox/mozconfig-android-armv7
@@ -19,6 +19,9 @@ ac_add_options --with-clang-path=/var/tmp/dist/android-toolchain/android-ndk/arm
ac_add_options --with-android-distribution-directory=@TOPSRCDIR@/mobile/android/torbrowser
ac_add_options --with-l10n-base=/var/tmp/dist/locales
+# We do not use Tor Launcher on Android:
+ac_add_options --disable-tor-launcher
+
if [ -z "${TB_BUILD_WITH_UPDATER}" ]; then
# Because Google Play will likely be the primary distribution medium,
# we disable updating and rely on Google Play by default. The
diff --git a/projects/firefox/mozconfig-android-x86 b/projects/firefox/mozconfig-android-x86
index defe5c3..b332f52 100644
--- a/projects/firefox/mozconfig-android-x86
+++ b/projects/firefox/mozconfig-android-x86
@@ -19,6 +19,9 @@ ac_add_options --with-clang-path=/var/tmp/dist/android-toolchain/android-ndk/x86
ac_add_options --with-android-distribution-directory=@TOPSRCDIR@/mobile/android/torbrowser
ac_add_options --with-l10n-base=/var/tmp/dist/locales
+# We do not use Tor Launcher on Android:
+ac_add_options --disable-tor-launcher
+
if [ -z "${TB_BUILD_WITH_UPDATER}" ]; then
# Because Google Play will likely be the primary distribution medium,
# we disable updating and rely on Google Play by default. The
diff --git a/projects/tor-browser/build b/projects/tor-browser/build
index 1d73ff5..45dbb53 100644
--- a/projects/tor-browser/build
+++ b/projects/tor-browser/build
@@ -49,7 +49,6 @@ mkdir -p "$TBDIR/$MEEKPROFILEPATH/extensions"
unzip -d $rootdir $rootdir/[% c('input_files_by_name/firefox') %]/mar-tools-*.zip
MARTOOLS=$rootdir/mar-tools
-mv [% c('input_files_by_name/tor-launcher') %] "$TBDIR/$EXTSPATH/tor-launcher(a)torproject.org.xpi"
mv [% c('input_files_by_name/torbutton') %] "$TBDIR/$EXTSPATH/torbutton(a)torproject.org.xpi"
mv [% c('input_files_by_name/https-everywhere') %] "$TBDIR/$EXTSPATH/https-everywhere-eff(a)eff.org.xpi"
mv [% c('input_files_by_name/noscript') %] "$TBDIR/$EXTSPATH/{73a6fe31-595d-460b-a920-fcc0f8843232}.xpi"
diff --git a/projects/tor-browser/config b/projects/tor-browser/config
index 39093d4..ad382e2 100644
--- a/projects/tor-browser/config
+++ b/projects/tor-browser/config
@@ -60,9 +60,6 @@ input_files:
- project: firefox-langpacks
name: firefox-langpacks
enable: '[% ! c("var/testbuild") && ! c("var/android") %]'
- - project: tor-launcher
- name: tor-launcher
- enable: '[% ! c("var/android") %]'
- project: torbutton
name: torbutton
enable: '[% ! c("var/android") %]'
diff --git a/projects/tor-launcher/build b/projects/tor-launcher/build
index 90c5268..710416a 100644
--- a/projects/tor-launcher/build
+++ b/projects/tor-launcher/build
@@ -1,12 +1,8 @@
#!/bin/bash
[% c("var/set_default_env") -%]
tar xvf [% project %]-[% c('version') %].tar.gz
-cd [% project %]-[% c('version') %]
-make package
-mkdir pkg/tmp
-cd pkg/tmp
-unzip ../*.xpi
-[% c('zip', {
- zip_src => [ '.' ],
- zip_args => dest_dir _ '/' _ c('filename'),
+mv [% project %]-[% c("version") %] [% project %]
+[% c('tar', {
+ tar_src => [ project ],
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
}) %]
diff --git a/projects/tor-launcher/config b/projects/tor-launcher/config
index 151f836..8ea0a08 100644
--- a/projects/tor-launcher/config
+++ b/projects/tor-launcher/config
@@ -4,7 +4,7 @@ git_url: https://git.torproject.org/tor-launcher.git
git_hash: '[% c("version") %]'
gpg_keyring: torbutton.gpg
tag_gpg_id: 1
-filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].xpi"
+filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].tar.gz"
var:
container:
use_container: 1
1
0

[tor-launcher/master] Bug 28044: Integrate Tor Launcher into tor-browser
by gk@torproject.org 13 May '19
by gk@torproject.org 13 May '19
13 May '19
commit 864170b5c1e0626dbfe3707d48037010596c42e5
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Fri May 10 14:12:17 2019 -0400
Bug 28044: Integrate Tor Launcher into tor-browser
Update translations using our revised import-translations.sh script.
---
chrome.manifest | 170 +++++++++++++
jar.mn | 331 +++++++++++++++++++++++++
src/chrome/locale/ach/network-settings.dtd | 62 -----
src/chrome/locale/ach/torlauncher.properties | 94 -------
src/chrome/locale/ast/network-settings.dtd | 62 -----
src/chrome/locale/ast/torlauncher.properties | 94 -------
src/chrome/locale/ca-ES/torlauncher.properties | 49 ----
src/chrome/locale/en-GB/network-settings.dtd | 62 -----
src/chrome/locale/en-GB/torlauncher.properties | 94 -------
src/chrome/locale/ko/torlauncher.properties | 98 ++++----
src/chrome/locale/oc/network-settings.dtd | 62 -----
src/chrome/locale/oc/torlauncher.properties | 94 -------
src/chrome/locale/or/network-settings.dtd | 62 -----
src/chrome/locale/or/torlauncher.properties | 94 -------
src/chrome/locale/pt-PT/network-settings.dtd | 62 +++++
src/chrome/locale/pt-PT/torlauncher.properties | 94 +++++++
src/chrome/locale/son/network-settings.dtd | 62 -----
src/chrome/locale/son/torlauncher.properties | 94 -------
src/chrome/locale/ur/network-settings.dtd | 28 +--
19 files changed, 720 insertions(+), 1048 deletions(-)
diff --git a/chrome.manifest b/chrome.manifest
new file mode 100644
index 0000000..2f55271
--- /dev/null
+++ b/chrome.manifest
@@ -0,0 +1,170 @@
+### Copyright (c) 2019, The Tor Project, Inc.
+### See LICENSE for licensing information.
+
+content torlauncher chrome/content/
+
+skin torlauncher classic/1.0 chrome/skin/
+
+resource torlauncher ./
+
+# Firefox 4-style component registration
+component {4F476361-23FB-43EF-A427-B36A14D3208E} components/tl-protocol.js
+contract @torproject.org/torlauncher-protocol-service;1 {4F476361-23FB-43EF-A427-B36A14D3208E}
+
+component {FE7B4CAF-BCF4-4848-8BFF-EFA66C9AFDA1} components/tl-process.js
+contract @torproject.org/torlauncher-process-service;1 {FE7B4CAF-BCF4-4848-8BFF-EFA66C9AFDA1}
+category profile-after-change TorProcessService @torproject.org/torlauncher-process-service;1
+
+locale torlauncher en-US chrome/locale/en-US/
+locale torlauncher ady chrome/locale/ady/
+locale torlauncher af chrome/locale/af/
+locale torlauncher af-ZA chrome/locale/af-ZA/
+locale torlauncher ak chrome/locale/ak/
+locale torlauncher am chrome/locale/am/
+locale torlauncher am-ET chrome/locale/am-ET/
+locale torlauncher ar chrome/locale/ar/
+locale torlauncher arn chrome/locale/arn/
+locale torlauncher az chrome/locale/az/
+locale torlauncher be chrome/locale/be/
+locale torlauncher bg chrome/locale/bg/
+locale torlauncher bg-BG chrome/locale/bg-BG/
+locale torlauncher bn chrome/locale/bn/
+locale torlauncher bn-BD chrome/locale/bn-BD/
+locale torlauncher bn-IN chrome/locale/bn-IN/
+locale torlauncher bo chrome/locale/bo/
+locale torlauncher br chrome/locale/br/
+locale torlauncher bs chrome/locale/bs/
+locale torlauncher ca chrome/locale/ca/
+locale torlauncher ca@valencia chrome/locale/ca@valencia/
+locale torlauncher cs chrome/locale/cs/
+locale torlauncher cs-CZ chrome/locale/cs-CZ/
+locale torlauncher csb chrome/locale/csb/
+locale torlauncher cv chrome/locale/cv/
+locale torlauncher cy chrome/locale/cy/
+locale torlauncher da chrome/locale/da/
+locale torlauncher de chrome/locale/de/
+locale torlauncher dz chrome/locale/dz/
+locale torlauncher el chrome/locale/el/
+locale torlauncher el-GR chrome/locale/el-GR/
+locale torlauncher eo chrome/locale/eo/
+locale torlauncher es chrome/locale/es/
+locale torlauncher es-AR chrome/locale/es-AR/
+locale torlauncher es-CL chrome/locale/es-CL/
+locale torlauncher es-CO chrome/locale/es-CO/
+locale torlauncher es-MX chrome/locale/es-MX/
+locale torlauncher es-NI chrome/locale/es-NI/
+locale torlauncher et chrome/locale/et/
+locale torlauncher eu chrome/locale/eu/
+locale torlauncher fa chrome/locale/fa/
+locale torlauncher fi chrome/locale/fi/
+locale torlauncher fil chrome/locale/fil/
+locale torlauncher fo chrome/locale/fo/
+locale torlauncher fr chrome/locale/fr/
+locale torlauncher fr-CA chrome/locale/fr-CA/
+locale torlauncher fur chrome/locale/fur/
+locale torlauncher fy chrome/locale/fy/
+locale torlauncher ga chrome/locale/ga/
+locale torlauncher gl chrome/locale/gl/
+locale torlauncher gu chrome/locale/gu/
+locale torlauncher gu-IN chrome/locale/gu-IN/
+locale torlauncher gun chrome/locale/gun/
+locale torlauncher ha chrome/locale/ha/
+locale torlauncher he chrome/locale/he/
+locale torlauncher hi chrome/locale/hi/
+locale torlauncher hr chrome/locale/hr/
+locale torlauncher hr-HR chrome/locale/hr-HR/
+locale torlauncher ht chrome/locale/ht/
+locale torlauncher hu chrome/locale/hu/
+locale torlauncher hy chrome/locale/hy/
+locale torlauncher hy-AM chrome/locale/hy-AM/
+locale torlauncher ia chrome/locale/ia/
+locale torlauncher id chrome/locale/id/
+locale torlauncher is chrome/locale/is/
+locale torlauncher it chrome/locale/it/
+locale torlauncher ja chrome/locale/ja/
+locale torlauncher jv chrome/locale/jv/
+locale torlauncher ka chrome/locale/ka/
+locale torlauncher kk chrome/locale/kk/
+locale torlauncher km chrome/locale/km/
+locale torlauncher kn chrome/locale/kn/
+locale torlauncher ko chrome/locale/ko/
+locale torlauncher ko-KR chrome/locale/ko-KR/
+locale torlauncher ku chrome/locale/ku/
+locale torlauncher kw chrome/locale/kw/
+locale torlauncher ky chrome/locale/ky/
+locale torlauncher lb chrome/locale/lb/
+locale torlauncher lg chrome/locale/lg/
+locale torlauncher ln chrome/locale/ln/
+locale torlauncher lo chrome/locale/lo/
+locale torlauncher lt chrome/locale/lt/
+locale torlauncher lv chrome/locale/lv/
+locale torlauncher mg chrome/locale/mg/
+locale torlauncher mi chrome/locale/mi/
+locale torlauncher mk chrome/locale/mk/
+locale torlauncher ml chrome/locale/ml/
+locale torlauncher mn chrome/locale/mn/
+locale torlauncher mr chrome/locale/mr/
+locale torlauncher ms chrome/locale/ms/
+locale torlauncher ms-MY chrome/locale/ms-MY/
+locale torlauncher mt chrome/locale/mt/
+locale torlauncher my chrome/locale/my/
+locale torlauncher nah chrome/locale/nah/
+locale torlauncher nap chrome/locale/nap/
+locale torlauncher nb chrome/locale/nb/
+locale torlauncher nds chrome/locale/nds/
+locale torlauncher ne chrome/locale/ne/
+locale torlauncher nl chrome/locale/nl/
+locale torlauncher nl-BE chrome/locale/nl-BE/
+locale torlauncher nn chrome/locale/nn/
+locale torlauncher nso chrome/locale/nso/
+locale torlauncher pa chrome/locale/pa/
+locale torlauncher pap chrome/locale/pap/
+locale torlauncher pl chrome/locale/pl/
+locale torlauncher pl-PL chrome/locale/pl-PL/
+locale torlauncher pms chrome/locale/pms/
+locale torlauncher ps chrome/locale/ps/
+locale torlauncher pt chrome/locale/pt/
+locale torlauncher pt-BR chrome/locale/pt-BR/
+locale torlauncher pt-PT chrome/locale/pt-PT/
+locale torlauncher ro chrome/locale/ro/
+locale torlauncher ru chrome/locale/ru/
+locale torlauncher ru@petr1708 chrome/locale/ru@petr1708/
+locale torlauncher sco chrome/locale/sco/
+locale torlauncher si-LK chrome/locale/si-LK/
+locale torlauncher sk chrome/locale/sk/
+locale torlauncher sk-SK chrome/locale/sk-SK/
+locale torlauncher sl chrome/locale/sl/
+locale torlauncher sl-SI chrome/locale/sl-SI/
+locale torlauncher sn chrome/locale/sn/
+locale torlauncher so chrome/locale/so/
+locale torlauncher sq chrome/locale/sq/
+locale torlauncher sq-AL chrome/locale/sq-AL/
+locale torlauncher sr chrome/locale/sr/
+locale torlauncher sr@latin chrome/locale/sr@latin/
+locale torlauncher st chrome/locale/st/
+locale torlauncher su chrome/locale/su/
+locale torlauncher sv chrome/locale/sv/
+locale torlauncher sw chrome/locale/sw/
+locale torlauncher szl chrome/locale/szl/
+locale torlauncher ta chrome/locale/ta/
+locale torlauncher te chrome/locale/te/
+locale torlauncher te-IN chrome/locale/te-IN/
+locale torlauncher tg chrome/locale/tg/
+locale torlauncher th chrome/locale/th/
+locale torlauncher ti chrome/locale/ti/
+locale torlauncher tk chrome/locale/tk/
+locale torlauncher tr chrome/locale/tr/
+locale torlauncher uk chrome/locale/uk/
+locale torlauncher ur chrome/locale/ur/
+locale torlauncher ur-PK chrome/locale/ur-PK/
+locale torlauncher uz chrome/locale/uz/
+locale torlauncher ve chrome/locale/ve/
+locale torlauncher vi chrome/locale/vi/
+locale torlauncher wa chrome/locale/wa/
+locale torlauncher wo chrome/locale/wo/
+locale torlauncher zh chrome/locale/zh/
+locale torlauncher zh-CN chrome/locale/zh-CN/
+locale torlauncher zh-CN.GB2312 chrome/locale/zh-CN.GB2312/
+locale torlauncher zh-HK chrome/locale/zh-HK/
+locale torlauncher zh-TW chrome/locale/zh-TW/
+locale torlauncher zu chrome/locale/zu/
diff --git a/jar.mn b/jar.mn
new file mode 100644
index 0000000..b078202
--- /dev/null
+++ b/jar.mn
@@ -0,0 +1,331 @@
+#filter substitution
+### Copyright (c) 2019, The Tor Project, Inc.
+### See LICENSE for licensing information.
+
+torlauncher.jar:
+ components/ (src/components/*)
+
+% content torlauncher %content/
+ content/ (src/chrome/content/*)
+
+ modules/ (src/modules/*)
+
+% resource torlauncher %
+
+% skin torlauncher default %skin/
+ skin/ (src/chrome/skin/*)
+
+% component {4F476361-23FB-43EF-A427-B36A14D3208E} %components/tl-protocol.js
+% contract @torproject.org/torlauncher-protocol-service;1 {4F476361-23FB-43EF-A427-B36A14D3208E}
+
+% component {FE7B4CAF-BCF4-4848-8BFF-EFA66C9AFDA1} %components/tl-process.js
+% contract @torproject.org/torlauncher-process-service;1 {FE7B4CAF-BCF4-4848-8BFF-EFA66C9AFDA1}
+
+% category profile-after-change TorProcessService @torproject.org/torlauncher-process-service;1
+
+% locale torlauncher en-US %locale/en-US/
+ locale/en-US/ (src/chrome/locale/en-US/*)
+% locale torlauncher ady %locale/ady/
+ locale/ady/ (src/chrome/locale/ady/*)
+% locale torlauncher af %locale/af/
+ locale/af/ (src/chrome/locale/af/*)
+% locale torlauncher af-ZA %locale/af-ZA/
+ locale/af-ZA/ (src/chrome/locale/af-ZA/*)
+% locale torlauncher ak %locale/ak/
+ locale/ak/ (src/chrome/locale/ak/*)
+% locale torlauncher am %locale/am/
+ locale/am/ (src/chrome/locale/am/*)
+% locale torlauncher am-ET %locale/am-ET/
+ locale/am-ET/ (src/chrome/locale/am-ET/*)
+% locale torlauncher ar %locale/ar/
+ locale/ar/ (src/chrome/locale/ar/*)
+% locale torlauncher arn %locale/arn/
+ locale/arn/ (src/chrome/locale/arn/*)
+% locale torlauncher az %locale/az/
+ locale/az/ (src/chrome/locale/az/*)
+% locale torlauncher be %locale/be/
+ locale/be/ (src/chrome/locale/be/*)
+% locale torlauncher bg %locale/bg/
+ locale/bg/ (src/chrome/locale/bg/*)
+% locale torlauncher bg-BG %locale/bg-BG/
+ locale/bg-BG/ (src/chrome/locale/bg-BG/*)
+% locale torlauncher bn %locale/bn/
+ locale/bn/ (src/chrome/locale/bn/*)
+% locale torlauncher bn-BD %locale/bn-BD/
+ locale/bn-BD/ (src/chrome/locale/bn-BD/*)
+% locale torlauncher bn-IN %locale/bn-IN/
+ locale/bn-IN/ (src/chrome/locale/bn-IN/*)
+% locale torlauncher bo %locale/bo/
+ locale/bo/ (src/chrome/locale/bo/*)
+% locale torlauncher br %locale/br/
+ locale/br/ (src/chrome/locale/br/*)
+% locale torlauncher bs %locale/bs/
+ locale/bs/ (src/chrome/locale/bs/*)
+% locale torlauncher ca %locale/ca/
+ locale/ca/ (src/chrome/locale/ca/*)
+% locale torlauncher ca@valencia %locale/ca@valencia/
+ locale/ca@valencia/ (src/chrome/locale/ca@valencia/*)
+% locale torlauncher cs %locale/cs/
+ locale/cs/ (src/chrome/locale/cs/*)
+% locale torlauncher cs-CZ %locale/cs-CZ/
+ locale/cs-CZ/ (src/chrome/locale/cs-CZ/*)
+% locale torlauncher csb %locale/csb/
+ locale/csb/ (src/chrome/locale/csb/*)
+% locale torlauncher cv %locale/cv/
+ locale/cv/ (src/chrome/locale/cv/*)
+% locale torlauncher cy %locale/cy/
+ locale/cy/ (src/chrome/locale/cy/*)
+% locale torlauncher da %locale/da/
+ locale/da/ (src/chrome/locale/da/*)
+% locale torlauncher de %locale/de/
+ locale/de/ (src/chrome/locale/de/*)
+% locale torlauncher dz %locale/dz/
+ locale/dz/ (src/chrome/locale/dz/*)
+% locale torlauncher el %locale/el/
+ locale/el/ (src/chrome/locale/el/*)
+% locale torlauncher el-GR %locale/el-GR/
+ locale/el-GR/ (src/chrome/locale/el-GR/*)
+% locale torlauncher eo %locale/eo/
+ locale/eo/ (src/chrome/locale/eo/*)
+% locale torlauncher es %locale/es/
+ locale/es/ (src/chrome/locale/es/*)
+% locale torlauncher es-AR %locale/es-AR/
+ locale/es-AR/ (src/chrome/locale/es-AR/*)
+% locale torlauncher es-CL %locale/es-CL/
+ locale/es-CL/ (src/chrome/locale/es-CL/*)
+% locale torlauncher es-CO %locale/es-CO/
+ locale/es-CO/ (src/chrome/locale/es-CO/*)
+% locale torlauncher es-MX %locale/es-MX/
+ locale/es-MX/ (src/chrome/locale/es-MX/*)
+% locale torlauncher es-NI %locale/es-NI/
+ locale/es-NI/ (src/chrome/locale/es-NI/*)
+% locale torlauncher et %locale/et/
+ locale/et/ (src/chrome/locale/et/*)
+% locale torlauncher eu %locale/eu/
+ locale/eu/ (src/chrome/locale/eu/*)
+% locale torlauncher fa %locale/fa/
+ locale/fa/ (src/chrome/locale/fa/*)
+% locale torlauncher fi %locale/fi/
+ locale/fi/ (src/chrome/locale/fi/*)
+% locale torlauncher fil %locale/fil/
+ locale/fil/ (src/chrome/locale/fil/*)
+% locale torlauncher fo %locale/fo/
+ locale/fo/ (src/chrome/locale/fo/*)
+% locale torlauncher fr %locale/fr/
+ locale/fr/ (src/chrome/locale/fr/*)
+% locale torlauncher fr-CA %locale/fr-CA/
+ locale/fr-CA/ (src/chrome/locale/fr-CA/*)
+% locale torlauncher fur %locale/fur/
+ locale/fur/ (src/chrome/locale/fur/*)
+% locale torlauncher fy %locale/fy/
+ locale/fy/ (src/chrome/locale/fy/*)
+% locale torlauncher ga %locale/ga/
+ locale/ga/ (src/chrome/locale/ga/*)
+% locale torlauncher gl %locale/gl/
+ locale/gl/ (src/chrome/locale/gl/*)
+% locale torlauncher gu %locale/gu/
+ locale/gu/ (src/chrome/locale/gu/*)
+% locale torlauncher gu-IN %locale/gu-IN/
+ locale/gu-IN/ (src/chrome/locale/gu-IN/*)
+% locale torlauncher gun %locale/gun/
+ locale/gun/ (src/chrome/locale/gun/*)
+% locale torlauncher ha %locale/ha/
+ locale/ha/ (src/chrome/locale/ha/*)
+% locale torlauncher he %locale/he/
+ locale/he/ (src/chrome/locale/he/*)
+% locale torlauncher hi %locale/hi/
+ locale/hi/ (src/chrome/locale/hi/*)
+% locale torlauncher hr %locale/hr/
+ locale/hr/ (src/chrome/locale/hr/*)
+% locale torlauncher hr-HR %locale/hr-HR/
+ locale/hr-HR/ (src/chrome/locale/hr-HR/*)
+% locale torlauncher ht %locale/ht/
+ locale/ht/ (src/chrome/locale/ht/*)
+% locale torlauncher hu %locale/hu/
+ locale/hu/ (src/chrome/locale/hu/*)
+% locale torlauncher hy %locale/hy/
+ locale/hy/ (src/chrome/locale/hy/*)
+% locale torlauncher hy-AM %locale/hy-AM/
+ locale/hy-AM/ (src/chrome/locale/hy-AM/*)
+% locale torlauncher ia %locale/ia/
+ locale/ia/ (src/chrome/locale/ia/*)
+% locale torlauncher id %locale/id/
+ locale/id/ (src/chrome/locale/id/*)
+% locale torlauncher is %locale/is/
+ locale/is/ (src/chrome/locale/is/*)
+% locale torlauncher it %locale/it/
+ locale/it/ (src/chrome/locale/it/*)
+% locale torlauncher ja %locale/ja/
+ locale/ja/ (src/chrome/locale/ja/*)
+% locale torlauncher jv %locale/jv/
+ locale/jv/ (src/chrome/locale/jv/*)
+% locale torlauncher ka %locale/ka/
+ locale/ka/ (src/chrome/locale/ka/*)
+% locale torlauncher kk %locale/kk/
+ locale/kk/ (src/chrome/locale/kk/*)
+% locale torlauncher km %locale/km/
+ locale/km/ (src/chrome/locale/km/*)
+% locale torlauncher kn %locale/kn/
+ locale/kn/ (src/chrome/locale/kn/*)
+% locale torlauncher ko %locale/ko/
+ locale/ko/ (src/chrome/locale/ko/*)
+% locale torlauncher ko-KR %locale/ko-KR/
+ locale/ko-KR/ (src/chrome/locale/ko-KR/*)
+% locale torlauncher ku %locale/ku/
+ locale/ku/ (src/chrome/locale/ku/*)
+% locale torlauncher kw %locale/kw/
+ locale/kw/ (src/chrome/locale/kw/*)
+% locale torlauncher ky %locale/ky/
+ locale/ky/ (src/chrome/locale/ky/*)
+% locale torlauncher lb %locale/lb/
+ locale/lb/ (src/chrome/locale/lb/*)
+% locale torlauncher lg %locale/lg/
+ locale/lg/ (src/chrome/locale/lg/*)
+% locale torlauncher ln %locale/ln/
+ locale/ln/ (src/chrome/locale/ln/*)
+% locale torlauncher lo %locale/lo/
+ locale/lo/ (src/chrome/locale/lo/*)
+% locale torlauncher lt %locale/lt/
+ locale/lt/ (src/chrome/locale/lt/*)
+% locale torlauncher lv %locale/lv/
+ locale/lv/ (src/chrome/locale/lv/*)
+% locale torlauncher mg %locale/mg/
+ locale/mg/ (src/chrome/locale/mg/*)
+% locale torlauncher mi %locale/mi/
+ locale/mi/ (src/chrome/locale/mi/*)
+% locale torlauncher mk %locale/mk/
+ locale/mk/ (src/chrome/locale/mk/*)
+% locale torlauncher ml %locale/ml/
+ locale/ml/ (src/chrome/locale/ml/*)
+% locale torlauncher mn %locale/mn/
+ locale/mn/ (src/chrome/locale/mn/*)
+% locale torlauncher mr %locale/mr/
+ locale/mr/ (src/chrome/locale/mr/*)
+% locale torlauncher ms %locale/ms/
+ locale/ms/ (src/chrome/locale/ms/*)
+% locale torlauncher ms-MY %locale/ms-MY/
+ locale/ms-MY/ (src/chrome/locale/ms-MY/*)
+% locale torlauncher mt %locale/mt/
+ locale/mt/ (src/chrome/locale/mt/*)
+% locale torlauncher my %locale/my/
+ locale/my/ (src/chrome/locale/my/*)
+% locale torlauncher nah %locale/nah/
+ locale/nah/ (src/chrome/locale/nah/*)
+% locale torlauncher nap %locale/nap/
+ locale/nap/ (src/chrome/locale/nap/*)
+% locale torlauncher nb %locale/nb/
+ locale/nb/ (src/chrome/locale/nb/*)
+% locale torlauncher nds %locale/nds/
+ locale/nds/ (src/chrome/locale/nds/*)
+% locale torlauncher ne %locale/ne/
+ locale/ne/ (src/chrome/locale/ne/*)
+% locale torlauncher nl %locale/nl/
+ locale/nl/ (src/chrome/locale/nl/*)
+% locale torlauncher nl-BE %locale/nl-BE/
+ locale/nl-BE/ (src/chrome/locale/nl-BE/*)
+% locale torlauncher nn %locale/nn/
+ locale/nn/ (src/chrome/locale/nn/*)
+% locale torlauncher nso %locale/nso/
+ locale/nso/ (src/chrome/locale/nso/*)
+% locale torlauncher pa %locale/pa/
+ locale/pa/ (src/chrome/locale/pa/*)
+% locale torlauncher pap %locale/pap/
+ locale/pap/ (src/chrome/locale/pap/*)
+% locale torlauncher pl %locale/pl/
+ locale/pl/ (src/chrome/locale/pl/*)
+% locale torlauncher pl-PL %locale/pl-PL/
+ locale/pl-PL/ (src/chrome/locale/pl-PL/*)
+% locale torlauncher pms %locale/pms/
+ locale/pms/ (src/chrome/locale/pms/*)
+% locale torlauncher ps %locale/ps/
+ locale/ps/ (src/chrome/locale/ps/*)
+% locale torlauncher pt %locale/pt/
+ locale/pt/ (src/chrome/locale/pt/*)
+% locale torlauncher pt-BR %locale/pt-BR/
+ locale/pt-BR/ (src/chrome/locale/pt-BR/*)
+% locale torlauncher pt-PT %locale/pt-PT/
+ locale/pt-PT/ (src/chrome/locale/pt-PT/*)
+% locale torlauncher ro %locale/ro/
+ locale/ro/ (src/chrome/locale/ro/*)
+% locale torlauncher ru %locale/ru/
+ locale/ru/ (src/chrome/locale/ru/*)
+% locale torlauncher ru@petr1708 %locale/ru@petr1708/
+ locale/ru@petr1708/ (src/chrome/locale/ru@petr1708/*)
+% locale torlauncher sco %locale/sco/
+ locale/sco/ (src/chrome/locale/sco/*)
+% locale torlauncher si-LK %locale/si-LK/
+ locale/si-LK/ (src/chrome/locale/si-LK/*)
+% locale torlauncher sk %locale/sk/
+ locale/sk/ (src/chrome/locale/sk/*)
+% locale torlauncher sk-SK %locale/sk-SK/
+ locale/sk-SK/ (src/chrome/locale/sk-SK/*)
+% locale torlauncher sl %locale/sl/
+ locale/sl/ (src/chrome/locale/sl/*)
+% locale torlauncher sl-SI %locale/sl-SI/
+ locale/sl-SI/ (src/chrome/locale/sl-SI/*)
+% locale torlauncher sn %locale/sn/
+ locale/sn/ (src/chrome/locale/sn/*)
+% locale torlauncher so %locale/so/
+ locale/so/ (src/chrome/locale/so/*)
+% locale torlauncher sq %locale/sq/
+ locale/sq/ (src/chrome/locale/sq/*)
+% locale torlauncher sq-AL %locale/sq-AL/
+ locale/sq-AL/ (src/chrome/locale/sq-AL/*)
+% locale torlauncher sr %locale/sr/
+ locale/sr/ (src/chrome/locale/sr/*)
+% locale torlauncher sr@latin %locale/sr@latin/
+ locale/sr@latin/ (src/chrome/locale/sr@latin/*)
+% locale torlauncher st %locale/st/
+ locale/st/ (src/chrome/locale/st/*)
+% locale torlauncher su %locale/su/
+ locale/su/ (src/chrome/locale/su/*)
+% locale torlauncher sv %locale/sv/
+ locale/sv/ (src/chrome/locale/sv/*)
+% locale torlauncher sw %locale/sw/
+ locale/sw/ (src/chrome/locale/sw/*)
+% locale torlauncher szl %locale/szl/
+ locale/szl/ (src/chrome/locale/szl/*)
+% locale torlauncher ta %locale/ta/
+ locale/ta/ (src/chrome/locale/ta/*)
+% locale torlauncher te %locale/te/
+ locale/te/ (src/chrome/locale/te/*)
+% locale torlauncher te-IN %locale/te-IN/
+ locale/te-IN/ (src/chrome/locale/te-IN/*)
+% locale torlauncher tg %locale/tg/
+ locale/tg/ (src/chrome/locale/tg/*)
+% locale torlauncher th %locale/th/
+ locale/th/ (src/chrome/locale/th/*)
+% locale torlauncher ti %locale/ti/
+ locale/ti/ (src/chrome/locale/ti/*)
+% locale torlauncher tk %locale/tk/
+ locale/tk/ (src/chrome/locale/tk/*)
+% locale torlauncher tr %locale/tr/
+ locale/tr/ (src/chrome/locale/tr/*)
+% locale torlauncher uk %locale/uk/
+ locale/uk/ (src/chrome/locale/uk/*)
+% locale torlauncher ur %locale/ur/
+ locale/ur/ (src/chrome/locale/ur/*)
+% locale torlauncher ur-PK %locale/ur-PK/
+ locale/ur-PK/ (src/chrome/locale/ur-PK/*)
+% locale torlauncher uz %locale/uz/
+ locale/uz/ (src/chrome/locale/uz/*)
+% locale torlauncher ve %locale/ve/
+ locale/ve/ (src/chrome/locale/ve/*)
+% locale torlauncher vi %locale/vi/
+ locale/vi/ (src/chrome/locale/vi/*)
+% locale torlauncher wa %locale/wa/
+ locale/wa/ (src/chrome/locale/wa/*)
+% locale torlauncher wo %locale/wo/
+ locale/wo/ (src/chrome/locale/wo/*)
+% locale torlauncher zh %locale/zh/
+ locale/zh/ (src/chrome/locale/zh/*)
+% locale torlauncher zh-CN %locale/zh-CN/
+ locale/zh-CN/ (src/chrome/locale/zh-CN/*)
+% locale torlauncher zh-CN.GB2312 %locale/zh-CN.GB2312/
+ locale/zh-CN.GB2312/ (src/chrome/locale/zh-CN.GB2312/*)
+% locale torlauncher zh-HK %locale/zh-HK/
+ locale/zh-HK/ (src/chrome/locale/zh-HK/*)
+% locale torlauncher zh-TW %locale/zh-TW/
+ locale/zh-TW/ (src/chrome/locale/zh-TW/*)
+% locale torlauncher zu %locale/zu/
+ locale/zu/ (src/chrome/locale/zu/*)
diff --git a/src/chrome/locale/ach/network-settings.dtd b/src/chrome/locale/ach/network-settings.dtd
deleted file mode 100644
index c6c5687..0000000
--- a/src/chrome/locale/ach/network-settings.dtd
+++ /dev/null
@@ -1,62 +0,0 @@
-<!ENTITY torsettings.dialog.title "Tor Network Settings">
-<!ENTITY torsettings.wizard.title.default "Connect to Tor">
-<!ENTITY torsettings.wizard.title.configure "Tor Network Settings">
-<!ENTITY torsettings.wizard.title.connecting "Establishing a Connection">
-
-<!-- For locale picker: -->
-<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
-<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
-
-<!-- For "first run" wizard: -->
-
-<!ENTITY torSettings.connectPrompt "Click “Connect” to connect to Tor.">
-<!ENTITY torSettings.configurePrompt "Click “Configure” to adjust network settings if you are in a country that censors Tor (such as Egypt, China, Turkey) or if you are connecting from a private network that requires a proxy.">
-<!ENTITY torSettings.configure "Configure">
-<!ENTITY torSettings.connect "Connect">
-
-<!-- Other: -->
-
-<!ENTITY torsettings.startingTor "Waiting for Tor to start…">
-<!ENTITY torsettings.restartTor "Restart Tor">
-<!ENTITY torsettings.reconfigTor "Reconfigure">
-
-<!ENTITY torsettings.discardSettings.prompt "You have configured Tor bridges or you have entered local proxy settings.  To make a direct connection to the Tor network, these settings must be removed.">
-<!ENTITY torsettings.discardSettings.proceed "Remove Settings and Connect">
-
-<!ENTITY torsettings.optional "Optional">
-
-<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
-<!ENTITY torsettings.useProxy.type "Proxy Type:">
-<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
-<!ENTITY torsettings.useProxy.address "Address:">
-<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
-<!ENTITY torsettings.useProxy.port "Port:">
-<!ENTITY torsettings.useProxy.username "Username:">
-<!ENTITY torsettings.useProxy.password "Password:">
-<!ENTITY torsettings.useProxy.type.socks4 "SOCKS 4">
-<!ENTITY torsettings.useProxy.type.socks5 "SOCKS 5">
-<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
-<!ENTITY torsettings.firewall.checkbox "This computer goes through a firewall that only allows connections to certain ports">
-<!ENTITY torsettings.firewall.allowedPorts "Allowed Ports:">
-<!ENTITY torsettings.useBridges.checkbox "Tor is censored in my country">
-<!ENTITY torsettings.useBridges.default "Select a built-in bridge">
-<!ENTITY torsettings.useBridges.default.placeholder "select a bridge">
-<!ENTITY torsettings.useBridges.bridgeDB "Request a bridge from torproject.org">
-<!ENTITY torsettings.useBridges.captchaSolution.placeholder "Enter the characters from the image">
-<!ENTITY torsettings.useBridges.reloadCaptcha.tooltip "Get a new challenge">
-<!ENTITY torsettings.useBridges.captchaSubmit "Submit">
-<!ENTITY torsettings.useBridges.custom "Provide a bridge I know">
-<!ENTITY torsettings.useBridges.label "Enter bridge information from a trusted source.">
-<!ENTITY torsettings.useBridges.placeholder "type address:port (one per line)">
-
-<!ENTITY torsettings.copyLog "Copy Tor Log To Clipboard">
-
-<!ENTITY torsettings.proxyHelpTitle "Proxy Help">
-<!ENTITY torsettings.proxyHelp1 "A local proxy might be needed when connecting through a company, school, or university network. If you are not sure whether a proxy is needed, look at the Internet settings in another browser or check your system's network settings.">
-
-<!ENTITY torsettings.bridgeHelpTitle "Bridge Relay Help">
-<!ENTITY torsettings.bridgeHelp1 "Bridges are unlisted relays that make it more difficult to block connections to the Tor Network.  Each type of bridge uses a different method to avoid censorship.  The obfs ones make your traffic look like random noise, and the meek ones make your traffic look like it's connecting to that service instead of Tor.">
-<!ENTITY torsettings.bridgeHelp2 "Because of how certain countries try to block Tor, certain bridges work in certain countries but not others.  If you are unsure about which bridges work in your country, visit torproject.org/about/contact.html#support">
-
-<!-- Progress -->
-<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
diff --git a/src/chrome/locale/ach/torlauncher.properties b/src/chrome/locale/ach/torlauncher.properties
deleted file mode 100644
index ca9774b..0000000
--- a/src/chrome/locale/ach/torlauncher.properties
+++ /dev/null
@@ -1,94 +0,0 @@
-### Copyright (c) 2016, The Tor Project, Inc.
-### See LICENSE for licensing information.
-
-torlauncher.error_title=Tor Launcher
-
-torlauncher.tor_exited_during_startup=Tor exited during startup. This might be due to an error in your torrc file, a bug in Tor or another program on your system, or faulty hardware. Until you fix the underlying problem and restart Tor, Tor Browser will not start.
-torlauncher.tor_exited=Tor unexpectedly exited. This might be due to a bug in Tor itself, another program on your system, or faulty hardware. Until you restart Tor, the Tor Browser will not able to reach any websites. If the problem persists, please send a copy of your Tor Log to the support team.
-torlauncher.tor_exited2=Restarting Tor will not close your browser tabs.
-torlauncher.tor_controlconn_failed=Could not connect to Tor control port.
-torlauncher.tor_failed_to_start=Tor failed to start.
-torlauncher.tor_control_failed=Failed to take control of Tor.
-torlauncher.tor_bootstrap_failed=Tor failed to establish a Tor network connection.
-torlauncher.tor_bootstrap_failed_details=%1$S failed (%2$S).
-
-torlauncher.unable_to_start_tor=Unable to start Tor.\n\n%S
-torlauncher.tor_missing=The Tor executable is missing.
-torlauncher.torrc_missing=The torrc file is missing and could not be created.
-torlauncher.datadir_missing=The Tor data directory does not exist and could not be created.
-torlauncher.password_hash_missing=Failed to get hashed password.
-
-torlauncher.failed_to_get_settings=Unable to retrieve Tor settings.\n\n%S
-torlauncher.failed_to_save_settings=Unable to save Tor settings.\n\n%S
-torlauncher.ensure_tor_is_running=Please ensure that Tor is running.
-
-torlauncher.error_proxy_addr_missing=You must specify both an IP address or hostname and a port number to configure Tor to use a proxy to access the Internet.
-torlauncher.error_proxy_type_missing=You must select the proxy type.
-torlauncher.error_bridges_missing=You must specify one or more bridges.
-torlauncher.error_default_bridges_type_missing=You must select a transport type for the provided bridges.
-torlauncher.error_bridgedb_bridges_missing=Please request a bridge.
-torlauncher.error_bridge_bad_default_type=No provided bridges that have the transport type %S are available. Please adjust your settings.
-
-torlauncher.bridge_suffix.meek-amazon=(works in China)
-torlauncher.bridge_suffix.meek-azure=(works in China)
-
-torlauncher.request_a_bridge=Request a Bridge…
-torlauncher.request_a_new_bridge=Request a New Bridge…
-torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait.
-torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge.
-torlauncher.bad_captcha_solution=The solution is not correct. Please try again.
-torlauncher.unable_to_get_bridge=Unable to obtain a bridge from BridgeDB.\n\n%S
-torlauncher.no_meek=This browser is not configured for meek, which is needed to obtain bridges.
-torlauncher.no_bridges_available=No bridges are available at this time. Sorry.
-
-torlauncher.connect=Connect
-torlauncher.restart_tor=Restart Tor
-torlauncher.quit=Quit
-torlauncher.quit_win=Exit
-torlauncher.done=Done
-
-torlauncher.forAssistance=For assistance, contact %S
-torlauncher.forAssistance2=For assistance, visit %S
-
-torlauncher.copiedNLogMessages=Copy complete. %S Tor log messages are ready to be pasted into a text editor or an email message.
-
-torlauncher.bootstrapStatus.starting=Starting
-torlauncher.bootstrapStatus.conn_pt=Connecting to bridge
-torlauncher.bootstrapStatus.conn_done_pt=Connected to bridge
-torlauncher.bootstrapStatus.conn_proxy=Connecting to proxy
-torlauncher.bootstrapStatus.conn_done_proxy=Connected to proxy
-torlauncher.bootstrapStatus.conn=Connecting to a Tor relay
-torlauncher.bootstrapStatus.conn_done=Connected to a Tor relay
-torlauncher.bootstrapStatus.handshake=Negotiating with a Tor relay
-torlauncher.bootstrapStatus.handshake_done=Finished negotiating with a Tor relay
-torlauncher.bootstrapStatus.onehop_create=Establishing an encrypted directory connection
-torlauncher.bootstrapStatus.requesting_status=Retrieving network status
-torlauncher.bootstrapStatus.loading_status=Loading network status
-torlauncher.bootstrapStatus.loading_keys=Loading authority certificates
-torlauncher.bootstrapStatus.requesting_descriptors=Requesting relay information
-torlauncher.bootstrapStatus.loading_descriptors=Loading relay information
-torlauncher.bootstrapStatus.enough_dirinfo=Finished loading relay information
-torlauncher.bootstrapStatus.ap_conn_pt=Building circuits: Connecting to bridge
-torlauncher.bootstrapStatus.ap_conn_done_pt=Building circuits: Connected to bridge
-torlauncher.bootstrapStatus.ap_conn_proxy=Building circuits: Connecting to proxy
-torlauncher.bootstrapStatus.ap_conn_done_proxy=Building circuits: Connected to proxy
-torlauncher.bootstrapStatus.ap_conn=Building circuits: Connecting to a Tor relay
-torlauncher.bootstrapStatus.ap_conn_done=Building circuits: Connected to a Tor relay
-torlauncher.bootstrapStatus.ap_handshake=Building circuits: Negotiating with a Tor relay
-torlauncher.bootstrapStatus.ap_handshake_done=Building circuits: Finished negotiating with a Tor relay
-torlauncher.bootstrapStatus.circuit_create=Building circuits: Establishing a Tor circuit
-torlauncher.bootstrapStatus.done=Connected to the Tor network!
-
-torlauncher.bootstrapWarning.done=done
-torlauncher.bootstrapWarning.connectrefused=connection refused
-torlauncher.bootstrapWarning.misc=miscellaneous
-torlauncher.bootstrapWarning.resourcelimit=insufficient resources
-torlauncher.bootstrapWarning.identity=identity mismatch
-torlauncher.bootstrapWarning.timeout=connection timeout
-torlauncher.bootstrapWarning.noroute=no route to host
-torlauncher.bootstrapWarning.ioerror=read/write error
-torlauncher.bootstrapWarning.pt_missing=missing pluggable transport
-
-torlauncher.nsresult.NS_ERROR_NET_RESET=The connection to the server was lost.
-torlauncher.nsresult.NS_ERROR_CONNECTION_REFUSED=Could not connect to the server.
-torlauncher.nsresult.NS_ERROR_PROXY_CONNECTION_REFUSED=Could not connect to the proxy.
diff --git a/src/chrome/locale/ast/network-settings.dtd b/src/chrome/locale/ast/network-settings.dtd
deleted file mode 100644
index c6c5687..0000000
--- a/src/chrome/locale/ast/network-settings.dtd
+++ /dev/null
@@ -1,62 +0,0 @@
-<!ENTITY torsettings.dialog.title "Tor Network Settings">
-<!ENTITY torsettings.wizard.title.default "Connect to Tor">
-<!ENTITY torsettings.wizard.title.configure "Tor Network Settings">
-<!ENTITY torsettings.wizard.title.connecting "Establishing a Connection">
-
-<!-- For locale picker: -->
-<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
-<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
-
-<!-- For "first run" wizard: -->
-
-<!ENTITY torSettings.connectPrompt "Click “Connect” to connect to Tor.">
-<!ENTITY torSettings.configurePrompt "Click “Configure” to adjust network settings if you are in a country that censors Tor (such as Egypt, China, Turkey) or if you are connecting from a private network that requires a proxy.">
-<!ENTITY torSettings.configure "Configure">
-<!ENTITY torSettings.connect "Connect">
-
-<!-- Other: -->
-
-<!ENTITY torsettings.startingTor "Waiting for Tor to start…">
-<!ENTITY torsettings.restartTor "Restart Tor">
-<!ENTITY torsettings.reconfigTor "Reconfigure">
-
-<!ENTITY torsettings.discardSettings.prompt "You have configured Tor bridges or you have entered local proxy settings.  To make a direct connection to the Tor network, these settings must be removed.">
-<!ENTITY torsettings.discardSettings.proceed "Remove Settings and Connect">
-
-<!ENTITY torsettings.optional "Optional">
-
-<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
-<!ENTITY torsettings.useProxy.type "Proxy Type:">
-<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
-<!ENTITY torsettings.useProxy.address "Address:">
-<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
-<!ENTITY torsettings.useProxy.port "Port:">
-<!ENTITY torsettings.useProxy.username "Username:">
-<!ENTITY torsettings.useProxy.password "Password:">
-<!ENTITY torsettings.useProxy.type.socks4 "SOCKS 4">
-<!ENTITY torsettings.useProxy.type.socks5 "SOCKS 5">
-<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
-<!ENTITY torsettings.firewall.checkbox "This computer goes through a firewall that only allows connections to certain ports">
-<!ENTITY torsettings.firewall.allowedPorts "Allowed Ports:">
-<!ENTITY torsettings.useBridges.checkbox "Tor is censored in my country">
-<!ENTITY torsettings.useBridges.default "Select a built-in bridge">
-<!ENTITY torsettings.useBridges.default.placeholder "select a bridge">
-<!ENTITY torsettings.useBridges.bridgeDB "Request a bridge from torproject.org">
-<!ENTITY torsettings.useBridges.captchaSolution.placeholder "Enter the characters from the image">
-<!ENTITY torsettings.useBridges.reloadCaptcha.tooltip "Get a new challenge">
-<!ENTITY torsettings.useBridges.captchaSubmit "Submit">
-<!ENTITY torsettings.useBridges.custom "Provide a bridge I know">
-<!ENTITY torsettings.useBridges.label "Enter bridge information from a trusted source.">
-<!ENTITY torsettings.useBridges.placeholder "type address:port (one per line)">
-
-<!ENTITY torsettings.copyLog "Copy Tor Log To Clipboard">
-
-<!ENTITY torsettings.proxyHelpTitle "Proxy Help">
-<!ENTITY torsettings.proxyHelp1 "A local proxy might be needed when connecting through a company, school, or university network. If you are not sure whether a proxy is needed, look at the Internet settings in another browser or check your system's network settings.">
-
-<!ENTITY torsettings.bridgeHelpTitle "Bridge Relay Help">
-<!ENTITY torsettings.bridgeHelp1 "Bridges are unlisted relays that make it more difficult to block connections to the Tor Network.  Each type of bridge uses a different method to avoid censorship.  The obfs ones make your traffic look like random noise, and the meek ones make your traffic look like it's connecting to that service instead of Tor.">
-<!ENTITY torsettings.bridgeHelp2 "Because of how certain countries try to block Tor, certain bridges work in certain countries but not others.  If you are unsure about which bridges work in your country, visit torproject.org/about/contact.html#support">
-
-<!-- Progress -->
-<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
diff --git a/src/chrome/locale/ast/torlauncher.properties b/src/chrome/locale/ast/torlauncher.properties
deleted file mode 100644
index ca9774b..0000000
--- a/src/chrome/locale/ast/torlauncher.properties
+++ /dev/null
@@ -1,94 +0,0 @@
-### Copyright (c) 2016, The Tor Project, Inc.
-### See LICENSE for licensing information.
-
-torlauncher.error_title=Tor Launcher
-
-torlauncher.tor_exited_during_startup=Tor exited during startup. This might be due to an error in your torrc file, a bug in Tor or another program on your system, or faulty hardware. Until you fix the underlying problem and restart Tor, Tor Browser will not start.
-torlauncher.tor_exited=Tor unexpectedly exited. This might be due to a bug in Tor itself, another program on your system, or faulty hardware. Until you restart Tor, the Tor Browser will not able to reach any websites. If the problem persists, please send a copy of your Tor Log to the support team.
-torlauncher.tor_exited2=Restarting Tor will not close your browser tabs.
-torlauncher.tor_controlconn_failed=Could not connect to Tor control port.
-torlauncher.tor_failed_to_start=Tor failed to start.
-torlauncher.tor_control_failed=Failed to take control of Tor.
-torlauncher.tor_bootstrap_failed=Tor failed to establish a Tor network connection.
-torlauncher.tor_bootstrap_failed_details=%1$S failed (%2$S).
-
-torlauncher.unable_to_start_tor=Unable to start Tor.\n\n%S
-torlauncher.tor_missing=The Tor executable is missing.
-torlauncher.torrc_missing=The torrc file is missing and could not be created.
-torlauncher.datadir_missing=The Tor data directory does not exist and could not be created.
-torlauncher.password_hash_missing=Failed to get hashed password.
-
-torlauncher.failed_to_get_settings=Unable to retrieve Tor settings.\n\n%S
-torlauncher.failed_to_save_settings=Unable to save Tor settings.\n\n%S
-torlauncher.ensure_tor_is_running=Please ensure that Tor is running.
-
-torlauncher.error_proxy_addr_missing=You must specify both an IP address or hostname and a port number to configure Tor to use a proxy to access the Internet.
-torlauncher.error_proxy_type_missing=You must select the proxy type.
-torlauncher.error_bridges_missing=You must specify one or more bridges.
-torlauncher.error_default_bridges_type_missing=You must select a transport type for the provided bridges.
-torlauncher.error_bridgedb_bridges_missing=Please request a bridge.
-torlauncher.error_bridge_bad_default_type=No provided bridges that have the transport type %S are available. Please adjust your settings.
-
-torlauncher.bridge_suffix.meek-amazon=(works in China)
-torlauncher.bridge_suffix.meek-azure=(works in China)
-
-torlauncher.request_a_bridge=Request a Bridge…
-torlauncher.request_a_new_bridge=Request a New Bridge…
-torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait.
-torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge.
-torlauncher.bad_captcha_solution=The solution is not correct. Please try again.
-torlauncher.unable_to_get_bridge=Unable to obtain a bridge from BridgeDB.\n\n%S
-torlauncher.no_meek=This browser is not configured for meek, which is needed to obtain bridges.
-torlauncher.no_bridges_available=No bridges are available at this time. Sorry.
-
-torlauncher.connect=Connect
-torlauncher.restart_tor=Restart Tor
-torlauncher.quit=Quit
-torlauncher.quit_win=Exit
-torlauncher.done=Done
-
-torlauncher.forAssistance=For assistance, contact %S
-torlauncher.forAssistance2=For assistance, visit %S
-
-torlauncher.copiedNLogMessages=Copy complete. %S Tor log messages are ready to be pasted into a text editor or an email message.
-
-torlauncher.bootstrapStatus.starting=Starting
-torlauncher.bootstrapStatus.conn_pt=Connecting to bridge
-torlauncher.bootstrapStatus.conn_done_pt=Connected to bridge
-torlauncher.bootstrapStatus.conn_proxy=Connecting to proxy
-torlauncher.bootstrapStatus.conn_done_proxy=Connected to proxy
-torlauncher.bootstrapStatus.conn=Connecting to a Tor relay
-torlauncher.bootstrapStatus.conn_done=Connected to a Tor relay
-torlauncher.bootstrapStatus.handshake=Negotiating with a Tor relay
-torlauncher.bootstrapStatus.handshake_done=Finished negotiating with a Tor relay
-torlauncher.bootstrapStatus.onehop_create=Establishing an encrypted directory connection
-torlauncher.bootstrapStatus.requesting_status=Retrieving network status
-torlauncher.bootstrapStatus.loading_status=Loading network status
-torlauncher.bootstrapStatus.loading_keys=Loading authority certificates
-torlauncher.bootstrapStatus.requesting_descriptors=Requesting relay information
-torlauncher.bootstrapStatus.loading_descriptors=Loading relay information
-torlauncher.bootstrapStatus.enough_dirinfo=Finished loading relay information
-torlauncher.bootstrapStatus.ap_conn_pt=Building circuits: Connecting to bridge
-torlauncher.bootstrapStatus.ap_conn_done_pt=Building circuits: Connected to bridge
-torlauncher.bootstrapStatus.ap_conn_proxy=Building circuits: Connecting to proxy
-torlauncher.bootstrapStatus.ap_conn_done_proxy=Building circuits: Connected to proxy
-torlauncher.bootstrapStatus.ap_conn=Building circuits: Connecting to a Tor relay
-torlauncher.bootstrapStatus.ap_conn_done=Building circuits: Connected to a Tor relay
-torlauncher.bootstrapStatus.ap_handshake=Building circuits: Negotiating with a Tor relay
-torlauncher.bootstrapStatus.ap_handshake_done=Building circuits: Finished negotiating with a Tor relay
-torlauncher.bootstrapStatus.circuit_create=Building circuits: Establishing a Tor circuit
-torlauncher.bootstrapStatus.done=Connected to the Tor network!
-
-torlauncher.bootstrapWarning.done=done
-torlauncher.bootstrapWarning.connectrefused=connection refused
-torlauncher.bootstrapWarning.misc=miscellaneous
-torlauncher.bootstrapWarning.resourcelimit=insufficient resources
-torlauncher.bootstrapWarning.identity=identity mismatch
-torlauncher.bootstrapWarning.timeout=connection timeout
-torlauncher.bootstrapWarning.noroute=no route to host
-torlauncher.bootstrapWarning.ioerror=read/write error
-torlauncher.bootstrapWarning.pt_missing=missing pluggable transport
-
-torlauncher.nsresult.NS_ERROR_NET_RESET=The connection to the server was lost.
-torlauncher.nsresult.NS_ERROR_CONNECTION_REFUSED=Could not connect to the server.
-torlauncher.nsresult.NS_ERROR_PROXY_CONNECTION_REFUSED=Could not connect to the proxy.
diff --git a/src/chrome/locale/ca-ES/torlauncher.properties b/src/chrome/locale/ca-ES/torlauncher.properties
deleted file mode 100644
index 65407db..0000000
--- a/src/chrome/locale/ca-ES/torlauncher.properties
+++ /dev/null
@@ -1,49 +0,0 @@
-### Copyright (c) 2014, The Tor Project, Inc.
-### See LICENSE for licensing information.
-
-# torlauncher.error_title=Tor Launcher
-
-# torlauncher.tor_exited=Tor unexpectedly exited.
-# torlauncher.please_restart_app=Please restart this application.
-# torlauncher.tor_controlconn_failed=Could not connect to Tor control port.
-# torlauncher.tor_failed_to_start=Tor failed to start.
-# torlauncher.tor_bootstrap_failed=Tor failed to establish a Tor network connection.
-# torlauncher.tor_bootstrap_failed_details=%1$S failed (%2$S).
-
-# torlauncher.unable_to_start_tor=Unable to start Tor.\n\n%S
-# torlauncher.tor_missing=The Tor executable is missing.
-# torlauncher.torrc_missing=The torrc file is missing.
-# torlauncher.datadir_missing=The Tor data directory does not exist.
-# torlauncher.password_hash_missing=Failed to get hashed password.
-
-# torlauncher.failed_to_get_settings=Unable to retrieve Tor settings.\n\n%S
-# torlauncher.failed_to_save_settings=Unable to save Tor settings.\n\n%S
-# torlauncher.ensure_tor_is_running=Please ensure that Tor is running.
-
-# torlauncher.error_proxy_addr_missing=You must specify both an IP address or hostname and a port number to configure Tor to use a proxy to access the Internet.
-# torlauncher.error_proxy_type_missing=You must select the proxy type.
-# torlauncher.error_bridges_missing=You must specify one or more bridges.
-
-# torlauncher.connect=Connect
-# torlauncher.quit=Quit
-# torlauncher.quit_win=Exit
-# torlauncher.done=Done
-
-# torlauncher.forAssistance=For assistance, contact %S
-
-# torlauncher.bootstrapStatus.onehop_create=Establishing an encrypted directory connection
-# torlauncher.bootstrapStatus.requesting_status=Retrieving network status
-# torlauncher.bootstrapStatus.loading_status=Loading network status
-# torlauncher.bootstrapStatus.loading_keys=Loading authority certificates
-# torlauncher.bootstrapStatus.requesting_descriptors=Requesting relay information
-# torlauncher.bootstrapStatus.loading_descriptors=Loading relay information
-# torlauncher.bootstrapStatus.done=Connected to the Tor network!
-
-# torlauncher.bootstrapWarning.done=done
-# torlauncher.bootstrapWarning.connectrefused=connection refused
-# torlauncher.bootstrapWarning.misc=miscellaneous
-# torlauncher.bootstrapWarning.resourcelimit=insufficient resources
-# torlauncher.bootstrapWarning.identity=identity mismatch
-# torlauncher.bootstrapWarning.timeout=connection timeout
-# torlauncher.bootstrapWarning.noroute=no route to host
-# torlauncher.bootstrapWarning.ioerror=read/write error
diff --git a/src/chrome/locale/en-GB/network-settings.dtd b/src/chrome/locale/en-GB/network-settings.dtd
deleted file mode 100644
index c6c5687..0000000
--- a/src/chrome/locale/en-GB/network-settings.dtd
+++ /dev/null
@@ -1,62 +0,0 @@
-<!ENTITY torsettings.dialog.title "Tor Network Settings">
-<!ENTITY torsettings.wizard.title.default "Connect to Tor">
-<!ENTITY torsettings.wizard.title.configure "Tor Network Settings">
-<!ENTITY torsettings.wizard.title.connecting "Establishing a Connection">
-
-<!-- For locale picker: -->
-<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
-<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
-
-<!-- For "first run" wizard: -->
-
-<!ENTITY torSettings.connectPrompt "Click “Connect” to connect to Tor.">
-<!ENTITY torSettings.configurePrompt "Click “Configure” to adjust network settings if you are in a country that censors Tor (such as Egypt, China, Turkey) or if you are connecting from a private network that requires a proxy.">
-<!ENTITY torSettings.configure "Configure">
-<!ENTITY torSettings.connect "Connect">
-
-<!-- Other: -->
-
-<!ENTITY torsettings.startingTor "Waiting for Tor to start…">
-<!ENTITY torsettings.restartTor "Restart Tor">
-<!ENTITY torsettings.reconfigTor "Reconfigure">
-
-<!ENTITY torsettings.discardSettings.prompt "You have configured Tor bridges or you have entered local proxy settings.  To make a direct connection to the Tor network, these settings must be removed.">
-<!ENTITY torsettings.discardSettings.proceed "Remove Settings and Connect">
-
-<!ENTITY torsettings.optional "Optional">
-
-<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
-<!ENTITY torsettings.useProxy.type "Proxy Type:">
-<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
-<!ENTITY torsettings.useProxy.address "Address:">
-<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
-<!ENTITY torsettings.useProxy.port "Port:">
-<!ENTITY torsettings.useProxy.username "Username:">
-<!ENTITY torsettings.useProxy.password "Password:">
-<!ENTITY torsettings.useProxy.type.socks4 "SOCKS 4">
-<!ENTITY torsettings.useProxy.type.socks5 "SOCKS 5">
-<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
-<!ENTITY torsettings.firewall.checkbox "This computer goes through a firewall that only allows connections to certain ports">
-<!ENTITY torsettings.firewall.allowedPorts "Allowed Ports:">
-<!ENTITY torsettings.useBridges.checkbox "Tor is censored in my country">
-<!ENTITY torsettings.useBridges.default "Select a built-in bridge">
-<!ENTITY torsettings.useBridges.default.placeholder "select a bridge">
-<!ENTITY torsettings.useBridges.bridgeDB "Request a bridge from torproject.org">
-<!ENTITY torsettings.useBridges.captchaSolution.placeholder "Enter the characters from the image">
-<!ENTITY torsettings.useBridges.reloadCaptcha.tooltip "Get a new challenge">
-<!ENTITY torsettings.useBridges.captchaSubmit "Submit">
-<!ENTITY torsettings.useBridges.custom "Provide a bridge I know">
-<!ENTITY torsettings.useBridges.label "Enter bridge information from a trusted source.">
-<!ENTITY torsettings.useBridges.placeholder "type address:port (one per line)">
-
-<!ENTITY torsettings.copyLog "Copy Tor Log To Clipboard">
-
-<!ENTITY torsettings.proxyHelpTitle "Proxy Help">
-<!ENTITY torsettings.proxyHelp1 "A local proxy might be needed when connecting through a company, school, or university network. If you are not sure whether a proxy is needed, look at the Internet settings in another browser or check your system's network settings.">
-
-<!ENTITY torsettings.bridgeHelpTitle "Bridge Relay Help">
-<!ENTITY torsettings.bridgeHelp1 "Bridges are unlisted relays that make it more difficult to block connections to the Tor Network.  Each type of bridge uses a different method to avoid censorship.  The obfs ones make your traffic look like random noise, and the meek ones make your traffic look like it's connecting to that service instead of Tor.">
-<!ENTITY torsettings.bridgeHelp2 "Because of how certain countries try to block Tor, certain bridges work in certain countries but not others.  If you are unsure about which bridges work in your country, visit torproject.org/about/contact.html#support">
-
-<!-- Progress -->
-<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
diff --git a/src/chrome/locale/en-GB/torlauncher.properties b/src/chrome/locale/en-GB/torlauncher.properties
deleted file mode 100644
index ca9774b..0000000
--- a/src/chrome/locale/en-GB/torlauncher.properties
+++ /dev/null
@@ -1,94 +0,0 @@
-### Copyright (c) 2016, The Tor Project, Inc.
-### See LICENSE for licensing information.
-
-torlauncher.error_title=Tor Launcher
-
-torlauncher.tor_exited_during_startup=Tor exited during startup. This might be due to an error in your torrc file, a bug in Tor or another program on your system, or faulty hardware. Until you fix the underlying problem and restart Tor, Tor Browser will not start.
-torlauncher.tor_exited=Tor unexpectedly exited. This might be due to a bug in Tor itself, another program on your system, or faulty hardware. Until you restart Tor, the Tor Browser will not able to reach any websites. If the problem persists, please send a copy of your Tor Log to the support team.
-torlauncher.tor_exited2=Restarting Tor will not close your browser tabs.
-torlauncher.tor_controlconn_failed=Could not connect to Tor control port.
-torlauncher.tor_failed_to_start=Tor failed to start.
-torlauncher.tor_control_failed=Failed to take control of Tor.
-torlauncher.tor_bootstrap_failed=Tor failed to establish a Tor network connection.
-torlauncher.tor_bootstrap_failed_details=%1$S failed (%2$S).
-
-torlauncher.unable_to_start_tor=Unable to start Tor.\n\n%S
-torlauncher.tor_missing=The Tor executable is missing.
-torlauncher.torrc_missing=The torrc file is missing and could not be created.
-torlauncher.datadir_missing=The Tor data directory does not exist and could not be created.
-torlauncher.password_hash_missing=Failed to get hashed password.
-
-torlauncher.failed_to_get_settings=Unable to retrieve Tor settings.\n\n%S
-torlauncher.failed_to_save_settings=Unable to save Tor settings.\n\n%S
-torlauncher.ensure_tor_is_running=Please ensure that Tor is running.
-
-torlauncher.error_proxy_addr_missing=You must specify both an IP address or hostname and a port number to configure Tor to use a proxy to access the Internet.
-torlauncher.error_proxy_type_missing=You must select the proxy type.
-torlauncher.error_bridges_missing=You must specify one or more bridges.
-torlauncher.error_default_bridges_type_missing=You must select a transport type for the provided bridges.
-torlauncher.error_bridgedb_bridges_missing=Please request a bridge.
-torlauncher.error_bridge_bad_default_type=No provided bridges that have the transport type %S are available. Please adjust your settings.
-
-torlauncher.bridge_suffix.meek-amazon=(works in China)
-torlauncher.bridge_suffix.meek-azure=(works in China)
-
-torlauncher.request_a_bridge=Request a Bridge…
-torlauncher.request_a_new_bridge=Request a New Bridge…
-torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait.
-torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge.
-torlauncher.bad_captcha_solution=The solution is not correct. Please try again.
-torlauncher.unable_to_get_bridge=Unable to obtain a bridge from BridgeDB.\n\n%S
-torlauncher.no_meek=This browser is not configured for meek, which is needed to obtain bridges.
-torlauncher.no_bridges_available=No bridges are available at this time. Sorry.
-
-torlauncher.connect=Connect
-torlauncher.restart_tor=Restart Tor
-torlauncher.quit=Quit
-torlauncher.quit_win=Exit
-torlauncher.done=Done
-
-torlauncher.forAssistance=For assistance, contact %S
-torlauncher.forAssistance2=For assistance, visit %S
-
-torlauncher.copiedNLogMessages=Copy complete. %S Tor log messages are ready to be pasted into a text editor or an email message.
-
-torlauncher.bootstrapStatus.starting=Starting
-torlauncher.bootstrapStatus.conn_pt=Connecting to bridge
-torlauncher.bootstrapStatus.conn_done_pt=Connected to bridge
-torlauncher.bootstrapStatus.conn_proxy=Connecting to proxy
-torlauncher.bootstrapStatus.conn_done_proxy=Connected to proxy
-torlauncher.bootstrapStatus.conn=Connecting to a Tor relay
-torlauncher.bootstrapStatus.conn_done=Connected to a Tor relay
-torlauncher.bootstrapStatus.handshake=Negotiating with a Tor relay
-torlauncher.bootstrapStatus.handshake_done=Finished negotiating with a Tor relay
-torlauncher.bootstrapStatus.onehop_create=Establishing an encrypted directory connection
-torlauncher.bootstrapStatus.requesting_status=Retrieving network status
-torlauncher.bootstrapStatus.loading_status=Loading network status
-torlauncher.bootstrapStatus.loading_keys=Loading authority certificates
-torlauncher.bootstrapStatus.requesting_descriptors=Requesting relay information
-torlauncher.bootstrapStatus.loading_descriptors=Loading relay information
-torlauncher.bootstrapStatus.enough_dirinfo=Finished loading relay information
-torlauncher.bootstrapStatus.ap_conn_pt=Building circuits: Connecting to bridge
-torlauncher.bootstrapStatus.ap_conn_done_pt=Building circuits: Connected to bridge
-torlauncher.bootstrapStatus.ap_conn_proxy=Building circuits: Connecting to proxy
-torlauncher.bootstrapStatus.ap_conn_done_proxy=Building circuits: Connected to proxy
-torlauncher.bootstrapStatus.ap_conn=Building circuits: Connecting to a Tor relay
-torlauncher.bootstrapStatus.ap_conn_done=Building circuits: Connected to a Tor relay
-torlauncher.bootstrapStatus.ap_handshake=Building circuits: Negotiating with a Tor relay
-torlauncher.bootstrapStatus.ap_handshake_done=Building circuits: Finished negotiating with a Tor relay
-torlauncher.bootstrapStatus.circuit_create=Building circuits: Establishing a Tor circuit
-torlauncher.bootstrapStatus.done=Connected to the Tor network!
-
-torlauncher.bootstrapWarning.done=done
-torlauncher.bootstrapWarning.connectrefused=connection refused
-torlauncher.bootstrapWarning.misc=miscellaneous
-torlauncher.bootstrapWarning.resourcelimit=insufficient resources
-torlauncher.bootstrapWarning.identity=identity mismatch
-torlauncher.bootstrapWarning.timeout=connection timeout
-torlauncher.bootstrapWarning.noroute=no route to host
-torlauncher.bootstrapWarning.ioerror=read/write error
-torlauncher.bootstrapWarning.pt_missing=missing pluggable transport
-
-torlauncher.nsresult.NS_ERROR_NET_RESET=The connection to the server was lost.
-torlauncher.nsresult.NS_ERROR_CONNECTION_REFUSED=Could not connect to the server.
-torlauncher.nsresult.NS_ERROR_PROXY_CONNECTION_REFUSED=Could not connect to the proxy.
diff --git a/src/chrome/locale/ko/torlauncher.properties b/src/chrome/locale/ko/torlauncher.properties
index 2e32da2..7b430b3 100644
--- a/src/chrome/locale/ko/torlauncher.properties
+++ b/src/chrome/locale/ko/torlauncher.properties
@@ -3,43 +3,43 @@
torlauncher.error_title=Tor 런처
-torlauncher.tor_exited_during_startup=시작하는 동안 Tor가 종료되었습니다. 이것은 torrc 파일의 오류, Tor 또는 시스템의 다른 프로그램의 버그 또는 하드웨어 결함으로 인한 것일 수 있습니다. 기본 문제를 해결하고 Tor를 다시 시작할 때까지 Tor 브라우저는 시작되지 않습니다.
+torlauncher.tor_exited_during_startup=시작하는 동안 Tor가 종료되었습니다. 이것은 torrc 파일의 오류, Tor 나 PC의 다른 프로그램의 버그, 혹은 하드웨어 결함으로 인한 것일 수 있습니다. 기본 문제를 해결하고 Tor를 다시 시작할 때까지 Tor 브라우저는 시작되지 않습니다.
torlauncher.tor_exited=Tor가 예기치 않게 종료되었습니다. 이것은 Tor 자체의 오류, 사용자 시스템의 타 프로그램 또는 하드웨어의 오류 때문일 수 있습니다. 사용자가 Tor를 재시작 하기 전까진, Tor 브라우저는 어떠한 웹사이트에 접속하지 않습니다. 문제가 계속된다면, 지원팀에게 당신의 Tor 로그를 보내주십시오.
-torlauncher.tor_exited2=Tor를 재시작해도 브라우저 탭은 닫히지 않음.
+torlauncher.tor_exited2=Tor를 재시작해도 브라우저 탭은 닫히지 않습니다.
torlauncher.tor_controlconn_failed=Tor 제어 포트에 연결할 수 없습니다.
-torlauncher.tor_failed_to_start=Tor 시작 실패.
+torlauncher.tor_failed_to_start=Tor 시작에 실패했습니다.
torlauncher.tor_control_failed=Tor 제어에 실패했습니다.
-torlauncher.tor_bootstrap_failed=Tor 네트워크 연결 설정 실패
+torlauncher.tor_bootstrap_failed=Tor 네트워크 연결에 실패했습니다.
torlauncher.tor_bootstrap_failed_details=%1$S 실패 (%2$S)
torlauncher.unable_to_start_tor=Tor를 시작할 수 없습니다.\n\n%S
torlauncher.tor_missing=Tor 실행 파일이 없습니다.
torlauncher.torrc_missing=torrc 파일이 사라졌으며 생성 할 수 없습니다.
torlauncher.datadir_missing=Tor 데이터 디렉토리가 존재하지 않으며 생성할 수 없습니다.
-torlauncher.password_hash_missing=해쉬 암호 획득 실패
+torlauncher.password_hash_missing=해쉬 암호을 얻어오지 못 하였습니다.
torlauncher.failed_to_get_settings=Tor 설정을 찾을 수 없습니다.\n\n%S
torlauncher.failed_to_save_settings=Tor 설정을 저장할 수 없습니다.\n\n%S
-torlauncher.ensure_tor_is_running=Tor가 실행중인 지 확인하여 주십시오.
+torlauncher.ensure_tor_is_running=Tor가 실행중인지 확인하여 주십시오.
-torlauncher.error_proxy_addr_missing=인터넷에 접속하기 위해 프록시를 사용한다면, Ip주소나 호스트 이름, 그리고 포트 번호를 입력해야 합니다.
+torlauncher.error_proxy_addr_missing=인터넷에 접속하기 위해 프록시를 사용한다면, IP주소나 호스트 이름, 그리고 포트 번호를 입력해야 합니다.
torlauncher.error_proxy_type_missing=프록시 유형을 선택해 주십시오.
torlauncher.error_bridges_missing=하나 이상의 bridge를 지정해야 합니다.
torlauncher.error_default_bridges_type_missing=제공된 브리지의 전송 유형을 선택해야합니다.
-torlauncher.error_bridgedb_bridges_missing=Please request a bridge.
-torlauncher.error_bridge_bad_default_type=전송 유형 %S가 제공 한 브리지 유효한 것이 아닙니다. 설정을 조정하십시오.
+torlauncher.error_bridgedb_bridges_missing=브릿지를 요청해주세요.
+torlauncher.error_bridge_bad_default_type=전송 유형 %S가 제공한 브리지는 유효하지 않습니다. 설정을 조정하십시오.
-torlauncher.bridge_suffix.meek-amazon=(works in China)
-torlauncher.bridge_suffix.meek-azure=(works in China)
+torlauncher.bridge_suffix.meek-amazon=(중국에서 일하기)
+torlauncher.bridge_suffix.meek-azure=(중국에서 일하기)
-torlauncher.request_a_bridge=Request a Bridge…
-torlauncher.request_a_new_bridge=Request a New Bridge…
-torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait.
-torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge.
-torlauncher.bad_captcha_solution=The solution is not correct. Please try again.
-torlauncher.unable_to_get_bridge=Unable to obtain a bridge from BridgeDB.\n\n%S
-torlauncher.no_meek=This browser is not configured for meek, which is needed to obtain bridges.
-torlauncher.no_bridges_available=No bridges are available at this time. Sorry.
+torlauncher.request_a_bridge=브릿지 요청하기
+torlauncher.request_a_new_bridge=새로운 브릿지 요청하기
+torlauncher.contacting_bridgedb=브릿지DB에 연결하고 있으니, 잠시 기다려주세요.
+torlauncher.captcha_prompt=브릿지를 요청하기 위해 CAPCHA를 풀어주세요.
+torlauncher.bad_captcha_solution=풀이가 맞지 않습니다. 다시 시도해주세요.
+torlauncher.unable_to_get_bridge=브릿지DB로터 브릿지를 얻어오지 못 하였습니다.\n\n%S
+torlauncher.no_meek=이 브라우저는 브릿지 확보에 필요한 온전한 기능을 위해 설정되어 있지 않습니다.
+torlauncher.no_bridges_available=지금은 사용할 수 있는 브릿지가 없습니다. 죄송합니다.
torlauncher.connect=연결
torlauncher.restart_tor=Tor 재시작
@@ -47,40 +47,40 @@ torlauncher.quit=끝내기
torlauncher.quit_win=종료
torlauncher.done=완료
-torlauncher.forAssistance=지원자 연결 %S
+torlauncher.forAssistance=도움이 필요하면, %S에 연락하십시오.
torlauncher.forAssistance2=도움이 필요하면 %S를 방문하십시오.
-torlauncher.copiedNLogMessages=복사 완료. %S Tor 로그 메시지는 텍스트 편집기 나 이메일 메시지에 붙여 넣을 수 있는 상태가 됩니다.
+torlauncher.copiedNLogMessages=복사 완료. %S Tor 로그 메시지는 텍스트 편집기나 이메일 메시지에 붙여넣을 수 있는 상태가 됩니다.
torlauncher.bootstrapStatus.starting=시작중
-torlauncher.bootstrapStatus.conn_pt=Connecting to bridge
-torlauncher.bootstrapStatus.conn_done_pt=Connected to bridge
-torlauncher.bootstrapStatus.conn_proxy=Connecting to proxy
-torlauncher.bootstrapStatus.conn_done_proxy=Connected to proxy
-torlauncher.bootstrapStatus.conn=Connecting to a Tor relay
-torlauncher.bootstrapStatus.conn_done=Connected to a Tor relay
-torlauncher.bootstrapStatus.handshake=Negotiating with a Tor relay
-torlauncher.bootstrapStatus.handshake_done=Finished negotiating with a Tor relay
+torlauncher.bootstrapStatus.conn_pt=브릿지에 연결하고 있습니다.
+torlauncher.bootstrapStatus.conn_done_pt=브릿지에 연결되었습니다.
+torlauncher.bootstrapStatus.conn_proxy=프록시에 연결하고 있습니다.
+torlauncher.bootstrapStatus.conn_done_proxy=프록시에 연결되었습니다.
+torlauncher.bootstrapStatus.conn=Tor 릴레이에 연결하고 있습니다.
+torlauncher.bootstrapStatus.conn_done=Tor 릴레이에 연결되었습니다.
+torlauncher.bootstrapStatus.handshake=Tor 릴레이와 네고하고 있습니다.
+torlauncher.bootstrapStatus.handshake_done=Tor 릴레이와의 네고를 완료하였습니다.
torlauncher.bootstrapStatus.onehop_create=경로와의 연결을 암호화해서 만들고 있어요
-torlauncher.bootstrapStatus.requesting_status=네트워크의 상태를 가져오는중
-torlauncher.bootstrapStatus.loading_status=네트워크의 상태를 요청중
-torlauncher.bootstrapStatus.loading_keys=권한 인증서를 로딩중
-torlauncher.bootstrapStatus.requesting_descriptors=중계서버 정보를 요청중
-torlauncher.bootstrapStatus.loading_descriptors=중계서버 정보를 로딩중
-torlauncher.bootstrapStatus.enough_dirinfo=Finished loading relay information
-torlauncher.bootstrapStatus.ap_conn_pt=Building circuits: Connecting to bridge
-torlauncher.bootstrapStatus.ap_conn_done_pt=Building circuits: Connected to bridge
-torlauncher.bootstrapStatus.ap_conn_proxy=Building circuits: Connecting to proxy
-torlauncher.bootstrapStatus.ap_conn_done_proxy=Building circuits: Connected to proxy
-torlauncher.bootstrapStatus.ap_conn=Building circuits: Connecting to a Tor relay
-torlauncher.bootstrapStatus.ap_conn_done=Building circuits: Connected to a Tor relay
-torlauncher.bootstrapStatus.ap_handshake=Building circuits: Negotiating with a Tor relay
-torlauncher.bootstrapStatus.ap_handshake_done=Building circuits: Finished negotiating with a Tor relay
-torlauncher.bootstrapStatus.circuit_create=Building circuits: Establishing a Tor circuit
-torlauncher.bootstrapStatus.done=Tor 네트워크에 연결 성공!
+torlauncher.bootstrapStatus.requesting_status=네트워크의 상태를 가져오고 있습니다.
+torlauncher.bootstrapStatus.loading_status=네트워크의 상태를 불러오고 있습니다.
+torlauncher.bootstrapStatus.loading_keys=인증서를 로딩하고 있습니다.
+torlauncher.bootstrapStatus.requesting_descriptors=중계서버 정보를 요청하고 있습니다.
+torlauncher.bootstrapStatus.loading_descriptors=중계서버 정보를 불러오고 있습니다.
+torlauncher.bootstrapStatus.enough_dirinfo=릴레이 정보 불러오기에 완료하였습니다.
+torlauncher.bootstrapStatus.ap_conn_pt=우회로 연결: 브릿지에 연결하고 있습니다.
+torlauncher.bootstrapStatus.ap_conn_done_pt=우회로 연결: 브릿지에 연결되었습니다.
+torlauncher.bootstrapStatus.ap_conn_proxy=우회로 연결: 프록시에 연결하고 있습니다.
+torlauncher.bootstrapStatus.ap_conn_done_proxy=우회로 연결: 프록시에 연결되었습니다.
+torlauncher.bootstrapStatus.ap_conn=우회로 연결: Tor 릴레이에 연결하고 있습니다.
+torlauncher.bootstrapStatus.ap_conn_done=우회로 연결: Tor 릴레이에 연결되었습니다.
+torlauncher.bootstrapStatus.ap_handshake=우회로 연결: Tor 릴레이와 네고하고 있습니다.
+torlauncher.bootstrapStatus.ap_handshake_done=우회로 연결: Tor 릴레이와의 네고가 끝났습니다.
+torlauncher.bootstrapStatus.circuit_create=우회로 연결: Tor 우회로가 연결되었습니다.
+torlauncher.bootstrapStatus.done=Tor 네트워크에 연결되었습니다.
torlauncher.bootstrapWarning.done=완료
-torlauncher.bootstrapWarning.connectrefused=연결이 거부됨
+torlauncher.bootstrapWarning.connectrefused=연결이 거부되었습니다.
torlauncher.bootstrapWarning.misc=기타
torlauncher.bootstrapWarning.resourcelimit=리소스 부족
torlauncher.bootstrapWarning.identity=계정 불일치
@@ -89,6 +89,6 @@ torlauncher.bootstrapWarning.noroute=호스트로의 연결 경로가 없음
torlauncher.bootstrapWarning.ioerror=읽기 / 쓰기 오류
torlauncher.bootstrapWarning.pt_missing=플러그가 가능한 전송을 찾을 수 없습니다
-torlauncher.nsresult.NS_ERROR_NET_RESET=The connection to the server was lost.
-torlauncher.nsresult.NS_ERROR_CONNECTION_REFUSED=Could not connect to the server.
-torlauncher.nsresult.NS_ERROR_PROXY_CONNECTION_REFUSED=Could not connect to the proxy.
+torlauncher.nsresult.NS_ERROR_NET_RESET=서버와의 연결이 끊어졌습니다.
+torlauncher.nsresult.NS_ERROR_CONNECTION_REFUSED=서버와 연결할 수 없습니다.
+torlauncher.nsresult.NS_ERROR_PROXY_CONNECTION_REFUSED=프록시와 연결할 수 없습니다.
diff --git a/src/chrome/locale/oc/network-settings.dtd b/src/chrome/locale/oc/network-settings.dtd
deleted file mode 100644
index c6c5687..0000000
--- a/src/chrome/locale/oc/network-settings.dtd
+++ /dev/null
@@ -1,62 +0,0 @@
-<!ENTITY torsettings.dialog.title "Tor Network Settings">
-<!ENTITY torsettings.wizard.title.default "Connect to Tor">
-<!ENTITY torsettings.wizard.title.configure "Tor Network Settings">
-<!ENTITY torsettings.wizard.title.connecting "Establishing a Connection">
-
-<!-- For locale picker: -->
-<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
-<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
-
-<!-- For "first run" wizard: -->
-
-<!ENTITY torSettings.connectPrompt "Click “Connect” to connect to Tor.">
-<!ENTITY torSettings.configurePrompt "Click “Configure” to adjust network settings if you are in a country that censors Tor (such as Egypt, China, Turkey) or if you are connecting from a private network that requires a proxy.">
-<!ENTITY torSettings.configure "Configure">
-<!ENTITY torSettings.connect "Connect">
-
-<!-- Other: -->
-
-<!ENTITY torsettings.startingTor "Waiting for Tor to start…">
-<!ENTITY torsettings.restartTor "Restart Tor">
-<!ENTITY torsettings.reconfigTor "Reconfigure">
-
-<!ENTITY torsettings.discardSettings.prompt "You have configured Tor bridges or you have entered local proxy settings.  To make a direct connection to the Tor network, these settings must be removed.">
-<!ENTITY torsettings.discardSettings.proceed "Remove Settings and Connect">
-
-<!ENTITY torsettings.optional "Optional">
-
-<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
-<!ENTITY torsettings.useProxy.type "Proxy Type:">
-<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
-<!ENTITY torsettings.useProxy.address "Address:">
-<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
-<!ENTITY torsettings.useProxy.port "Port:">
-<!ENTITY torsettings.useProxy.username "Username:">
-<!ENTITY torsettings.useProxy.password "Password:">
-<!ENTITY torsettings.useProxy.type.socks4 "SOCKS 4">
-<!ENTITY torsettings.useProxy.type.socks5 "SOCKS 5">
-<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
-<!ENTITY torsettings.firewall.checkbox "This computer goes through a firewall that only allows connections to certain ports">
-<!ENTITY torsettings.firewall.allowedPorts "Allowed Ports:">
-<!ENTITY torsettings.useBridges.checkbox "Tor is censored in my country">
-<!ENTITY torsettings.useBridges.default "Select a built-in bridge">
-<!ENTITY torsettings.useBridges.default.placeholder "select a bridge">
-<!ENTITY torsettings.useBridges.bridgeDB "Request a bridge from torproject.org">
-<!ENTITY torsettings.useBridges.captchaSolution.placeholder "Enter the characters from the image">
-<!ENTITY torsettings.useBridges.reloadCaptcha.tooltip "Get a new challenge">
-<!ENTITY torsettings.useBridges.captchaSubmit "Submit">
-<!ENTITY torsettings.useBridges.custom "Provide a bridge I know">
-<!ENTITY torsettings.useBridges.label "Enter bridge information from a trusted source.">
-<!ENTITY torsettings.useBridges.placeholder "type address:port (one per line)">
-
-<!ENTITY torsettings.copyLog "Copy Tor Log To Clipboard">
-
-<!ENTITY torsettings.proxyHelpTitle "Proxy Help">
-<!ENTITY torsettings.proxyHelp1 "A local proxy might be needed when connecting through a company, school, or university network. If you are not sure whether a proxy is needed, look at the Internet settings in another browser or check your system's network settings.">
-
-<!ENTITY torsettings.bridgeHelpTitle "Bridge Relay Help">
-<!ENTITY torsettings.bridgeHelp1 "Bridges are unlisted relays that make it more difficult to block connections to the Tor Network.  Each type of bridge uses a different method to avoid censorship.  The obfs ones make your traffic look like random noise, and the meek ones make your traffic look like it's connecting to that service instead of Tor.">
-<!ENTITY torsettings.bridgeHelp2 "Because of how certain countries try to block Tor, certain bridges work in certain countries but not others.  If you are unsure about which bridges work in your country, visit torproject.org/about/contact.html#support">
-
-<!-- Progress -->
-<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
diff --git a/src/chrome/locale/oc/torlauncher.properties b/src/chrome/locale/oc/torlauncher.properties
deleted file mode 100644
index ca9774b..0000000
--- a/src/chrome/locale/oc/torlauncher.properties
+++ /dev/null
@@ -1,94 +0,0 @@
-### Copyright (c) 2016, The Tor Project, Inc.
-### See LICENSE for licensing information.
-
-torlauncher.error_title=Tor Launcher
-
-torlauncher.tor_exited_during_startup=Tor exited during startup. This might be due to an error in your torrc file, a bug in Tor or another program on your system, or faulty hardware. Until you fix the underlying problem and restart Tor, Tor Browser will not start.
-torlauncher.tor_exited=Tor unexpectedly exited. This might be due to a bug in Tor itself, another program on your system, or faulty hardware. Until you restart Tor, the Tor Browser will not able to reach any websites. If the problem persists, please send a copy of your Tor Log to the support team.
-torlauncher.tor_exited2=Restarting Tor will not close your browser tabs.
-torlauncher.tor_controlconn_failed=Could not connect to Tor control port.
-torlauncher.tor_failed_to_start=Tor failed to start.
-torlauncher.tor_control_failed=Failed to take control of Tor.
-torlauncher.tor_bootstrap_failed=Tor failed to establish a Tor network connection.
-torlauncher.tor_bootstrap_failed_details=%1$S failed (%2$S).
-
-torlauncher.unable_to_start_tor=Unable to start Tor.\n\n%S
-torlauncher.tor_missing=The Tor executable is missing.
-torlauncher.torrc_missing=The torrc file is missing and could not be created.
-torlauncher.datadir_missing=The Tor data directory does not exist and could not be created.
-torlauncher.password_hash_missing=Failed to get hashed password.
-
-torlauncher.failed_to_get_settings=Unable to retrieve Tor settings.\n\n%S
-torlauncher.failed_to_save_settings=Unable to save Tor settings.\n\n%S
-torlauncher.ensure_tor_is_running=Please ensure that Tor is running.
-
-torlauncher.error_proxy_addr_missing=You must specify both an IP address or hostname and a port number to configure Tor to use a proxy to access the Internet.
-torlauncher.error_proxy_type_missing=You must select the proxy type.
-torlauncher.error_bridges_missing=You must specify one or more bridges.
-torlauncher.error_default_bridges_type_missing=You must select a transport type for the provided bridges.
-torlauncher.error_bridgedb_bridges_missing=Please request a bridge.
-torlauncher.error_bridge_bad_default_type=No provided bridges that have the transport type %S are available. Please adjust your settings.
-
-torlauncher.bridge_suffix.meek-amazon=(works in China)
-torlauncher.bridge_suffix.meek-azure=(works in China)
-
-torlauncher.request_a_bridge=Request a Bridge…
-torlauncher.request_a_new_bridge=Request a New Bridge…
-torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait.
-torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge.
-torlauncher.bad_captcha_solution=The solution is not correct. Please try again.
-torlauncher.unable_to_get_bridge=Unable to obtain a bridge from BridgeDB.\n\n%S
-torlauncher.no_meek=This browser is not configured for meek, which is needed to obtain bridges.
-torlauncher.no_bridges_available=No bridges are available at this time. Sorry.
-
-torlauncher.connect=Connect
-torlauncher.restart_tor=Restart Tor
-torlauncher.quit=Quit
-torlauncher.quit_win=Exit
-torlauncher.done=Done
-
-torlauncher.forAssistance=For assistance, contact %S
-torlauncher.forAssistance2=For assistance, visit %S
-
-torlauncher.copiedNLogMessages=Copy complete. %S Tor log messages are ready to be pasted into a text editor or an email message.
-
-torlauncher.bootstrapStatus.starting=Starting
-torlauncher.bootstrapStatus.conn_pt=Connecting to bridge
-torlauncher.bootstrapStatus.conn_done_pt=Connected to bridge
-torlauncher.bootstrapStatus.conn_proxy=Connecting to proxy
-torlauncher.bootstrapStatus.conn_done_proxy=Connected to proxy
-torlauncher.bootstrapStatus.conn=Connecting to a Tor relay
-torlauncher.bootstrapStatus.conn_done=Connected to a Tor relay
-torlauncher.bootstrapStatus.handshake=Negotiating with a Tor relay
-torlauncher.bootstrapStatus.handshake_done=Finished negotiating with a Tor relay
-torlauncher.bootstrapStatus.onehop_create=Establishing an encrypted directory connection
-torlauncher.bootstrapStatus.requesting_status=Retrieving network status
-torlauncher.bootstrapStatus.loading_status=Loading network status
-torlauncher.bootstrapStatus.loading_keys=Loading authority certificates
-torlauncher.bootstrapStatus.requesting_descriptors=Requesting relay information
-torlauncher.bootstrapStatus.loading_descriptors=Loading relay information
-torlauncher.bootstrapStatus.enough_dirinfo=Finished loading relay information
-torlauncher.bootstrapStatus.ap_conn_pt=Building circuits: Connecting to bridge
-torlauncher.bootstrapStatus.ap_conn_done_pt=Building circuits: Connected to bridge
-torlauncher.bootstrapStatus.ap_conn_proxy=Building circuits: Connecting to proxy
-torlauncher.bootstrapStatus.ap_conn_done_proxy=Building circuits: Connected to proxy
-torlauncher.bootstrapStatus.ap_conn=Building circuits: Connecting to a Tor relay
-torlauncher.bootstrapStatus.ap_conn_done=Building circuits: Connected to a Tor relay
-torlauncher.bootstrapStatus.ap_handshake=Building circuits: Negotiating with a Tor relay
-torlauncher.bootstrapStatus.ap_handshake_done=Building circuits: Finished negotiating with a Tor relay
-torlauncher.bootstrapStatus.circuit_create=Building circuits: Establishing a Tor circuit
-torlauncher.bootstrapStatus.done=Connected to the Tor network!
-
-torlauncher.bootstrapWarning.done=done
-torlauncher.bootstrapWarning.connectrefused=connection refused
-torlauncher.bootstrapWarning.misc=miscellaneous
-torlauncher.bootstrapWarning.resourcelimit=insufficient resources
-torlauncher.bootstrapWarning.identity=identity mismatch
-torlauncher.bootstrapWarning.timeout=connection timeout
-torlauncher.bootstrapWarning.noroute=no route to host
-torlauncher.bootstrapWarning.ioerror=read/write error
-torlauncher.bootstrapWarning.pt_missing=missing pluggable transport
-
-torlauncher.nsresult.NS_ERROR_NET_RESET=The connection to the server was lost.
-torlauncher.nsresult.NS_ERROR_CONNECTION_REFUSED=Could not connect to the server.
-torlauncher.nsresult.NS_ERROR_PROXY_CONNECTION_REFUSED=Could not connect to the proxy.
diff --git a/src/chrome/locale/or/network-settings.dtd b/src/chrome/locale/or/network-settings.dtd
deleted file mode 100644
index c6c5687..0000000
--- a/src/chrome/locale/or/network-settings.dtd
+++ /dev/null
@@ -1,62 +0,0 @@
-<!ENTITY torsettings.dialog.title "Tor Network Settings">
-<!ENTITY torsettings.wizard.title.default "Connect to Tor">
-<!ENTITY torsettings.wizard.title.configure "Tor Network Settings">
-<!ENTITY torsettings.wizard.title.connecting "Establishing a Connection">
-
-<!-- For locale picker: -->
-<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
-<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
-
-<!-- For "first run" wizard: -->
-
-<!ENTITY torSettings.connectPrompt "Click “Connect” to connect to Tor.">
-<!ENTITY torSettings.configurePrompt "Click “Configure” to adjust network settings if you are in a country that censors Tor (such as Egypt, China, Turkey) or if you are connecting from a private network that requires a proxy.">
-<!ENTITY torSettings.configure "Configure">
-<!ENTITY torSettings.connect "Connect">
-
-<!-- Other: -->
-
-<!ENTITY torsettings.startingTor "Waiting for Tor to start…">
-<!ENTITY torsettings.restartTor "Restart Tor">
-<!ENTITY torsettings.reconfigTor "Reconfigure">
-
-<!ENTITY torsettings.discardSettings.prompt "You have configured Tor bridges or you have entered local proxy settings.  To make a direct connection to the Tor network, these settings must be removed.">
-<!ENTITY torsettings.discardSettings.proceed "Remove Settings and Connect">
-
-<!ENTITY torsettings.optional "Optional">
-
-<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
-<!ENTITY torsettings.useProxy.type "Proxy Type:">
-<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
-<!ENTITY torsettings.useProxy.address "Address:">
-<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
-<!ENTITY torsettings.useProxy.port "Port:">
-<!ENTITY torsettings.useProxy.username "Username:">
-<!ENTITY torsettings.useProxy.password "Password:">
-<!ENTITY torsettings.useProxy.type.socks4 "SOCKS 4">
-<!ENTITY torsettings.useProxy.type.socks5 "SOCKS 5">
-<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
-<!ENTITY torsettings.firewall.checkbox "This computer goes through a firewall that only allows connections to certain ports">
-<!ENTITY torsettings.firewall.allowedPorts "Allowed Ports:">
-<!ENTITY torsettings.useBridges.checkbox "Tor is censored in my country">
-<!ENTITY torsettings.useBridges.default "Select a built-in bridge">
-<!ENTITY torsettings.useBridges.default.placeholder "select a bridge">
-<!ENTITY torsettings.useBridges.bridgeDB "Request a bridge from torproject.org">
-<!ENTITY torsettings.useBridges.captchaSolution.placeholder "Enter the characters from the image">
-<!ENTITY torsettings.useBridges.reloadCaptcha.tooltip "Get a new challenge">
-<!ENTITY torsettings.useBridges.captchaSubmit "Submit">
-<!ENTITY torsettings.useBridges.custom "Provide a bridge I know">
-<!ENTITY torsettings.useBridges.label "Enter bridge information from a trusted source.">
-<!ENTITY torsettings.useBridges.placeholder "type address:port (one per line)">
-
-<!ENTITY torsettings.copyLog "Copy Tor Log To Clipboard">
-
-<!ENTITY torsettings.proxyHelpTitle "Proxy Help">
-<!ENTITY torsettings.proxyHelp1 "A local proxy might be needed when connecting through a company, school, or university network. If you are not sure whether a proxy is needed, look at the Internet settings in another browser or check your system's network settings.">
-
-<!ENTITY torsettings.bridgeHelpTitle "Bridge Relay Help">
-<!ENTITY torsettings.bridgeHelp1 "Bridges are unlisted relays that make it more difficult to block connections to the Tor Network.  Each type of bridge uses a different method to avoid censorship.  The obfs ones make your traffic look like random noise, and the meek ones make your traffic look like it's connecting to that service instead of Tor.">
-<!ENTITY torsettings.bridgeHelp2 "Because of how certain countries try to block Tor, certain bridges work in certain countries but not others.  If you are unsure about which bridges work in your country, visit torproject.org/about/contact.html#support">
-
-<!-- Progress -->
-<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
diff --git a/src/chrome/locale/or/torlauncher.properties b/src/chrome/locale/or/torlauncher.properties
deleted file mode 100644
index ca9774b..0000000
--- a/src/chrome/locale/or/torlauncher.properties
+++ /dev/null
@@ -1,94 +0,0 @@
-### Copyright (c) 2016, The Tor Project, Inc.
-### See LICENSE for licensing information.
-
-torlauncher.error_title=Tor Launcher
-
-torlauncher.tor_exited_during_startup=Tor exited during startup. This might be due to an error in your torrc file, a bug in Tor or another program on your system, or faulty hardware. Until you fix the underlying problem and restart Tor, Tor Browser will not start.
-torlauncher.tor_exited=Tor unexpectedly exited. This might be due to a bug in Tor itself, another program on your system, or faulty hardware. Until you restart Tor, the Tor Browser will not able to reach any websites. If the problem persists, please send a copy of your Tor Log to the support team.
-torlauncher.tor_exited2=Restarting Tor will not close your browser tabs.
-torlauncher.tor_controlconn_failed=Could not connect to Tor control port.
-torlauncher.tor_failed_to_start=Tor failed to start.
-torlauncher.tor_control_failed=Failed to take control of Tor.
-torlauncher.tor_bootstrap_failed=Tor failed to establish a Tor network connection.
-torlauncher.tor_bootstrap_failed_details=%1$S failed (%2$S).
-
-torlauncher.unable_to_start_tor=Unable to start Tor.\n\n%S
-torlauncher.tor_missing=The Tor executable is missing.
-torlauncher.torrc_missing=The torrc file is missing and could not be created.
-torlauncher.datadir_missing=The Tor data directory does not exist and could not be created.
-torlauncher.password_hash_missing=Failed to get hashed password.
-
-torlauncher.failed_to_get_settings=Unable to retrieve Tor settings.\n\n%S
-torlauncher.failed_to_save_settings=Unable to save Tor settings.\n\n%S
-torlauncher.ensure_tor_is_running=Please ensure that Tor is running.
-
-torlauncher.error_proxy_addr_missing=You must specify both an IP address or hostname and a port number to configure Tor to use a proxy to access the Internet.
-torlauncher.error_proxy_type_missing=You must select the proxy type.
-torlauncher.error_bridges_missing=You must specify one or more bridges.
-torlauncher.error_default_bridges_type_missing=You must select a transport type for the provided bridges.
-torlauncher.error_bridgedb_bridges_missing=Please request a bridge.
-torlauncher.error_bridge_bad_default_type=No provided bridges that have the transport type %S are available. Please adjust your settings.
-
-torlauncher.bridge_suffix.meek-amazon=(works in China)
-torlauncher.bridge_suffix.meek-azure=(works in China)
-
-torlauncher.request_a_bridge=Request a Bridge…
-torlauncher.request_a_new_bridge=Request a New Bridge…
-torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait.
-torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge.
-torlauncher.bad_captcha_solution=The solution is not correct. Please try again.
-torlauncher.unable_to_get_bridge=Unable to obtain a bridge from BridgeDB.\n\n%S
-torlauncher.no_meek=This browser is not configured for meek, which is needed to obtain bridges.
-torlauncher.no_bridges_available=No bridges are available at this time. Sorry.
-
-torlauncher.connect=Connect
-torlauncher.restart_tor=Restart Tor
-torlauncher.quit=Quit
-torlauncher.quit_win=Exit
-torlauncher.done=Done
-
-torlauncher.forAssistance=For assistance, contact %S
-torlauncher.forAssistance2=For assistance, visit %S
-
-torlauncher.copiedNLogMessages=Copy complete. %S Tor log messages are ready to be pasted into a text editor or an email message.
-
-torlauncher.bootstrapStatus.starting=Starting
-torlauncher.bootstrapStatus.conn_pt=Connecting to bridge
-torlauncher.bootstrapStatus.conn_done_pt=Connected to bridge
-torlauncher.bootstrapStatus.conn_proxy=Connecting to proxy
-torlauncher.bootstrapStatus.conn_done_proxy=Connected to proxy
-torlauncher.bootstrapStatus.conn=Connecting to a Tor relay
-torlauncher.bootstrapStatus.conn_done=Connected to a Tor relay
-torlauncher.bootstrapStatus.handshake=Negotiating with a Tor relay
-torlauncher.bootstrapStatus.handshake_done=Finished negotiating with a Tor relay
-torlauncher.bootstrapStatus.onehop_create=Establishing an encrypted directory connection
-torlauncher.bootstrapStatus.requesting_status=Retrieving network status
-torlauncher.bootstrapStatus.loading_status=Loading network status
-torlauncher.bootstrapStatus.loading_keys=Loading authority certificates
-torlauncher.bootstrapStatus.requesting_descriptors=Requesting relay information
-torlauncher.bootstrapStatus.loading_descriptors=Loading relay information
-torlauncher.bootstrapStatus.enough_dirinfo=Finished loading relay information
-torlauncher.bootstrapStatus.ap_conn_pt=Building circuits: Connecting to bridge
-torlauncher.bootstrapStatus.ap_conn_done_pt=Building circuits: Connected to bridge
-torlauncher.bootstrapStatus.ap_conn_proxy=Building circuits: Connecting to proxy
-torlauncher.bootstrapStatus.ap_conn_done_proxy=Building circuits: Connected to proxy
-torlauncher.bootstrapStatus.ap_conn=Building circuits: Connecting to a Tor relay
-torlauncher.bootstrapStatus.ap_conn_done=Building circuits: Connected to a Tor relay
-torlauncher.bootstrapStatus.ap_handshake=Building circuits: Negotiating with a Tor relay
-torlauncher.bootstrapStatus.ap_handshake_done=Building circuits: Finished negotiating with a Tor relay
-torlauncher.bootstrapStatus.circuit_create=Building circuits: Establishing a Tor circuit
-torlauncher.bootstrapStatus.done=Connected to the Tor network!
-
-torlauncher.bootstrapWarning.done=done
-torlauncher.bootstrapWarning.connectrefused=connection refused
-torlauncher.bootstrapWarning.misc=miscellaneous
-torlauncher.bootstrapWarning.resourcelimit=insufficient resources
-torlauncher.bootstrapWarning.identity=identity mismatch
-torlauncher.bootstrapWarning.timeout=connection timeout
-torlauncher.bootstrapWarning.noroute=no route to host
-torlauncher.bootstrapWarning.ioerror=read/write error
-torlauncher.bootstrapWarning.pt_missing=missing pluggable transport
-
-torlauncher.nsresult.NS_ERROR_NET_RESET=The connection to the server was lost.
-torlauncher.nsresult.NS_ERROR_CONNECTION_REFUSED=Could not connect to the server.
-torlauncher.nsresult.NS_ERROR_PROXY_CONNECTION_REFUSED=Could not connect to the proxy.
diff --git a/src/chrome/locale/pt-PT/network-settings.dtd b/src/chrome/locale/pt-PT/network-settings.dtd
new file mode 100644
index 0000000..f62d4c8
--- /dev/null
+++ b/src/chrome/locale/pt-PT/network-settings.dtd
@@ -0,0 +1,62 @@
+<!ENTITY torsettings.dialog.title "Definições da Rede Tor">
+<!ENTITY torsettings.wizard.title.default "Ligar ao Tor">
+<!ENTITY torsettings.wizard.title.configure "Definições da Rede Tor">
+<!ENTITY torsettings.wizard.title.connecting "Estabelecer uma Ligação">
+
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Idioma do Tor Browser">
+<!ENTITY torlauncher.localePicker.prompt "Por favor, selecione um idioma.">
+
+<!-- For "first run" wizard: -->
+
+<!ENTITY torSettings.connectPrompt "Clique em "Ligar" para ligar ao Tor.">
+<!ENTITY torSettings.configurePrompt "Clique em “Configurar” para ajustar as definições de rede se estiver num país que censura o Tor (tal como a China, o Egito, a Turquia) ou se estiver a ligar a partir de uma rede privada que requer um proxy.">
+<!ENTITY torSettings.configure "Configurar">
+<!ENTITY torSettings.connect "Ligar">
+
+<!-- Other: -->
+
+<!ENTITY torsettings.startingTor "A aguardar que o Tor inicie...">
+<!ENTITY torsettings.restartTor "Reiniciar o Tor">
+<!ENTITY torsettings.reconfigTor "Reconfigurar">
+
+<!ENTITY torsettings.discardSettings.prompt "Configurou as pontes do Tor ou inseriu as definições do proxy local.  Para efetuar uma ligação direta à rede Tor, estas definições devem ser removidas.">
+<!ENTITY torsettings.discardSettings.proceed "Remover Definições e Ligar">
+
+<!ENTITY torsettings.optional "Opcional">
+
+<!ENTITY torsettings.useProxy.checkbox "Eu utilizo um proxy para ligar à Internet">
+<!ENTITY torsettings.useProxy.type "Tipo de proxy:">
+<!ENTITY torsettings.useProxy.type.placeholder "selecionar um tipo de proxy">
+<!ENTITY torsettings.useProxy.address "Endereço:">
+<!ENTITY torsettings.useProxy.address.placeholder "Endereço de IP ou nome do hospedeiro">
+<!ENTITY torsettings.useProxy.port "Porta:">
+<!ENTITY torsettings.useProxy.username "Nome do utilizador:">
+<!ENTITY torsettings.useProxy.password "Palavra-passe:">
+<!ENTITY torsettings.useProxy.type.socks4 "SOCKS 4">
+<!ENTITY torsettings.useProxy.type.socks5 "SOCKS 5">
+<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
+<!ENTITY torsettings.firewall.checkbox "Este computador liga através de uma firewall que só permite ligações para determinadas portas">
+<!ENTITY torsettings.firewall.allowedPorts "Portas permitidas:">
+<!ENTITY torsettings.useBridges.checkbox "O Tor é censurado no meu país">
+<!ENTITY torsettings.useBridges.default "Selecionar uma ponte integrada">
+<!ENTITY torsettings.useBridges.default.placeholder "selecionar uma ponte">
+<!ENTITY torsettings.useBridges.bridgeDB "Solicitar uma ponte do torproject.org">
+<!ENTITY torsettings.useBridges.captchaSolution.placeholder "Insira os carateres da imagem">
+<!ENTITY torsettings.useBridges.reloadCaptcha.tooltip "Obter um novo desafio">
+<!ENTITY torsettings.useBridges.captchaSubmit "Submeter">
+<!ENTITY torsettings.useBridges.custom "Fornecer uma ponte que eu conheça">
+<!ENTITY torsettings.useBridges.label "Inserir a informação da ponte de uma fonte confiável.">
+<!ENTITY torsettings.useBridges.placeholder "digite address:port (uma por linha)">
+
+<!ENTITY torsettings.copyLog "Copiar o Registo do Tor para a Área de Transferência">
+
+<!ENTITY torsettings.proxyHelpTitle "Ajuda de Proxy">
+<!ENTITY torsettings.proxyHelp1 "Poderá ser necessário um proxy local ao ligar-se através de uma empresa, escola ou universidade. Se não tiver certeza se é necessário um proxy, verifique as definições da Internet noutro navegador ou verifique as definições da rede do seu sistema.">
+
+<!ENTITY torsettings.bridgeHelpTitle "Ajuda da Retransmissão de Ponte">
+<!ENTITY torsettings.bridgeHelp1 "As pontes são retransmissões não listadas que dificultam o bloqueio de ligações à Rede Tor.  Cada tipo de ponte utiliza um método diferente para evitar a censura.  Os "obfs" fazem com que o seu tráfego pareça um ruído aleatório, e os pacíficos fazem com que o seu tráfego pareça que está a ligar-se a esses serviço, em vez de ao Tor.">
+<!ENTITY torsettings.bridgeHelp2 "Por causa de como certos países tentam bloquear o Tor, certas pontes funcionam em certos países, mas não em outros. Se não tiver a certeza sobre quais as pontes que funcionam no seu país, visite torproject.org/about/contact.html#support.">
+
+<!-- Progress -->
+<!ENTITY torprogress.pleaseWait "Por favor, aguarde, enquanto nós estabelecemos uma ligação à rede Tor.  Isto pode demorar alguns minutos.">
diff --git a/src/chrome/locale/pt-PT/torlauncher.properties b/src/chrome/locale/pt-PT/torlauncher.properties
new file mode 100644
index 0000000..d010d6c
--- /dev/null
+++ b/src/chrome/locale/pt-PT/torlauncher.properties
@@ -0,0 +1,94 @@
+### Copyright (c) 2016, The Tor Project, Inc.
+### See LICENSE for licensing information.
+
+torlauncher.error_title=Tor Launcher
+
+torlauncher.tor_exited_during_startup=O Tor fechou-se durante o arranque. Isto pode ter acontecido devido a erro no seu ficheiro torrc, um erro no Tor ou outro programa no seu sistema, ou falha de hardware. Até que corrija o problema em causa reinicie o Tor, o Tor Browser não irá iniciar.
+torlauncher.tor_exited=O Tor fechou.se inesperadamente. Isto pode ter acontecido devido a um erro no Tor, outro programa no seu sistema, ou falha de hardware. Até que reinicie o Tor, o Tor Browser não irá poder aceder a quaisquer sites da Web. Se o problema persistir, por favor, envie uma cópia do 'Registo de Eventos' do seu Tor para a equipa de apoio.
+torlauncher.tor_exited2=Ao reiniciar o Tor não irá fechar os separadores do seu navegador.
+torlauncher.tor_controlconn_failed=Não foi possível ligar à porta de controlo do Tor.
+torlauncher.tor_failed_to_start=Falhou a inicialização do Tor.
+torlauncher.tor_control_failed=Não foi possível obter o controlo do Tor.
+torlauncher.tor_bootstrap_failed=O Tor não conseguiu estabelecer uma ligação à rede Tor.
+torlauncher.tor_bootstrap_failed_details=%1$S falhou (%2$S).
+
+torlauncher.unable_to_start_tor=Não é possível iniciar o Tor.\n\n %S
+torlauncher.tor_missing=O executável do Tor está em falta.
+torlauncher.torrc_missing=O ficheiro torrc está em falta e não foi possível criá-lo.
+torlauncher.datadir_missing=O diretório de dados do Tor não existe e não foi possível criá-lo.
+torlauncher.password_hash_missing=Não foi possível obter a palavra-passe "hashed".
+
+torlauncher.failed_to_get_settings=Não é possível obter as configurações do Tor\n\n %S
+torlauncher.failed_to_save_settings=Não é possível guardar as configurações do Tor\n\n %S
+torlauncher.ensure_tor_is_running=Por favor, certifique-se que o Tor está em execução.
+
+torlauncher.error_proxy_addr_missing=Deve especificar ambos, um endereço de IP ou o nome de hospedeiro e um número de porta para configurar o Tor, para utilizar um proxy para aceder à Internet.
+torlauncher.error_proxy_type_missing=Deve selecionar o tipo de proxy.
+torlauncher.error_bridges_missing=Deve especificar uma ou mais pontes.
+torlauncher.error_default_bridges_type_missing=Deve selecionar o tipo de transporte para as pontes fornecidas.
+torlauncher.error_bridgedb_bridges_missing=Por favor, solicite uma ponte.
+torlauncher.error_bridge_bad_default_type=Não estão disponíveis as pontes fornecidas que têm o tipo de transporte %S. Por favor, ajuste as suas configurações.
+
+torlauncher.bridge_suffix.meek-amazon=(funciona na China)
+torlauncher.bridge_suffix.meek-azure=(funciona na China)
+
+torlauncher.request_a_bridge=Solicitar uma Ponte...
+torlauncher.request_a_new_bridge=Solicitar uma Nova Ponte...
+torlauncher.contacting_bridgedb=A contactar a BridgeDB. Por favor, aguarde.
+torlauncher.captcha_prompt=Resolva o CAPTCHA para solicitar uma ponte.
+torlauncher.bad_captcha_solution=A solução não está correta. Por favor, tente novamente.
+torlauncher.unable_to_get_bridge=Não é possível obter uma ponte de BridgeDB.\n\n%S
+torlauncher.no_meek=Este navegador não está configurado para "meek", que é necessário para obter as pontes.
+torlauncher.no_bridges_available=De momento, não estão disponíveis pontes. Desculpe.
+
+torlauncher.connect=Ligar
+torlauncher.restart_tor=Reiniciar o Tor
+torlauncher.quit=Sair
+torlauncher.quit_win=Sair
+torlauncher.done=Concluído
+
+torlauncher.forAssistance=Para assistência, contacte %S
+torlauncher.forAssistance2=Para assistência, visite %S
+
+torlauncher.copiedNLogMessages=Cópia completa. Estão prontas %S mensagens do registo de eventos do Tor para serem coladas num editor de texto ou numa mensagem de correio eletrónico.
+
+torlauncher.bootstrapStatus.starting=A iniciar
+torlauncher.bootstrapStatus.conn_pt=A conectar à ponte
+torlauncher.bootstrapStatus.conn_done_pt=Conectado à ponte
+torlauncher.bootstrapStatus.conn_proxy=A conectar ao proxy
+torlauncher.bootstrapStatus.conn_done_proxy=Conectado ao proxy
+torlauncher.bootstrapStatus.conn=A conectar a um retransmissor Tor
+torlauncher.bootstrapStatus.conn_done=Conectado a um retransmissor Tor
+torlauncher.bootstrapStatus.handshake=A negociar com um retransmissor Tor
+torlauncher.bootstrapStatus.handshake_done=Terminada a negociação com um retransmissor Tor
+torlauncher.bootstrapStatus.onehop_create=A estabelecer uma ligação de diretório encriptada
+torlauncher.bootstrapStatus.requesting_status=A obter o estado da rede
+torlauncher.bootstrapStatus.loading_status=A carregar o estado da rede
+torlauncher.bootstrapStatus.loading_keys=A carregar os certificados de autoridade
+torlauncher.bootstrapStatus.requesting_descriptors=A solicitar a informação do retransmissor
+torlauncher.bootstrapStatus.loading_descriptors=A carregar a informação do retransmissor
+torlauncher.bootstrapStatus.enough_dirinfo=Terminou o carregamento da informação do retransmissor
+torlauncher.bootstrapStatus.ap_conn_pt=Construir circuitos: a conectar a uma ponte
+torlauncher.bootstrapStatus.ap_conn_done_pt=Construir circuitos: conectado a uma ponte
+torlauncher.bootstrapStatus.ap_conn_proxy=Construir circuitos: a conectar a um proxy
+torlauncher.bootstrapStatus.ap_conn_done_proxy=Construir circuitos: conectado a um proxy
+torlauncher.bootstrapStatus.ap_conn=Construir circuitos: a conectar a um retransmissor Tor
+torlauncher.bootstrapStatus.ap_conn_done=Construir circuitos: conectado a um retransmissor Tor
+torlauncher.bootstrapStatus.ap_handshake=Construir circuitos: a negociar com um retransmissor Tor
+torlauncher.bootstrapStatus.ap_handshake_done=Construir circuitos: terminada a negociação com um retransmissor Tor
+torlauncher.bootstrapStatus.circuit_create=Construir circuitos: a estabelecer um circuito Tor
+torlauncher.bootstrapStatus.done=Ligado à rede Tor
+
+torlauncher.bootstrapWarning.done=finalizado
+torlauncher.bootstrapWarning.connectrefused=ligação recusada
+torlauncher.bootstrapWarning.misc=diversos
+torlauncher.bootstrapWarning.resourcelimit=recursos insuficientes
+torlauncher.bootstrapWarning.identity=identidade não correspondente
+torlauncher.bootstrapWarning.timeout=o tempo de ligação expirou
+torlauncher.bootstrapWarning.noroute=sem rota para o hospedeiro
+torlauncher.bootstrapWarning.ioerror=rrro de leitura/gravação
+torlauncher.bootstrapWarning.pt_missing=falta o transporte de ligação
+
+torlauncher.nsresult.NS_ERROR_NET_RESET=A ligação para o servidor foi perdida.
+torlauncher.nsresult.NS_ERROR_CONNECTION_REFUSED=Não foi possível ligar ao servidor.
+torlauncher.nsresult.NS_ERROR_PROXY_CONNECTION_REFUSED=Não foi possível ligar ao proxy.
diff --git a/src/chrome/locale/son/network-settings.dtd b/src/chrome/locale/son/network-settings.dtd
deleted file mode 100644
index c6c5687..0000000
--- a/src/chrome/locale/son/network-settings.dtd
+++ /dev/null
@@ -1,62 +0,0 @@
-<!ENTITY torsettings.dialog.title "Tor Network Settings">
-<!ENTITY torsettings.wizard.title.default "Connect to Tor">
-<!ENTITY torsettings.wizard.title.configure "Tor Network Settings">
-<!ENTITY torsettings.wizard.title.connecting "Establishing a Connection">
-
-<!-- For locale picker: -->
-<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
-<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
-
-<!-- For "first run" wizard: -->
-
-<!ENTITY torSettings.connectPrompt "Click “Connect” to connect to Tor.">
-<!ENTITY torSettings.configurePrompt "Click “Configure” to adjust network settings if you are in a country that censors Tor (such as Egypt, China, Turkey) or if you are connecting from a private network that requires a proxy.">
-<!ENTITY torSettings.configure "Configure">
-<!ENTITY torSettings.connect "Connect">
-
-<!-- Other: -->
-
-<!ENTITY torsettings.startingTor "Waiting for Tor to start…">
-<!ENTITY torsettings.restartTor "Restart Tor">
-<!ENTITY torsettings.reconfigTor "Reconfigure">
-
-<!ENTITY torsettings.discardSettings.prompt "You have configured Tor bridges or you have entered local proxy settings.  To make a direct connection to the Tor network, these settings must be removed.">
-<!ENTITY torsettings.discardSettings.proceed "Remove Settings and Connect">
-
-<!ENTITY torsettings.optional "Optional">
-
-<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
-<!ENTITY torsettings.useProxy.type "Proxy Type:">
-<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
-<!ENTITY torsettings.useProxy.address "Address:">
-<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
-<!ENTITY torsettings.useProxy.port "Port:">
-<!ENTITY torsettings.useProxy.username "Username:">
-<!ENTITY torsettings.useProxy.password "Password:">
-<!ENTITY torsettings.useProxy.type.socks4 "SOCKS 4">
-<!ENTITY torsettings.useProxy.type.socks5 "SOCKS 5">
-<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
-<!ENTITY torsettings.firewall.checkbox "This computer goes through a firewall that only allows connections to certain ports">
-<!ENTITY torsettings.firewall.allowedPorts "Allowed Ports:">
-<!ENTITY torsettings.useBridges.checkbox "Tor is censored in my country">
-<!ENTITY torsettings.useBridges.default "Select a built-in bridge">
-<!ENTITY torsettings.useBridges.default.placeholder "select a bridge">
-<!ENTITY torsettings.useBridges.bridgeDB "Request a bridge from torproject.org">
-<!ENTITY torsettings.useBridges.captchaSolution.placeholder "Enter the characters from the image">
-<!ENTITY torsettings.useBridges.reloadCaptcha.tooltip "Get a new challenge">
-<!ENTITY torsettings.useBridges.captchaSubmit "Submit">
-<!ENTITY torsettings.useBridges.custom "Provide a bridge I know">
-<!ENTITY torsettings.useBridges.label "Enter bridge information from a trusted source.">
-<!ENTITY torsettings.useBridges.placeholder "type address:port (one per line)">
-
-<!ENTITY torsettings.copyLog "Copy Tor Log To Clipboard">
-
-<!ENTITY torsettings.proxyHelpTitle "Proxy Help">
-<!ENTITY torsettings.proxyHelp1 "A local proxy might be needed when connecting through a company, school, or university network. If you are not sure whether a proxy is needed, look at the Internet settings in another browser or check your system's network settings.">
-
-<!ENTITY torsettings.bridgeHelpTitle "Bridge Relay Help">
-<!ENTITY torsettings.bridgeHelp1 "Bridges are unlisted relays that make it more difficult to block connections to the Tor Network.  Each type of bridge uses a different method to avoid censorship.  The obfs ones make your traffic look like random noise, and the meek ones make your traffic look like it's connecting to that service instead of Tor.">
-<!ENTITY torsettings.bridgeHelp2 "Because of how certain countries try to block Tor, certain bridges work in certain countries but not others.  If you are unsure about which bridges work in your country, visit torproject.org/about/contact.html#support">
-
-<!-- Progress -->
-<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
diff --git a/src/chrome/locale/son/torlauncher.properties b/src/chrome/locale/son/torlauncher.properties
deleted file mode 100644
index ca9774b..0000000
--- a/src/chrome/locale/son/torlauncher.properties
+++ /dev/null
@@ -1,94 +0,0 @@
-### Copyright (c) 2016, The Tor Project, Inc.
-### See LICENSE for licensing information.
-
-torlauncher.error_title=Tor Launcher
-
-torlauncher.tor_exited_during_startup=Tor exited during startup. This might be due to an error in your torrc file, a bug in Tor or another program on your system, or faulty hardware. Until you fix the underlying problem and restart Tor, Tor Browser will not start.
-torlauncher.tor_exited=Tor unexpectedly exited. This might be due to a bug in Tor itself, another program on your system, or faulty hardware. Until you restart Tor, the Tor Browser will not able to reach any websites. If the problem persists, please send a copy of your Tor Log to the support team.
-torlauncher.tor_exited2=Restarting Tor will not close your browser tabs.
-torlauncher.tor_controlconn_failed=Could not connect to Tor control port.
-torlauncher.tor_failed_to_start=Tor failed to start.
-torlauncher.tor_control_failed=Failed to take control of Tor.
-torlauncher.tor_bootstrap_failed=Tor failed to establish a Tor network connection.
-torlauncher.tor_bootstrap_failed_details=%1$S failed (%2$S).
-
-torlauncher.unable_to_start_tor=Unable to start Tor.\n\n%S
-torlauncher.tor_missing=The Tor executable is missing.
-torlauncher.torrc_missing=The torrc file is missing and could not be created.
-torlauncher.datadir_missing=The Tor data directory does not exist and could not be created.
-torlauncher.password_hash_missing=Failed to get hashed password.
-
-torlauncher.failed_to_get_settings=Unable to retrieve Tor settings.\n\n%S
-torlauncher.failed_to_save_settings=Unable to save Tor settings.\n\n%S
-torlauncher.ensure_tor_is_running=Please ensure that Tor is running.
-
-torlauncher.error_proxy_addr_missing=You must specify both an IP address or hostname and a port number to configure Tor to use a proxy to access the Internet.
-torlauncher.error_proxy_type_missing=You must select the proxy type.
-torlauncher.error_bridges_missing=You must specify one or more bridges.
-torlauncher.error_default_bridges_type_missing=You must select a transport type for the provided bridges.
-torlauncher.error_bridgedb_bridges_missing=Please request a bridge.
-torlauncher.error_bridge_bad_default_type=No provided bridges that have the transport type %S are available. Please adjust your settings.
-
-torlauncher.bridge_suffix.meek-amazon=(works in China)
-torlauncher.bridge_suffix.meek-azure=(works in China)
-
-torlauncher.request_a_bridge=Request a Bridge…
-torlauncher.request_a_new_bridge=Request a New Bridge…
-torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait.
-torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge.
-torlauncher.bad_captcha_solution=The solution is not correct. Please try again.
-torlauncher.unable_to_get_bridge=Unable to obtain a bridge from BridgeDB.\n\n%S
-torlauncher.no_meek=This browser is not configured for meek, which is needed to obtain bridges.
-torlauncher.no_bridges_available=No bridges are available at this time. Sorry.
-
-torlauncher.connect=Connect
-torlauncher.restart_tor=Restart Tor
-torlauncher.quit=Quit
-torlauncher.quit_win=Exit
-torlauncher.done=Done
-
-torlauncher.forAssistance=For assistance, contact %S
-torlauncher.forAssistance2=For assistance, visit %S
-
-torlauncher.copiedNLogMessages=Copy complete. %S Tor log messages are ready to be pasted into a text editor or an email message.
-
-torlauncher.bootstrapStatus.starting=Starting
-torlauncher.bootstrapStatus.conn_pt=Connecting to bridge
-torlauncher.bootstrapStatus.conn_done_pt=Connected to bridge
-torlauncher.bootstrapStatus.conn_proxy=Connecting to proxy
-torlauncher.bootstrapStatus.conn_done_proxy=Connected to proxy
-torlauncher.bootstrapStatus.conn=Connecting to a Tor relay
-torlauncher.bootstrapStatus.conn_done=Connected to a Tor relay
-torlauncher.bootstrapStatus.handshake=Negotiating with a Tor relay
-torlauncher.bootstrapStatus.handshake_done=Finished negotiating with a Tor relay
-torlauncher.bootstrapStatus.onehop_create=Establishing an encrypted directory connection
-torlauncher.bootstrapStatus.requesting_status=Retrieving network status
-torlauncher.bootstrapStatus.loading_status=Loading network status
-torlauncher.bootstrapStatus.loading_keys=Loading authority certificates
-torlauncher.bootstrapStatus.requesting_descriptors=Requesting relay information
-torlauncher.bootstrapStatus.loading_descriptors=Loading relay information
-torlauncher.bootstrapStatus.enough_dirinfo=Finished loading relay information
-torlauncher.bootstrapStatus.ap_conn_pt=Building circuits: Connecting to bridge
-torlauncher.bootstrapStatus.ap_conn_done_pt=Building circuits: Connected to bridge
-torlauncher.bootstrapStatus.ap_conn_proxy=Building circuits: Connecting to proxy
-torlauncher.bootstrapStatus.ap_conn_done_proxy=Building circuits: Connected to proxy
-torlauncher.bootstrapStatus.ap_conn=Building circuits: Connecting to a Tor relay
-torlauncher.bootstrapStatus.ap_conn_done=Building circuits: Connected to a Tor relay
-torlauncher.bootstrapStatus.ap_handshake=Building circuits: Negotiating with a Tor relay
-torlauncher.bootstrapStatus.ap_handshake_done=Building circuits: Finished negotiating with a Tor relay
-torlauncher.bootstrapStatus.circuit_create=Building circuits: Establishing a Tor circuit
-torlauncher.bootstrapStatus.done=Connected to the Tor network!
-
-torlauncher.bootstrapWarning.done=done
-torlauncher.bootstrapWarning.connectrefused=connection refused
-torlauncher.bootstrapWarning.misc=miscellaneous
-torlauncher.bootstrapWarning.resourcelimit=insufficient resources
-torlauncher.bootstrapWarning.identity=identity mismatch
-torlauncher.bootstrapWarning.timeout=connection timeout
-torlauncher.bootstrapWarning.noroute=no route to host
-torlauncher.bootstrapWarning.ioerror=read/write error
-torlauncher.bootstrapWarning.pt_missing=missing pluggable transport
-
-torlauncher.nsresult.NS_ERROR_NET_RESET=The connection to the server was lost.
-torlauncher.nsresult.NS_ERROR_CONNECTION_REFUSED=Could not connect to the server.
-torlauncher.nsresult.NS_ERROR_PROXY_CONNECTION_REFUSED=Could not connect to the proxy.
diff --git a/src/chrome/locale/ur/network-settings.dtd b/src/chrome/locale/ur/network-settings.dtd
index eeb35c3..02b715d 100644
--- a/src/chrome/locale/ur/network-settings.dtd
+++ b/src/chrome/locale/ur/network-settings.dtd
@@ -1,24 +1,24 @@
-<!ENTITY torsettings.dialog.title "طور نیٹ ورک کے سیٹنگز">
-<!ENTITY torsettings.wizard.title.default "Connect to Tor">
-<!ENTITY torsettings.wizard.title.configure "طور نیٹ ورک کے سیٹنگز">
-<!ENTITY torsettings.wizard.title.connecting "Establishing a Connection">
+<!ENTITY torsettings.dialog.title "ٹور نیٹ ورک ترتیبات">
+<!ENTITY torsettings.wizard.title.default "ٹور کے ساتھ منسلک ہوں">
+<!ENTITY torsettings.wizard.title.configure "ٹور نیٹ ورک ترتیبات">
+<!ENTITY torsettings.wizard.title.connecting "ربط قائم کیا جارہا ہے">
<!-- For locale picker: -->
-<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
-<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+<!ENTITY torlauncher.localePicker.title "ٹور براؤزر لغت">
+<!ENTITY torlauncher.localePicker.prompt "براہِ مہربانی لغت منتخب کیجئے">
<!-- For "first run" wizard: -->
-<!ENTITY torSettings.connectPrompt "Click “Connect” to connect to Tor.">
+<!ENTITY torSettings.connectPrompt "ٹور سے منسلک ہونے کے لئے "منسلک " پر کلک کریں">
<!ENTITY torSettings.configurePrompt "Click “Configure” to adjust network settings if you are in a country that censors Tor (such as Egypt, China, Turkey) or if you are connecting from a private network that requires a proxy.">
-<!ENTITY torSettings.configure "Configure">
-<!ENTITY torSettings.connect "Connect">
+<!ENTITY torSettings.configure "مرتب کریں">
+<!ENTITY torSettings.connect "منسلک">
<!-- Other: -->
-<!ENTITY torsettings.startingTor "Waiting for Tor to start…">
-<!ENTITY torsettings.restartTor "Restart Tor">
-<!ENTITY torsettings.reconfigTor "Reconfigure">
+<!ENTITY torsettings.startingTor "ٹور چلنے کا انتظار ۔۔۔">
+<!ENTITY torsettings.restartTor "ٹور دوبارہ چلائیں">
+<!ENTITY torsettings.reconfigTor "دوبارہ مرتب کریں">
<!ENTITY torsettings.discardSettings.prompt "You have configured Tor bridges or you have entered local proxy settings.  To make a direct connection to the Tor network, these settings must be removed.">
<!ENTITY torsettings.discardSettings.proceed "Remove Settings and Connect">
@@ -31,8 +31,8 @@
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
<!ENTITY torsettings.useProxy.port "Port:">
-<!ENTITY torsettings.useProxy.username "صارف کا نام">
-<!ENTITY torsettings.useProxy.password "پاس ورڈ ">
+<!ENTITY torsettings.useProxy.username "صارف کا نام:">
+<!ENTITY torsettings.useProxy.password "پاس ورڈ :">
<!ENTITY torsettings.useProxy.type.socks4 "SOCKS 4">
<!ENTITY torsettings.useProxy.type.socks5 "SOCKS 5">
<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
1
0