tbb-commits
Threads by month
- ----- 2025 -----
- November
- October
- September
- August
- July
- 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
- 1 participants
- 19540 discussions
[tor-browser/tor-browser-68.1.0esr-9.0-2] Bug 31286: Implementation of bridge, proxy, and firewall settings in about:preferences#tor
by gk@torproject.org 12 Oct '19
by gk@torproject.org 12 Oct '19
12 Oct '19
commit bd4082f2f1db8a1f1c135d6d1689242f7c659a19
Author: Richard Pospesel <richard(a)torproject.org>
Date: Mon Sep 16 15:25:39 2019 -0700
Bug 31286: Implementation of bridge, proxy, and firewall settings in about:preferences#tor
This patch adds a new about:preferences#tor page which allows modifying
bridge, proxy, and firewall settings from within Tor Browser. All of the
functionality present in tor-launcher's Network Configuration panel is
present:
- Setting built-in bridges
- Requesting bridges from BridgeDB via moat
- Using user-provided bridges
- Configuring SOCKS4, SOCKS5, and HTTP/HTTPS proxies
- Setting firewall ports
- Viewing and Copying Tor's logs
In addition the following changes have been made:
- The Networking Settings in General preferences has been removed
- TorStrings has been removed from the SecurityLevel component and
moved into a common shared module also used by about:preferences#tor
---
browser/components/moz.build | 1 +
browser/components/preferences/in-content/main.js | 15 -
browser/components/preferences/in-content/main.xul | 56 --
.../preferences/in-content/preferences.js | 2 +
.../preferences/in-content/preferences.xul | 5 +
.../components/preferences/in-content/privacy.js | 1 +
.../securitylevel/content/securityLevel.js | 155 +---
.../torpreferences/content/parseFunctions.jsm | 76 ++
.../torpreferences/content/requestBridgeDialog.jsm | 220 ++++++
.../torpreferences/content/requestBridgeDialog.xul | 35 +
.../torpreferences/content/torBridgeSettings.jsm | 325 +++++++++
.../torpreferences/content/torCategory.inc.xul | 8 +
.../torpreferences/content/torFirewallSettings.jsm | 72 ++
.../torpreferences/content/torLogDialog.jsm | 65 ++
.../torpreferences/content/torLogDialog.xul | 22 +
.../components/torpreferences/content/torPane.js | 802 +++++++++++++++++++++
.../components/torpreferences/content/torPane.xul | 119 +++
.../torpreferences/content/torPreferences.css | 63 ++
.../torpreferences/content/torPreferencesIcon.svg | 5 +
.../torpreferences/content/torProxySettings.jsm | 245 +++++++
browser/components/torpreferences/jar.mn | 14 +
browser/components/torpreferences/moz.build | 1 +
browser/modules/BridgeDB.jsm | 110 +++
browser/modules/TorProtocolService.jsm | 203 ++++++
browser/modules/TorStrings.jsm | 326 +++++++++
browser/modules/moz.build | 3 +
26 files changed, 2755 insertions(+), 194 deletions(-)
diff --git a/browser/components/moz.build b/browser/components/moz.build
index 111794a7532c..c0c9629cac65 100644
--- a/browser/components/moz.build
+++ b/browser/components/moz.build
@@ -56,6 +56,7 @@ DIRS += [
'syncedtabs',
'uitour',
'urlbar',
+ 'torpreferences',
'translation',
]
diff --git a/browser/components/preferences/in-content/main.js b/browser/components/preferences/in-content/main.js
index 845ef2f61e30..98c73c5ac119 100644
--- a/browser/components/preferences/in-content/main.js
+++ b/browser/components/preferences/in-content/main.js
@@ -365,16 +365,6 @@ var gMainPane = {
});
this.updatePerformanceSettingsBox({ duringChangeEvent: false });
- let connectionSettingsLink = document.getElementById(
- "connectionSettingsLearnMore"
- );
- let connectionSettingsUrl =
- Services.urlFormatter.formatURLPref("app.support.baseURL") +
- "prefs-connection-settings";
- connectionSettingsLink.setAttribute("href", connectionSettingsUrl);
- this.updateProxySettingsUI();
- initializeProxyUI(gMainPane);
-
if (Services.prefs.getBoolPref("intl.multilingual.enabled")) {
gMainPane.initBrowserLocale();
}
@@ -464,11 +454,6 @@ var gMainPane = {
gMainPane.updateHardwareAcceleration.bind(gMainPane)
);
setEventListener(
- "connectionSettings",
- "command",
- gMainPane.showConnections
- );
- setEventListener(
"browserContainersCheckbox",
"command",
gMainPane.checkBrowserContainers
diff --git a/browser/components/preferences/in-content/main.xul b/browser/components/preferences/in-content/main.xul
index 83d64f26a62d..85a219ff783b 100644
--- a/browser/components/preferences/in-content/main.xul
+++ b/browser/components/preferences/in-content/main.xul
@@ -669,60 +669,4 @@
<label id="cfrFeaturesLearnMore" class="learnMore" data-l10n-id="browsing-cfr-recommendations-learn-more" is="text-link"/>
</hbox>
</groupbox>
-
-<hbox id="networkProxyCategory"
- class="subcategory"
- hidden="true"
- data-category="paneGeneral">
- <html:h1 data-l10n-id="network-settings-title"/>
-</hbox>
-
-<!-- Network Settings-->
-<groupbox id="connectionGroup" data-category="paneGeneral" hidden="true">
- <label class="search-header" hidden="true"><html:h2 data-l10n-id="network-settings-title"/></label>
-
- <hbox align="center">
- <hbox align="center" flex="1">
- <description id="connectionSettingsDescription" control="connectionSettings"/>
- <spacer width="5"/>
- <label id="connectionSettingsLearnMore" class="learnMore" is="text-link"
- data-l10n-id="network-proxy-connection-learn-more">
- </label>
- <separator orient="vertical"/>
- </hbox>
-
- <!-- Please don't remove the wrapping hbox/vbox/box for these elements. It's used to properly compute the search tooltip position. -->
- <hbox>
- <button id="connectionSettings"
- is="highlightable-button"
- class="accessory-button"
- icon="network"
- data-l10n-id="network-proxy-connection-settings"
- searchkeywords="doh trr"
- search-l10n-ids="
- connection-window.title,
- connection-proxy-option-no.label,
- connection-proxy-option-auto.label,
- connection-proxy-option-system.label,
- connection-proxy-option-manual.label,
- connection-proxy-http,
- connection-proxy-ssl,
- connection-proxy-ftp,
- connection-proxy-http-port,
- connection-proxy-socks,
- connection-proxy-socks4,
- connection-proxy-socks5,
- connection-proxy-noproxy,
- connection-proxy-noproxy-desc,
- connection-proxy-http-share.label,
- connection-proxy-autotype.label,
- connection-proxy-reload.label,
- connection-proxy-autologin.label,
- connection-proxy-socks-remote-dns.label,
- connection-dns-over-https.label,
- connection-dns-over-https-url-custom.label,
- " />
- </hbox>
- </hbox>
-</groupbox>
</html:template>
diff --git a/browser/components/preferences/in-content/preferences.js b/browser/components/preferences/in-content/preferences.js
index d2851f20d2ca..b5b5f87af459 100644
--- a/browser/components/preferences/in-content/preferences.js
+++ b/browser/components/preferences/in-content/preferences.js
@@ -13,6 +13,7 @@
/* import-globals-from findInPage.js */
/* import-globals-from ../../../base/content/utilityOverlay.js */
/* import-globals-from ../../../../toolkit/content/preferencesBindings.js */
+/* import-globals-from ../../torpreferences/content/torPane.js */
/* global MozXULElement */
"use strict";
@@ -92,6 +93,7 @@ function init_all() {
document.getElementById("template-paneSync").remove();
}
register_module("paneSearchResults", gSearchResultsPane);
+ register_module("paneTor", gTorPane);
gSearchResultsPane.init();
gMainPane.preInit();
diff --git a/browser/components/preferences/in-content/preferences.xul b/browser/components/preferences/in-content/preferences.xul
index 3b07e4596907..7a01443ab048 100644
--- a/browser/components/preferences/in-content/preferences.xul
+++ b/browser/components/preferences/in-content/preferences.xul
@@ -16,6 +16,7 @@
<?xml-stylesheet href="chrome://browser/skin/preferences/in-content/containers.css"?>
<?xml-stylesheet href="chrome://browser/skin/preferences/in-content/privacy.css"?>
<?xml-stylesheet href="chrome://browser/content/securitylevel/securityLevelPreferences.css"?>
+<?xml-stylesheet href="chrome://browser/content/torpreferences/torPreferences.css"?>
<!DOCTYPE page [
<!ENTITY % aboutTorDTD SYSTEM "chrome://torbutton/locale/aboutTor.dtd">
@@ -138,6 +139,9 @@
<image class="category-icon"/>
<label class="category-name" flex="1" data-l10n-id="pane-sync-title2"></label>
</richlistitem>
+
+#include ../../torpreferences/content/torCategory.inc.xul
+
</richlistbox>
<spacer flex="1"/>
@@ -195,6 +199,7 @@
#include privacy.xul
#include containers.xul
#include sync.xul
+#include ../../torpreferences/content/torPane.xul
</vbox>
</vbox>
</vbox>
diff --git a/browser/components/preferences/in-content/privacy.js b/browser/components/preferences/in-content/privacy.js
index e9112a2c467e..297d07fadf1f 100644
--- a/browser/components/preferences/in-content/privacy.js
+++ b/browser/components/preferences/in-content/privacy.js
@@ -62,6 +62,7 @@ XPCOMUtils.defineLazyGetter(this, "AlertsServiceDND", function() {
}
});
+// TODO: module import via ChromeUtils.defineModuleGetter
XPCOMUtils.defineLazyScriptGetter(
this,
["SecurityLevelPreferences"],
diff --git a/browser/components/securitylevel/content/securityLevel.js b/browser/components/securitylevel/content/securityLevel.js
index 9965046a7d15..7f307c5df43a 100644
--- a/browser/components/securitylevel/content/securityLevel.js
+++ b/browser/components/securitylevel/content/securityLevel.js
@@ -8,102 +8,11 @@ XPCOMUtils.defineLazyModuleGetters(this, {
PanelMultiView: "resource:///modules/PanelMultiView.jsm",
});
-XPCOMUtils.defineLazyGlobalGetters(this, ["DOMParser"]);
-XPCOMUtils.defineLazyGetter(this, "domParser", () => {
- const parser = new DOMParser();
- parser.forceEnableDTD();
- return parser;
-});
-
-/*
- Security Level Strings
-
- Strings loaded from torbutton, but en-US defaults provided in case torbutton addon not enabled
-*/
-XPCOMUtils.defineLazyGetter(this, "SecurityLevelStrings", function() {
- // copied from testing/marionette/l10n.js
- let localizeEntity = function(urls, id) {
- // Build a string which contains all possible entity locations
- let locations = [];
- urls.forEach((url, index) => {
- locations.push(`<!ENTITY % dtd_${index} SYSTEM "${url}">%dtd_${index};`);
- });
-
- // Use the DOM parser to resolve the entity and extract its real value
- let header = `<?xml version="1.0"?><!DOCTYPE elem [${locations.join("")}]>`;
- let elem = `<elem id="elementID">&${id};</elem>`;
- let doc = domParser.parseFromString(header + elem, "text/xml");
- let element = doc.querySelector("elem[id='elementID']");
-
- if (element === null) {
- throw new Error(`Entity with id='${id}' hasn't been found`);
- }
-
- return element.textContent;
- };
-
- let getString = function(key, fallback) {
- try {
- return localizeEntity(
- ['chrome://torbutton/locale/torbutton.dtd'],
- `torbutton.prefs.sec_${key}`
- );
- } catch (e) { }
- return fallback;
- };
-
- // read localized strings from torbutton; but use hard-coded en-US strings as fallbacks in case of error
- let retval = {
- securityLevel : getString("caption", "Security Level"),
- customWarning : getString("custom_warning", "Custom"),
- overview : getString("overview", "Disable certain web features that can be used to attack your security and anonymity."),
- standard : {
- level : getString("standard_label", "Standard"),
- tooltip : getString("standard_tooltip", "Security Level : Standard"),
- summary : getString("standard_description", "All Tor Browser and website features are enabled."),
- },
- safer : {
- level : getString("safer_label", "Safer"),
- tooltip : getString("safer_tooltip", "Security Level : Safer"),
- summary : getString("safer_description", "Disables website features that are often dangerous, causing some sites to lose functionality."),
- description1 : getString("js_on_https_sites_only", "JavaScript is disabled on non-HTTPS sites."),
- description2 : getString("limit_typography", "Some fonts and math symbols are disabled."),
- description3 : getString("click_to_play_media", "Audio and video (HTML5 media), and WebGL are click-to-play."),
- },
- safest : {
- level : getString("safest_label", "Safest"),
- tooltip : getString("safest_tooltip", "Security Level : Safest"),
- summary : getString("safest_description", "Only allows website features required for static sites and basic services. These changes affect images, media, and scripts."),
- description1 : getString("js_disabled", "JavaScript is disabled by default on all sites."),
- description2 : getString("limit_graphics_and_typography", "Some fonts, icons, math symbols, and images are disabled."),
- description3 : getString("click_to_play_media", "Audio and video (HTML5 media), and WebGL are click-to-play."),
- },
- custom : {
- summary : getString("custom_summary", "Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels."),
- },
- learnMore : getString("learn_more_label", "Learn more"),
- learnMoreURL : function() {
- let locale = "";
- try {
- let { getLocale } =
- Cu.import("resource://torbutton/modules/utils.js", {});
- locale = getLocale();
- } catch(e) {}
-
- if (locale == "") {
- locale = "en-US";
- }
-
- return "https://tb-manual.torproject.org/" + locale + "/security-settings/";
- }(),
- restoreDefaults : getString("restore_defaults", "Restore Defaults"),
- advancedSecuritySettings : getString("advanced_security_settings", "Advanced Security Settings\u2026"),
- };
-
-
- return retval;
-});
-
+ChromeUtils.defineModuleGetter(
+ this,
+ "TorStrings",
+ "resource:///modules/TorStrings.jsm"
+);
/*
Security Level Prefs
@@ -158,8 +67,8 @@ const SecurityLevelButton = {
_populateXUL : function(securityLevelButton) {
if (securityLevelButton != null) {
- securityLevelButton.setAttribute("tooltiptext", SecurityLevelStrings.securityLevel);
- securityLevelButton.setAttribute("label", SecurityLevelStrings.securityLevel);
+ securityLevelButton.setAttribute("tooltiptext", TorStrings.securityLevel.securityLevel);
+ securityLevelButton.setAttribute("label", TorStrings.securityLevel.securityLevel);
}
},
@@ -171,15 +80,15 @@ const SecurityLevelButton = {
switch(securitySlider) {
case 4:
classList.add("standard");
- securityLevelButton.setAttribute("tooltiptext", SecurityLevelStrings.standard.tooltip);
+ securityLevelButton.setAttribute("tooltiptext", TorStrings.securityLevel.standard.tooltip);
break;
case 2:
classList.add("safer");
- securityLevelButton.setAttribute("tooltiptext", SecurityLevelStrings.safer.tooltip);
+ securityLevelButton.setAttribute("tooltiptext", TorStrings.securityLevel.safer.tooltip);
break;
case 1:
classList.add("safest");
- securityLevelButton.setAttribute("tooltiptext", SecurityLevelStrings.safest.tooltip);
+ securityLevelButton.setAttribute("tooltiptext", TorStrings.securityLevel.safest.tooltip);
break;
}
}
@@ -294,12 +203,12 @@ const SecurityLevelPanel = {
let buttonRestoreDefaults = panelview.querySelector("#securityLevel-restoreDefaults");
let buttonAdvancedSecuritySettings = panelview.querySelector("#securityLevel-advancedSecuritySettings");
- labelHeader.setAttribute("value", SecurityLevelStrings.securityLevel);
- labelCustomWarning.setAttribute("value", SecurityLevelStrings.customWarning);
- labelLearnMore.setAttribute("value", SecurityLevelStrings.learnMore);
- labelLearnMore.setAttribute("href", SecurityLevelStrings.learnMoreURL);
- buttonRestoreDefaults.setAttribute("label", SecurityLevelStrings.restoreDefaults);
- buttonAdvancedSecuritySettings.setAttribute("label", SecurityLevelStrings.advancedSecuritySettings);
+ labelHeader.setAttribute("value", TorStrings.securityLevel.securityLevel);
+ labelCustomWarning.setAttribute("value", TorStrings.securityLevel.customWarning);
+ labelLearnMore.setAttribute("value", TorStrings.securityLevel.learnMore);
+ labelLearnMore.setAttribute("href", TorStrings.securityLevel.learnMoreURL);
+ buttonRestoreDefaults.setAttribute("label", TorStrings.securityLevel.restoreDefaults);
+ buttonAdvancedSecuritySettings.setAttribute("label", TorStrings.securityLevel.advancedSecuritySettings);
// rest of the XUL is set based on security prefs
this._configUIFromPrefs();
@@ -328,24 +237,24 @@ const SecurityLevelPanel = {
switch(securitySlider) {
// standard
case 4:
- labelLevel.setAttribute("value", SecurityLevelStrings.standard.level);
- summary.textContent = SecurityLevelStrings.standard.summary;
+ labelLevel.setAttribute("value", TorStrings.securityLevel.standard.level);
+ summary.textContent = TorStrings.securityLevel.standard.summary;
break;
// safer
case 2:
- labelLevel.setAttribute("value", SecurityLevelStrings.safer.level);
- summary.textContent = SecurityLevelStrings.safer.summary;
+ labelLevel.setAttribute("value", TorStrings.securityLevel.safer.level);
+ summary.textContent = TorStrings.securityLevel.safer.summary;
break;
// safest
case 1:
- labelLevel.setAttribute("value", SecurityLevelStrings.safest.level);
- summary.textContent = SecurityLevelStrings.safest.summary;
+ labelLevel.setAttribute("value", TorStrings.securityLevel.safest.level);
+ summary.textContent = TorStrings.securityLevel.safest.summary;
break;
}
// override the summary text with custom warning
if (securityCustom) {
- summary.textContent = SecurityLevelStrings.custom.summary;
+ summary.textContent = TorStrings.securityLevel.custom.summary;
}
},
@@ -425,14 +334,14 @@ const SecurityLevelPreferences =
let groupbox = document.getElementById("securityLevel-groupbox");
let labelHeader = groupbox.querySelector("#securityLevel-header");
- labelHeader.setAttribute("value", SecurityLevelStrings.securityLevel);
+ labelHeader.setAttribute("value", TorStrings.securityLevel.securityLevel);
let spanOverview = groupbox.querySelector("#securityLevel-overview");
- spanOverview.textContent = SecurityLevelStrings.overview;
+ spanOverview.textContent = TorStrings.securityLevel.overview;
let labelLearnMore = groupbox.querySelector("#securityLevel-learnMore");
- labelLearnMore.setAttribute("value", SecurityLevelStrings.learnMore);
- labelLearnMore.setAttribute("href", SecurityLevelStrings.learnMoreURL);
+ labelLearnMore.setAttribute("value", TorStrings.securityLevel.learnMore);
+ labelLearnMore.setAttribute("href", TorStrings.securityLevel.learnMoreURL);
let populateRadioElements = function(vboxQuery, stringStruct) {
let vbox = groupbox.querySelector(vboxQuery);
@@ -441,13 +350,13 @@ const SecurityLevelPreferences =
radio.setAttribute("label", stringStruct.level);
let customWarning = vbox.querySelector("#securityLevel-customWarning");
- customWarning.setAttribute("value", SecurityLevelStrings.customWarning);
+ customWarning.setAttribute("value", TorStrings.securityLevel.customWarning);
let labelSummary = vbox.querySelector("#securityLevel-summary");
labelSummary.textContent = stringStruct.summary;
let labelRestoreDefaults = vbox.querySelector("#securityLevel-restoreDefaults");
- labelRestoreDefaults.setAttribute("value", SecurityLevelStrings.restoreDefaults);
+ labelRestoreDefaults.setAttribute("value", TorStrings.securityLevel.restoreDefaults);
let description1 = vbox.querySelector("#securityLevel-description1");
if (description1) {
@@ -463,9 +372,9 @@ const SecurityLevelPreferences =
}
};
- populateRadioElements("#securityLevel-vbox-standard", SecurityLevelStrings.standard);
- populateRadioElements("#securityLevel-vbox-safer", SecurityLevelStrings.safer);
- populateRadioElements("#securityLevel-vbox-safest", SecurityLevelStrings.safest);
+ populateRadioElements("#securityLevel-vbox-standard", TorStrings.securityLevel.standard);
+ populateRadioElements("#securityLevel-vbox-safer", TorStrings.securityLevel.safer);
+ populateRadioElements("#securityLevel-vbox-safest", TorStrings.securityLevel.safest);
},
_configUIFromPrefs : function() {
diff --git a/browser/components/torpreferences/content/parseFunctions.jsm b/browser/components/torpreferences/content/parseFunctions.jsm
new file mode 100644
index 000000000000..a6e6c554ca63
--- /dev/null
+++ b/browser/components/torpreferences/content/parseFunctions.jsm
@@ -0,0 +1,76 @@
+"use strict";
+
+var EXPORTED_SYMBOLS = [
+ "parsePort",
+ "parseAddrPort",
+ "parseUsernamePassword",
+ "parseAddrPortList",
+ "parseBridgeStrings",
+ "parsePortList",
+];
+
+// expects a string representation of an integer from 1 to 65535
+let parsePort = function(aPort) {
+ // ensure port string is a valid positive integer
+ const validIntRegex = /^[0-9]+$/;
+ if (!validIntRegex.test(aPort)) {
+ throw new Error(`Invalid PORT string : '${aPort}'`);
+ }
+
+ // ensure port value is on valid range
+ let port = Number.parseInt(aPort);
+ if (port < 1 || port > 65535) {
+ throw new Error(
+ `Invalid PORT value, needs to be on range [1,65535] : '${port}'`
+ );
+ }
+
+ return port;
+};
+// expects a string in the format: "ADDRESS:PORT"
+let parseAddrPort = function(aAddrColonPort) {
+ let tokens = aAddrColonPort.split(":");
+ if (tokens.length != 2) {
+ throw new Error(`Invalid ADDRESS:PORT string : '${aAddrColonPort}'`);
+ }
+ let address = tokens[0];
+ let port = parsePort(tokens[1]);
+ return [address, port];
+};
+
+// expects a string in the format: "USERNAME:PASSWORD"
+// split on the first colon and any subsequent go into password
+let parseUsernamePassword = function(aUsernameColonPassword) {
+ let colonIndex = aUsernameColonPassword.indexOf(":");
+ if (colonIndex < 0) {
+ // we don't log the contents of the potentially password containing string
+ throw new Error("Invalid USERNAME:PASSWORD string");
+ }
+
+ let username = aUsernameColonPassword.substring(0, colonIndex);
+ let password = aUsernameColonPassword.substring(colonIndex + 1);
+
+ return [username, password];
+};
+
+// expects tring in the format: ADDRESS:PORT,ADDRESS:PORT,...
+// returns array of ports (as ints)
+let parseAddrPortList = function(aAddrPortList) {
+ let addrPorts = aAddrPortList.split(",");
+ // parse ADDRESS:PORT string and only keep the port (second element in returned array)
+ let retval = addrPorts.map(addrPort => parseAddrPort(addrPort)[1]);
+ return retval;
+};
+
+// expects a '/n' delimited string of bridge string, which we split and trim
+let parseBridgeStrings = function(aBridgeStrings) {
+ let splitStrings = aBridgeStrings.split("\n");
+ return splitStrings.map(val => val.trim());
+};
+
+// expecting a ',' delimited list of ints with possible white space between
+// returns an array of ints
+let parsePortList = function(aPortListString) {
+ let splitStrings = aPortListString.split(",");
+ return splitStrings.map(val => parsePort(val.trim()));
+};
diff --git a/browser/components/torpreferences/content/requestBridgeDialog.jsm b/browser/components/torpreferences/content/requestBridgeDialog.jsm
new file mode 100644
index 000000000000..b66272edf880
--- /dev/null
+++ b/browser/components/torpreferences/content/requestBridgeDialog.jsm
@@ -0,0 +1,220 @@
+"use strict";
+
+var EXPORTED_SYMBOLS = ["RequestBridgeDialog"];
+
+const { BridgeDB } = ChromeUtils.import("resource:///modules/BridgeDB.jsm");
+const { TorStrings } = ChromeUtils.import("resource:///modules/TorStrings.jsm");
+
+class RequestBridgeDialog {
+ constructor() {
+ this._dialog = null;
+ this._submitCommand = null;
+ this._submitButton = null;
+ this._dialogDescription = null;
+ this._captchaImage = null;
+ this._captchaEntryTextbox = null;
+ this._captchaRefreshCommand = null;
+ this._captchaRefreshButton = null;
+ this._incorrectCaptchaHbox = null;
+ this._incorrectCaptchaLabel = null;
+ this._bridges = [];
+ this._proxyURI = null;
+ }
+
+ static get selectors() {
+ return {
+ submitButton:
+ "accept" /* not really a selector but a key for dialog's getButton */,
+ dialogDescription: "description#torPreferences-requestBridge-description",
+ submitCommand: "command#torPreferences-requestBridge-submitCommand",
+ captchaImage: "image#torPreferences-requestBridge-captchaImage",
+ captchaEntryTextbox:
+ "textbox#torPreferences-requestBridge-captchaTextbox",
+ refreshCaptchaCommand:
+ "command#torPreferences-requestBridge-refreshCaptchaCommand",
+ refreshCaptchaButton:
+ "button#torPreferences-requestBridge-refreshCaptchaButton",
+ incorrectCaptchaHbox:
+ "hbox#torPreferences-requestBridge-incorrectCaptchaHbox",
+ incorrectCaptchaLabel:
+ "label#torPreferences-requestBridge-incorrectCaptchaError",
+ };
+ }
+
+ _populateXUL(dialog) {
+ const selectors = RequestBridgeDialog.selectors;
+
+ this._dialog = dialog;
+ this._dialog.setAttribute(
+ "title",
+ TorStrings.settings.requestBridgeDialogTitle
+ );
+ // user may have opened a Request Bridge dialog in another tab, so update the
+ // CAPTCHA image or close out the dialog if we have a bridge list
+ this._dialog.addEventListener("focusin", () => {
+ const uri = BridgeDB.currentCaptchaImage;
+ const bridges = BridgeDB.currentBridges;
+
+ // new captcha image
+ if (uri) {
+ this._setcaptchaImage(uri);
+ } else if (bridges) {
+ this._bridges = bridges;
+ this._submitButton.disabled = false;
+ this._dialog.acceptDialog();
+ }
+ });
+
+ this._submitCommand = this._dialog.querySelector(selectors.submitCommand);
+
+ this._submitButton = this._dialog.getButton(selectors.submitButton);
+ this._submitButton.setAttribute("label", TorStrings.settings.submitCaptcha);
+ this._submitButton.setAttribute("command", this._submitCommand.id);
+ this._submitButton.disabled = true;
+
+ this._dialogDescription = this._dialog.querySelector(
+ selectors.dialogDescription
+ );
+ this._dialogDescription.textContent =
+ TorStrings.settings.contactingBridgeDB;
+
+ this._captchaImage = this._dialog.querySelector(selectors.captchaImage);
+
+ // request captcha from bridge db
+ BridgeDB.requestNewCaptchaImage(this._proxyURI).then(uri => {
+ this._setcaptchaImage(uri);
+ });
+
+ this._captchaEntryTextbox = this._dialog.querySelector(
+ selectors.captchaEntryTextbox
+ );
+ this._captchaEntryTextbox.setAttribute(
+ "placeholder",
+ TorStrings.settings.captchaTextboxPlaceholder
+ );
+ this._captchaEntryTextbox.disabled = true;
+ this._captchaEntryTextbox.onkeypress = evt => {
+ const ENTER_KEY = 13;
+ if (evt.keyCode == ENTER_KEY) {
+ // logically same as pressing the 'submit' button of the parent dialog
+ this.onSubmitCaptcha();
+ return false;
+ }
+ return true;
+ };
+ // disable submit if entry textbox is empty
+ this._captchaEntryTextbox.oninput = () => {
+ this._submitButton.disabled = this._captchaEntryTextbox.value == "";
+ };
+
+ this._captchaRefreshCommand = this._dialog.querySelector(
+ selectors.refreshCaptchaCommand
+ );
+ this._captchaRefreshButton = this._dialog.querySelector(
+ selectors.refreshCaptchaButton
+ );
+ this._captchaRefreshButton.setAttribute(
+ "command",
+ this._captchaRefreshCommand.id
+ );
+ this._captchaRefreshButton.disabled = true;
+
+ this._incorrectCaptchaHbox = this._dialog.querySelector(
+ selectors.incorrectCaptchaHbox
+ );
+ this._incorrectCaptchaLabel = this._dialog.querySelector(
+ selectors.incorrectCaptchaLabel
+ );
+ this._incorrectCaptchaLabel.setAttribute(
+ "value",
+ TorStrings.settings.incorrectCaptcha
+ );
+
+ return true;
+ }
+
+ _setcaptchaImage(uri) {
+ if (uri != this._captchaImage.src) {
+ this._captchaImage.src = uri;
+ this._dialogDescription.textContent = TorStrings.settings.solveTheCaptcha;
+ this._setUIDisabled(false);
+ this._captchaEntryTextbox.focus();
+ this._captchaEntryTextbox.select();
+ }
+ }
+
+ _setUIDisabled(disabled) {
+ this._submitButton.disabled = this._captchaGuessIsEmpty() || disabled;
+ this._captchaEntryTextbox.disabled = disabled;
+ this._captchaRefreshButton.disabled = disabled;
+ }
+
+ _captchaGuessIsEmpty() {
+ return this._captchaEntryTextbox.value == "";
+ }
+
+ init(window, dialog) {
+ // defer to later until firefox has populated the dialog with all our elements
+ window.setTimeout(() => {
+ this._populateXUL(dialog);
+ }, 0);
+ }
+
+ close() {
+ BridgeDB.close();
+ }
+
+ /*
+ Event Handlers
+ */
+ onSubmitCaptcha() {
+ let captchaText = this._captchaEntryTextbox.value.trim();
+ // noop if the field is empty
+ if (captchaText == "") {
+ return;
+ }
+
+ // freeze ui while we make request
+ this._setUIDisabled(true);
+ this._incorrectCaptchaHbox.style.visibility = "hidden";
+
+ BridgeDB.submitCaptchaGuess(captchaText)
+ .then(aBridges => {
+ this._bridges = aBridges;
+
+ this._submitButton.disabled = false;
+ this._dialog.acceptDialog();
+ })
+ .catch(aError => {
+ this._bridges = [];
+ this._setUIDisabled(false);
+ this._incorrectCaptchaHbox.style.visibility = "visible";
+ });
+ }
+
+ onRefreshCaptcha() {
+ this._setUIDisabled(true);
+ this._captchaImage.src = "";
+ this._dialogDescription.textContent =
+ TorStrings.settings.contactingBridgeDB;
+ this._captchaEntryTextbox.value = "";
+ this._incorrectCaptchaHbox.style.visibility = "hidden";
+
+ BridgeDB.requestNewCaptchaImage(this._proxyURI).then(uri => {
+ this._setcaptchaImage(uri);
+ });
+ }
+
+ openDialog(gSubDialog, aProxyURI, aCloseCallback) {
+ this._proxyURI = aProxyURI;
+ gSubDialog.open(
+ "chrome://browser/content/torpreferences/requestBridgeDialog.xul",
+ "resizable=yes",
+ this,
+ () => {
+ this.close();
+ aCloseCallback(this._bridges);
+ }
+ );
+ }
+}
diff --git a/browser/components/torpreferences/content/requestBridgeDialog.xul b/browser/components/torpreferences/content/requestBridgeDialog.xul
new file mode 100644
index 000000000000..67cae40b9a48
--- /dev/null
+++ b/browser/components/torpreferences/content/requestBridgeDialog.xul
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/skin/preferences/preferences.css"?>
+<?xml-stylesheet href="chrome://browser/content/torpreferences/torPreferences.css"?>
+
+<dialog id="torPreferences-requestBridge-dialog" type="child" class="prefwindow"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml"
+ title="Request Bridge"
+ buttons="cancel,accept"
+ role="dialog">
+ <command id="torPreferences-requestBridge-submitCommand" oncommand="requestBridgeDialog.onSubmitCaptcha();"/>
+ <!-- ok, so ​ is a zero-width space. We need to have *something* in the innerText so that XUL knows how tall the
+ description node is so that it can determine how large to make the dialog element's inner draw area. If we have
+ nothing in the innerText, then it collapse to 0 height, and the contents of the dialog ends up partially hidden >:( -->
+ <description id="torPreferences-requestBridge-description">​</description>
+ <!-- init to transparent 400x125 png -->
+ <image id="torPreferences-requestBridge-captchaImage" flex="1"/>
+ <hbox id="torPreferences-requestBridge-inputHbox">
+ <textbox id="torPreferences-requestBridge-captchaTextbox" flex="1" />
+ <command id="torPreferences-requestBridge-refreshCaptchaCommand" oncommand="requestBridgeDialog.onRefreshCaptcha();"/>
+ <button id="torPreferences-requestBridge-refreshCaptchaButton" image="chrome://browser/skin/reload.svg"/>
+ </hbox>
+ <hbox id="torPreferences-requestBridge-incorrectCaptchaHbox" align="center">
+ <image id="torPreferences-requestBridge-errorIcon" />
+ <label id="torPreferences-requestBridge-incorrectCaptchaError" flex="1"/>
+ </hbox>
+ <script type="application/javascript"><![CDATA[
+ "use strict";
+
+ let requestBridgeDialog = window.arguments[0];
+ let dialog = document.getElementById("torPreferences-requestBridge-dialog");
+ requestBridgeDialog.init(window, dialog);
+ ]]></script>
+</dialog>
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/torBridgeSettings.jsm b/browser/components/torpreferences/content/torBridgeSettings.jsm
new file mode 100644
index 000000000000..ceb61d3ec972
--- /dev/null
+++ b/browser/components/torpreferences/content/torBridgeSettings.jsm
@@ -0,0 +1,325 @@
+"use strict";
+
+var EXPORTED_SYMBOLS = [
+ "TorBridgeSource",
+ "TorBridgeSettings",
+ "makeTorBridgeSettingsNone",
+ "makeTorBridgeSettingsBuiltin",
+ "makeTorBridgeSettingsBridgeDB",
+ "makeTorBridgeSettingsUserProvided",
+];
+
+const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
+const { TorProtocolService } = ChromeUtils.import(
+ "resource:///modules/TorProtocolService.jsm"
+);
+const { TorStrings } = ChromeUtils.import("resource:///modules/TorStrings.jsm");
+
+const TorBridgeSource = {
+ NONE: "NONE",
+ BUILTIN: "BUILTIN",
+ BRIDGEDB: "BRIDGEDB",
+ USERPROVIDED: "USERPROVIDED",
+};
+
+class TorBridgeSettings {
+ constructor() {
+ this._bridgeSource = TorBridgeSource.NONE;
+ this._selectedDefaultBridgeType = null;
+ this._bridgeStrings = [];
+ }
+
+ get selectedDefaultBridgeType() {
+ if (this._bridgeSource == TorBridgeSource.BUILTIN) {
+ return this._selectedDefaultBridgeType;
+ }
+ return undefined;
+ }
+
+ get bridgeSource() {
+ return this._bridgeSource;
+ }
+
+ // for display
+ get bridgeStrings() {
+ return this._bridgeStrings.join("\n");
+ }
+
+ // raw
+ get bridgeStringsArray() {
+ return this._bridgeStrings;
+ }
+
+ static get defaultBridgeTypes() {
+ if (TorBridgeSettings._defaultBridgeTypes) {
+ return TorBridgeSettings._defaultBridgeTypes;
+ }
+
+ let bridgeListBranch = Services.prefs.getBranch(
+ TorStrings.preferenceBranches.defaultBridge
+ );
+ let bridgePrefs = bridgeListBranch.getChildList("", {});
+
+ // an unordered set for shoving bridge types into
+ let bridgeTypes = new Set();
+ // look for keys ending in ".N" and treat string before that as the bridge type
+ const pattern = /\.[0-9]+$/;
+ for (const key of bridgePrefs) {
+ const offset = key.search(pattern);
+ if (offset != -1) {
+ const bt = key.substring(0, offset);
+ bridgeTypes.add(bt);
+ }
+ }
+
+ // recommended bridge type goes first in the list
+ let recommendedBridgeType = Services.prefs.getCharPref(
+ TorStrings.preferenceKeys.recommendedBridgeType,
+ null
+ );
+
+ let retval = [];
+ if (recommendedBridgeType && bridgeTypes.has(recommendedBridgeType)) {
+ retval.push(recommendedBridgeType);
+ }
+
+ for (const bridgeType of bridgeTypes.values()) {
+ if (bridgeType != recommendedBridgeType) {
+ retval.push(bridgeType);
+ }
+ }
+
+ // cache off
+ TorBridgeSettings._defaultBridgeTypes = retval;
+ return retval;
+ }
+
+ _readDefaultBridges(aBridgeType) {
+ let bridgeBranch = Services.prefs.getBranch(
+ TorStrings.preferenceBranches.defaultBridge
+ );
+ let bridgeBranchPrefs = bridgeBranch.getChildList("", {});
+
+ let retval = [];
+
+ // regex matches against strings ending in ".N" where N is a positive integer
+ let pattern = /\.[0-9]+$/;
+ for (const key of bridgeBranchPrefs) {
+ // verify the location of the match is the correct offset required for aBridgeType
+ // to fit, and that the string begins with aBridgeType
+ if (
+ key.search(pattern) == aBridgeType.length &&
+ key.startsWith(aBridgeType)
+ ) {
+ let bridgeStr = bridgeBranch.getCharPref(key);
+ retval.push(bridgeStr);
+ }
+ }
+
+ // fisher-yates shuffle
+ // shuffle so that Tor Browser users don't all try the built-in bridges in the same order
+ for (let i = retval.length - 1; i > 0; --i) {
+ // number n such that 0.0 <= n < 1.0
+ const n = Math.random();
+ // integer j such that 0 <= j <= i
+ const j = Math.floor(n * (i + 1));
+
+ // swap values at indices i and j
+ const tmp = retval[i];
+ retval[i] = retval[j];
+ retval[j] = tmp;
+ }
+
+ return retval;
+ }
+
+ _readBridgeDBBridges() {
+ let bridgeBranch = Services.prefs.getBranch(
+ `${TorStrings.preferenceBranches.bridgeDBBridges}`
+ );
+ let bridgeBranchPrefs = bridgeBranch.getChildList("", {});
+ // the child prefs do not come in any particular order so sort the keys
+ // so the values can be compared to what we get out off torrc
+ bridgeBranchPrefs.sort();
+
+ // just assume all of the prefs under the parent point to valid bridge string
+ let retval = bridgeBranchPrefs.map(key =>
+ bridgeBranch.getCharPref(key).trim()
+ );
+
+ return retval;
+ }
+
+ _readTorrcBridges() {
+ let bridgeList = TorProtocolService.readStringArraySetting(
+ TorStrings.configKeys.bridgeList
+ );
+
+ let retval = [];
+ for (const line of bridgeList) {
+ let trimmedLine = line.trim();
+ if (trimmedLine) {
+ retval.push(trimmedLine);
+ }
+ }
+
+ return retval;
+ }
+
+ // analagous to initBridgeSettings()
+ readSettings() {
+ // restore to defaults
+ this._bridgeSource = TorBridgeSource.NONE;
+ this._selectedDefaultBridgeType = null;
+ this._bridgeStrings = [];
+
+ // So the way tor-launcher determines the origin of the configured bridges is a bit
+ // weird and depends on inferring our scenario based on some firefox prefs and the
+ // relationship between the saved list of bridges in about:config vs the list saved in torrc
+
+ // first off, if "extensions.torlauncher.default_bridge_type" is set to one of our
+ // builtin default types (obfs4, meek-azure, snowflake, etc) then we provide the
+ // bridges in "extensions.torlauncher.default_bridge.*" (filtered by our default_bridge_type)
+
+ // next, we compare the list of bridges saved in torrc to the bridges stored in the
+ // "extensions.torlauncher.bridgedb_bridge."" branch. If they match *exactly* then we assume
+ // the bridges were retrieved from BridgeDB and use those. If the torrc list is empty then we know
+ // we have no bridge settings
+
+ // finally, if none of the previous conditions are not met, it is assumed the bridges stored in
+ // torrc are user-provided
+
+ // what we should(?) do once we excise tor-launcher entirely is explicitly store an int/enum in
+ // about:config that tells us which scenario we are in so we don't have to guess
+
+ let defaultBridgeType = Services.prefs.getCharPref(
+ TorStrings.preferenceKeys.defaultBridgeType,
+ null
+ );
+
+ // check if source is BUILTIN
+ if (defaultBridgeType) {
+ this._bridgeStrings = this._readDefaultBridges(defaultBridgeType);
+ this._bridgeSource = TorBridgeSource.BUILTIN;
+ this._selectedDefaultBridgeType = defaultBridgeType;
+ return;
+ }
+
+ let torrcBridges = this._readTorrcBridges();
+
+ // no stored bridges means no bridge is in use
+ if (torrcBridges.length == 0) {
+ this._bridgeStrings = [];
+ this._bridgeSource = TorBridgeSource.NONE;
+ return;
+ }
+
+ let bridgedbBridges = this._readBridgeDBBridges();
+
+ // if these two lists are equal then we got our bridges from bridgedb
+ // ie: same element in identical order
+ let arraysEqual = (left, right) => {
+ if (left.length != right.length) {
+ return false;
+ }
+ const length = left.length;
+ for (let i = 0; i < length; ++i) {
+ if (left[i] != right[i]) {
+ return false;
+ }
+ }
+ return true;
+ };
+
+ // agreement between prefs and torrc means bridgedb bridges
+ if (arraysEqual(torrcBridges, bridgedbBridges)) {
+ this._bridgeStrings = torrcBridges;
+ this._bridgeSource = TorBridgeSource.BRIDGEDB;
+ return;
+ }
+
+ // otherwise they must be user provided
+ this._bridgeStrings = torrcBridges;
+ this._bridgeSource = TorBridgeSource.USERPROVIDED;
+ }
+
+ writeSettings() {
+ let settingsObject = new Map();
+
+ // init tor bridge settings to null
+ settingsObject.set(TorStrings.configKeys.useBridges, null);
+ settingsObject.set(TorStrings.configKeys.bridgeList, null);
+
+ // clear bridge related firefox prefs
+ Services.prefs.setCharPref(TorStrings.preferenceKeys.defaultBridgeType, "");
+ let bridgeBranch = Services.prefs.getBranch(
+ `${TorStrings.preferenceBranches.bridgeDBBridges}`
+ );
+ let bridgeBranchPrefs = bridgeBranch.getChildList("", {});
+ for (const pref of bridgeBranchPrefs) {
+ Services.prefs.clearUserPref(
+ `${TorStrings.preferenceBranches.bridgeDBBridges}${pref}`
+ );
+ }
+
+ switch (this._bridgeSource) {
+ case TorBridgeSource.BUILTIN:
+ // set builtin bridge type to use in prefs
+ Services.prefs.setCharPref(
+ TorStrings.preferenceKeys.defaultBridgeType,
+ this._selectedDefaultBridgeType
+ );
+ break;
+ case TorBridgeSource.BRIDGEDB:
+ // save bridges off to prefs
+ for (let i = 0; i < this.bridgeStringsArray.length; ++i) {
+ Services.prefs.setCharPref(
+ `${TorStrings.preferenceBranches.bridgeDBBridges}${i}`,
+ this.bridgeStringsArray[i]
+ );
+ }
+ break;
+ }
+
+ // write over our bridge list if bridges are enabled
+ if (this._bridgeSource != TorBridgeSource.NONE) {
+ settingsObject.set(TorStrings.configKeys.useBridges, true);
+ settingsObject.set(
+ TorStrings.configKeys.bridgeList,
+ this.bridgeStringsArray
+ );
+ }
+ TorProtocolService.writeSettings(settingsObject);
+ }
+}
+
+function makeTorBridgeSettingsNone() {
+ return new TorBridgeSettings();
+}
+
+function makeTorBridgeSettingsBuiltin(aBridgeType) {
+ let retval = new TorBridgeSettings();
+ retval._bridgeSource = TorBridgeSource.BUILTIN;
+ retval._selectedDefaultBridgeType = aBridgeType;
+ retval._bridgeStrings = retval._readDefaultBridges(aBridgeType);
+
+ return retval;
+}
+
+function makeTorBridgeSettingsBridgeDB(aBridges) {
+ let retval = new TorBridgeSettings();
+ retval._bridgeSource = TorBridgeSource.BRIDGEDB;
+ retval._selectedDefaultBridgeType = null;
+ retval._bridgeStrings = aBridges;
+
+ return retval;
+}
+
+function makeTorBridgeSettingsUserProvided(aBridges) {
+ let retval = new TorBridgeSettings();
+ retval._bridgeSource = TorBridgeSource.USERPROVIDED;
+ retval._selectedDefaultBridgeType = null;
+ retval._bridgeStrings = aBridges;
+
+ return retval;
+}
diff --git a/browser/components/torpreferences/content/torCategory.inc.xul b/browser/components/torpreferences/content/torCategory.inc.xul
new file mode 100644
index 000000000000..746059358d5f
--- /dev/null
+++ b/browser/components/torpreferences/content/torCategory.inc.xul
@@ -0,0 +1,8 @@
+<richlistitem id="category-tor"
+ class="category"
+ value="paneTor"
+ helpTopic="prefs-tor"
+ align="center">
+ <image class="category-icon"/>
+ <label id="torPreferences-labelCategory" class="category-name" flex="1" value="Tor"/>
+</richlistitem>
diff --git a/browser/components/torpreferences/content/torFirewallSettings.jsm b/browser/components/torpreferences/content/torFirewallSettings.jsm
new file mode 100644
index 000000000000..e77f18ef2fae
--- /dev/null
+++ b/browser/components/torpreferences/content/torFirewallSettings.jsm
@@ -0,0 +1,72 @@
+"use strict";
+
+var EXPORTED_SYMBOLS = [
+ "TorFirewallSettings",
+ "makeTorFirewallSettingsNone",
+ "makeTorFirewallSettingsCustom",
+];
+
+const { TorProtocolService } = ChromeUtils.import(
+ "resource:///modules/TorProtocolService.jsm"
+);
+const { TorStrings } = ChromeUtils.import("resource:///modules/TorStrings.jsm");
+const { parseAddrPortList } = ChromeUtils.import(
+ "chrome://browser/content/torpreferences/parseFunctions.jsm"
+);
+
+class TorFirewallSettings {
+ constructor() {
+ this._allowedPorts = [];
+ }
+
+ get portsConfigurationString() {
+ let portStrings = this._allowedPorts.map(port => `*:${port}`);
+ return portStrings.join(",");
+ }
+
+ get commaSeparatedListString() {
+ return this._allowedPorts.join(",");
+ }
+
+ get hasPorts() {
+ return this._allowedPorts.length > 0;
+ }
+
+ readSettings() {
+ let addressPortList = TorProtocolService.readStringSetting(
+ TorStrings.configKeys.reachableAddresses
+ );
+
+ let allowedPorts = [];
+ if (addressPortList) {
+ allowedPorts = parseAddrPortList(addressPortList);
+ }
+ this._allowedPorts = allowedPorts;
+ }
+
+ writeSettings() {
+ let settingsObject = new Map();
+
+ // init to null so Tor daemon resets if no ports
+ settingsObject.set(TorStrings.configKeys.reachableAddresses, null);
+
+ if (this._allowedPorts.length > 0) {
+ settingsObject.set(
+ TorStrings.configKeys.reachableAddresses,
+ this.portsConfigurationString
+ );
+ }
+
+ TorProtocolService.writeSettings(settingsObject);
+ }
+}
+
+function makeTorFirewallSettingsNone() {
+ return new TorFirewallSettings();
+}
+
+function makeTorFirewallSettingsCustom(aPortsList) {
+ let retval = new TorFirewallSettings();
+ retval._allowedPorts = aPortsList;
+ return retval;
+}
diff --git a/browser/components/torpreferences/content/torLogDialog.jsm b/browser/components/torpreferences/content/torLogDialog.jsm
new file mode 100644
index 000000000000..13a8c42884d2
--- /dev/null
+++ b/browser/components/torpreferences/content/torLogDialog.jsm
@@ -0,0 +1,65 @@
+"use strict";
+
+var EXPORTED_SYMBOLS = ["TorLogDialog"];
+
+const { TorProtocolService } = ChromeUtils.import(
+ "resource:///modules/TorProtocolService.jsm"
+);
+const { TorStrings } = ChromeUtils.import("resource:///modules/TorStrings.jsm");
+
+class TorLogDialog {
+ constructor() {
+ this._dialog = null;
+ this._logTextarea = null;
+ this._copyLogButton = null;
+ }
+
+ static get selectors() {
+ return {
+ copyLogButton: "extra1",
+ logTextarea: "textarea#torPreferences-torDialog-textarea",
+ };
+ }
+
+ _populateXUL(aDialog) {
+ this._dialog = aDialog;
+ this._dialog.setAttribute("title", TorStrings.settings.torLogDialogTitle);
+
+ this._logTextarea = this._dialog.querySelector(
+ TorLogDialog.selectors.logTextarea
+ );
+
+ this._copyLogButton = this._dialog.getButton(
+ TorLogDialog.selectors.copyLogButton
+ );
+ this._copyLogButton.setAttribute("label", TorStrings.settings.copyLog);
+ this._copyLogButton.addEventListener("command", () => {
+ this.copyTorLog();
+ });
+
+ this._logTextarea.value = TorProtocolService.getLog();
+ }
+
+ init(window, aDialog) {
+ // defer to later until firefox has populated the dialog with all our elements
+ window.setTimeout(() => {
+ this._populateXUL(aDialog);
+ }, 0);
+ }
+
+ copyTorLog() {
+ // Copy tor log messages to the system clipboard.
+ let clipboard = Cc["@mozilla.org/widget/clipboardhelper;1"].getService(
+ Ci.nsIClipboardHelper
+ );
+ clipboard.copyString(this._logTextarea.value);
+ }
+
+ openDialog(gSubDialog) {
+ gSubDialog.open(
+ "chrome://browser/content/torpreferences/torLogDialog.xul",
+ "resizable=yes",
+ this
+ );
+ }
+}
diff --git a/browser/components/torpreferences/content/torLogDialog.xul b/browser/components/torpreferences/content/torLogDialog.xul
new file mode 100644
index 000000000000..ae0f4b294204
--- /dev/null
+++ b/browser/components/torpreferences/content/torLogDialog.xul
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/skin/preferences/preferences.css"?>
+<?xml-stylesheet href="chrome://browser/content/torpreferences/torPreferences.css"?>
+
+<dialog id="torPreferences-torLog-dialog" type="child" class="prefwindow"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml"
+ buttons="accept,extra1"
+ role="dialog">
+ <html:textarea
+ id="torPreferences-torDialog-textarea"
+ multiline="true"
+ readonly="true"/>
+ <script type="application/javascript"><![CDATA[
+ "use strict";
+
+ let torLogDialog = window.arguments[0];
+ let dialog = document.getElementById("torPreferences-torLog-dialog");
+ torLogDialog.init(window, dialog);
+ ]]></script>
+</dialog>
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/torPane.js b/browser/components/torpreferences/content/torPane.js
new file mode 100644
index 000000000000..08de0613e1d4
--- /dev/null
+++ b/browser/components/torpreferences/content/torPane.js
@@ -0,0 +1,802 @@
+"use strict";
+
+const { TorProtocolService } = ChromeUtils.import(
+ "resource:///modules/TorProtocolService.jsm"
+);
+
+const {
+ TorBridgeSource,
+ TorBridgeSettings,
+ makeTorBridgeSettingsNone,
+ makeTorBridgeSettingsBuiltin,
+ makeTorBridgeSettingsBridgeDB,
+ makeTorBridgeSettingsUserProvided,
+} = ChromeUtils.import(
+ "chrome://browser/content/torpreferences/torBridgeSettings.jsm"
+);
+
+const {
+ TorProxyType,
+ TorProxySettings,
+ makeTorProxySettingsNone,
+ makeTorProxySettingsSocks4,
+ makeTorProxySettingsSocks5,
+ makeTorProxySettingsHTTPS,
+} = ChromeUtils.import(
+ "chrome://browser/content/torpreferences/torProxySettings.jsm"
+);
+const {
+ TorFirewallSettings,
+ makeTorFirewallSettingsNone,
+ makeTorFirewallSettingsCustom,
+} = ChromeUtils.import(
+ "chrome://browser/content/torpreferences/torFirewallSettings.jsm"
+);
+
+const { TorLogDialog } = ChromeUtils.import(
+ "chrome://browser/content/torpreferences/torLogDialog.jsm"
+);
+
+const { RequestBridgeDialog } = ChromeUtils.import(
+ "chrome://browser/content/torpreferences/requestBridgeDialog.jsm"
+);
+
+ChromeUtils.defineModuleGetter(
+ this,
+ "TorStrings",
+ "resource:///modules/TorStrings.jsm"
+);
+
+const { parsePort, parseBridgeStrings, parsePortList } = ChromeUtils.import(
+ "chrome://browser/content/torpreferences/parseFunctions.jsm"
+);
+
+/*
+ Tor Pane
+
+ Code for populating the XUL in about:preferences#tor, handling input events, interfacing with tor-launcher
+*/
+const gTorPane = (function() {
+ /* CSS selectors for all of the Tor Network DOM elements we need to access */
+ const selectors = {
+ category: {
+ title: "label#torPreferences-labelCategory",
+ },
+ torPreferences: {
+ header: "h1#torPreferences-header",
+ description: "span#torPreferences-description",
+ learnMore: "label#torPreferences-learnMore",
+ },
+ bridges: {
+ header: "h2#torPreferences-bridges-header",
+ description: "span#torPreferences-bridges-description",
+ learnMore: "label#torPreferences-bridges-learnMore",
+ useBridgeCheckbox: "checkbox#torPreferences-bridges-toggle",
+ bridgeSelectionRadiogroup:
+ "radiogroup#torPreferences-bridges-bridgeSelection",
+ builtinBridgeOption: "radio#torPreferences-bridges-radioBuiltin",
+ builtinBridgeList: "menulist#torPreferences-bridges-builtinList",
+ requestBridgeOption: "radio#torPreferences-bridges-radioRequestBridge",
+ requestBridgeButton: "button#torPreferences-bridges-buttonRequestBridge",
+ requestBridgeTextarea:
+ "textarea#torPreferences-bridges-textareaRequestBridge",
+ provideBridgeOption: "radio#torPreferences-bridges-radioProvideBridge",
+ provideBridgeDescription:
+ "description#torPreferences-bridges-descriptionProvideBridge",
+ provideBridgeTextarea:
+ "textarea#torPreferences-bridges-textareaProvideBridge",
+ },
+ advanced: {
+ header: "h2#torPreferences-advanced-header",
+ description: "span#torPreferences-advanced-description",
+ learnMore: "label#torPreferences-advanced-learnMore",
+ useProxyCheckbox: "checkbox#torPreferences-advanced-toggleProxy",
+ proxyTypeLabel: "label#torPreferences-localProxy-type",
+ proxyTypeList: "menulist#torPreferences-localProxy-builtinList",
+ proxyAddressLabel: "label#torPreferences-localProxy-address",
+ proxyAddressTextbox: "textbox#torPreferences-localProxy-textboxAddress",
+ proxyPortLabel: "label#torPreferences-localProxy-port",
+ proxyPortTextbox: "input#torPreferences-localProxy-textboxPort",
+ proxyUsernameLabel: "label#torPreferences-localProxy-username",
+ proxyUsernameTextbox: "textbox#torPreferences-localProxy-textboxUsername",
+ proxyPasswordLabel: "label#torPreferences-localProxy-password",
+ proxyPasswordTextbox: "textbox#torPreferences-localProxy-textboxPassword",
+ useFirewallCheckbox: "checkbox#torPreferences-advanced-toggleFirewall",
+ firewallAllowedPortsLabel: "label#torPreferences-advanced-allowedPorts",
+ firewallAllowedPortsTextbox:
+ "textbox#torPreferences-advanced-textboxAllowedPorts",
+ torLogsLabel: "label#torPreferences-torLogs",
+ torLogsButton: "button#torPreferences-buttonTorLogs",
+ },
+ }; /* selectors */
+
+ let retval = {
+ // cached frequently accessed DOM elements
+ _useBridgeCheckbox: null,
+ _bridgeSelectionRadiogroup: null,
+ _builtinBridgeOption: null,
+ _builtinBridgeMenulist: null,
+ _requestBridgeOption: null,
+ _requestBridgeButton: null,
+ _requestBridgeTextarea: null,
+ _provideBridgeOption: null,
+ _provideBridgeTextarea: null,
+ _useProxyCheckbox: null,
+ _proxyTypeLabel: null,
+ _proxyTypeMenulist: null,
+ _proxyAddressLabel: null,
+ _proxyAddressTextbox: null,
+ _proxyPortLabel: null,
+ _proxyPortTextbox: null,
+ _proxyUsernameLabel: null,
+ _proxyUsernameTextbox: null,
+ _proxyPasswordLabel: null,
+ _proxyPasswordTextbox: null,
+ _useFirewallCheckbox: null,
+ _allowedPortsLabel: null,
+ _allowedPortsTextbox: null,
+
+ // tor network settings
+ _bridgeSettings: null,
+ _proxySettings: null,
+ _firewallSettings: null,
+
+ // disables the provided list of elements
+ _setElementsDisabled(elements, disabled) {
+ for (let currentElement of elements) {
+ currentElement.disabled = disabled;
+ }
+ },
+
+ // populate xul with strings and cache the relevant elements
+ _populateXUL() {
+ // saves tor settings to disk when navigate away from about:preferences
+ window.addEventListener("blur", val => {
+ TorProtocolService.flushSettings();
+ });
+
+ document
+ .querySelector(selectors.category.title)
+ .setAttribute("value", TorStrings.settings.categoryTitle);
+
+ let prefpane = document.getElementById("mainPrefPane");
+
+ // Heading
+ prefpane.querySelector(selectors.torPreferences.header).innerText =
+ TorStrings.settings.torPreferencesHeading;
+ prefpane.querySelector(selectors.torPreferences.description).textContent =
+ TorStrings.settings.torPreferencesDescription;
+ {
+ let learnMore = prefpane.querySelector(
+ selectors.torPreferences.learnMore
+ );
+ learnMore.setAttribute("value", TorStrings.settings.learnMore);
+ learnMore.setAttribute(
+ "href",
+ TorStrings.settings.learnMoreTorBrowserURL
+ );
+ }
+
+ // Bridge setup
+ prefpane.querySelector(selectors.bridges.header).innerText =
+ TorStrings.settings.bridgesHeading;
+ prefpane.querySelector(selectors.bridges.description).textContent =
+ TorStrings.settings.bridgesDescription;
+ {
+ let learnMore = prefpane.querySelector(selectors.bridges.learnMore);
+ learnMore.setAttribute("value", TorStrings.settings.learnMore);
+ learnMore.setAttribute("href", TorStrings.settings.learnMoreBridgesURL);
+ }
+
+ this._useBridgeCheckbox = prefpane.querySelector(
+ selectors.bridges.useBridgeCheckbox
+ );
+ this._useBridgeCheckbox.setAttribute(
+ "label",
+ TorStrings.settings.useBridge
+ );
+ this._bridgeSelectionRadiogroup = prefpane.querySelector(
+ selectors.bridges.bridgeSelectionRadiogroup
+ );
+ this._bridgeSelectionRadiogroup.value = TorBridgeSource.BUILTIN;
+
+ // Builtin bridges
+ this._builtinBridgeOption = prefpane.querySelector(
+ selectors.bridges.builtinBridgeOption
+ );
+ this._builtinBridgeOption.setAttribute(
+ "label",
+ TorStrings.settings.selectBridge
+ );
+ this._builtinBridgeOption.setAttribute("value", TorBridgeSource.BUILTIN);
+ this._builtinBridgeMenulist = prefpane.querySelector(
+ selectors.bridges.builtinBridgeList
+ );
+
+ // Request bridge
+ this._requestBridgeOption = prefpane.querySelector(
+ selectors.bridges.requestBridgeOption
+ );
+ this._requestBridgeOption.setAttribute(
+ "label",
+ TorStrings.settings.requestBridgeFromTorProject
+ );
+ this._requestBridgeOption.setAttribute("value", TorBridgeSource.BRIDGEDB);
+ this._requestBridgeButton = prefpane.querySelector(
+ selectors.bridges.requestBridgeButton
+ );
+ this._requestBridgeButton.setAttribute(
+ "label",
+ TorStrings.settings.requestNewBridge
+ );
+ this._requestBridgeTextarea = prefpane.querySelector(
+ selectors.bridges.requestBridgeTextarea
+ );
+
+ // Provide a bridge
+ this._provideBridgeOption = prefpane.querySelector(
+ selectors.bridges.provideBridgeOption
+ );
+ this._provideBridgeOption.setAttribute(
+ "label",
+ TorStrings.settings.provideBridge
+ );
+ this._provideBridgeOption.setAttribute(
+ "value",
+ TorBridgeSource.USERPROVIDED
+ );
+ prefpane.querySelector(
+ selectors.bridges.provideBridgeDescription
+ ).textContent = TorStrings.settings.provideBridgeDirections;
+ this._provideBridgeTextarea = prefpane.querySelector(
+ selectors.bridges.provideBridgeTextarea
+ );
+ this._provideBridgeTextarea.setAttribute(
+ "placeholder",
+ TorStrings.settings.provideBridgePlaceholder
+ );
+
+ // Advanced setup
+ prefpane.querySelector(selectors.advanced.header).innerText =
+ TorStrings.settings.advancedHeading;
+ prefpane.querySelector(selectors.advanced.description).textContent =
+ TorStrings.settings.advancedDescription;
+ {
+ let learnMore = prefpane.querySelector(selectors.advanced.learnMore);
+ learnMore.setAttribute("value", TorStrings.settings.learnMore);
+ learnMore.setAttribute(
+ "href",
+ TorStrings.settings.learnMoreNetworkSettingsURL
+ );
+ }
+
+ // Local Proxy
+ this._useProxyCheckbox = prefpane.querySelector(
+ selectors.advanced.useProxyCheckbox
+ );
+ this._useProxyCheckbox.setAttribute(
+ "label",
+ TorStrings.settings.useLocalProxy
+ );
+ this._proxyTypeLabel = prefpane.querySelector(
+ selectors.advanced.proxyTypeLabel
+ );
+ this._proxyTypeLabel.setAttribute("value", TorStrings.settings.proxyType);
+
+ let mockProxies = [
+ {
+ value: TorProxyType.SOCKS4,
+ label: TorStrings.settings.proxyTypeSOCKS4,
+ },
+ {
+ value: TorProxyType.SOCKS5,
+ label: TorStrings.settings.proxyTypeSOCKS5,
+ },
+ { value: TorProxyType.HTTPS, label: TorStrings.settings.proxyTypeHTTP },
+ ];
+ this._proxyTypeMenulist = prefpane.querySelector(
+ selectors.advanced.proxyTypeList
+ );
+ for (let currentProxy of mockProxies) {
+ let menuEntry = document.createElement("menuitem");
+ menuEntry.setAttribute("value", currentProxy.value);
+ menuEntry.setAttribute("label", currentProxy.label);
+ this._proxyTypeMenulist.querySelector("menupopup").append(menuEntry);
+ }
+
+ this._proxyAddressLabel = prefpane.querySelector(
+ selectors.advanced.proxyAddressLabel
+ );
+ this._proxyAddressLabel.setAttribute(
+ "value",
+ TorStrings.settings.proxyAddress
+ );
+ this._proxyAddressTextbox = prefpane.querySelector(
+ selectors.advanced.proxyAddressTextbox
+ );
+ this._proxyAddressTextbox.setAttribute(
+ "placeholder",
+ TorStrings.settings.proxyAddressPlaceholder
+ );
+ this._proxyPortLabel = prefpane.querySelector(
+ selectors.advanced.proxyPortLabel
+ );
+ this._proxyPortLabel.setAttribute("value", TorStrings.settings.proxyPort);
+ this._proxyPortTextbox = prefpane.querySelector(
+ selectors.advanced.proxyPortTextbox
+ );
+ this._proxyUsernameLabel = prefpane.querySelector(
+ selectors.advanced.proxyUsernameLabel
+ );
+ this._proxyUsernameLabel.setAttribute(
+ "value",
+ TorStrings.settings.proxyUsername
+ );
+ this._proxyUsernameTextbox = prefpane.querySelector(
+ selectors.advanced.proxyUsernameTextbox
+ );
+ this._proxyUsernameTextbox.setAttribute(
+ "placeholder",
+ TorStrings.settings.proxyUsernamePasswordPlaceholder
+ );
+ this._proxyPasswordLabel = prefpane.querySelector(
+ selectors.advanced.proxyPasswordLabel
+ );
+ this._proxyPasswordLabel.setAttribute(
+ "value",
+ TorStrings.settings.proxyPassword
+ );
+ this._proxyPasswordTextbox = prefpane.querySelector(
+ selectors.advanced.proxyPasswordTextbox
+ );
+ this._proxyPasswordTextbox.setAttribute(
+ "placeholder",
+ TorStrings.settings.proxyUsernamePasswordPlaceholder
+ );
+
+ // Local firewall
+ this._useFirewallCheckbox = prefpane.querySelector(
+ selectors.advanced.useFirewallCheckbox
+ );
+ this._useFirewallCheckbox.setAttribute(
+ "label",
+ TorStrings.settings.useFirewall
+ );
+ this._allowedPortsLabel = prefpane.querySelector(
+ selectors.advanced.firewallAllowedPortsLabel
+ );
+ this._allowedPortsLabel.setAttribute(
+ "value",
+ TorStrings.settings.allowedPorts
+ );
+ this._allowedPortsTextbox = prefpane.querySelector(
+ selectors.advanced.firewallAllowedPortsTextbox
+ );
+ this._allowedPortsTextbox.setAttribute(
+ "placeholder",
+ TorStrings.settings.allowedPortsPlaceholder
+ );
+
+ // Tor logs
+ prefpane
+ .querySelector(selectors.advanced.torLogsLabel)
+ .setAttribute("value", TorStrings.settings.showTorDaemonLogs);
+ prefpane
+ .querySelector(selectors.advanced.torLogsButton)
+ .setAttribute("label", TorStrings.settings.showLogs);
+
+ // Disable all relevant elements by default
+ this._setElementsDisabled(
+ [
+ this._builtinBridgeOption,
+ this._builtinBridgeMenulist,
+ this._requestBridgeOption,
+ this._requestBridgeButton,
+ this._requestBridgeTextarea,
+ this._provideBridgeOption,
+ this._provideBridgeTextarea,
+ this._proxyTypeLabel,
+ this._proxyTypeMenulist,
+ this._proxyAddressLabel,
+ this._proxyAddressTextbox,
+ this._proxyPortLabel,
+ this._proxyPortTextbox,
+ this._proxyUsernameLabel,
+ this._proxyUsernameTextbox,
+ this._proxyPasswordLabel,
+ this._proxyPasswordTextbox,
+ this._allowedPortsLabel,
+ this._allowedPortsTextbox,
+ ],
+ true
+ );
+
+ // load bridge settings
+ let torBridgeSettings = new TorBridgeSettings();
+ torBridgeSettings.readSettings();
+
+ // populate the bridge list
+ for (let currentBridge of TorBridgeSettings.defaultBridgeTypes) {
+ let menuEntry = document.createElement("menuitem");
+ menuEntry.setAttribute("value", currentBridge);
+ menuEntry.setAttribute("label", currentBridge);
+ this._builtinBridgeMenulist
+ .querySelector("menupopup")
+ .append(menuEntry);
+ }
+
+ this.onSelectBridgeOption(torBridgeSettings.bridgeSource);
+ this.onToggleBridge(
+ torBridgeSettings.bridgeSource != TorBridgeSource.NONE
+ );
+ switch (torBridgeSettings.bridgeSource) {
+ case TorBridgeSource.NONE:
+ break;
+ case TorBridgeSource.BUILTIN:
+ this._builtinBridgeMenulist.value =
+ torBridgeSettings.selectedDefaultBridgeType;
+ break;
+ case TorBridgeSource.BRIDGEDB:
+ this._requestBridgeTextarea.value = torBridgeSettings.bridgeStrings;
+ break;
+ case TorBridgeSource.USERPROVIDED:
+ this._provideBridgeTextarea.value = torBridgeSettings.bridgeStrings;
+ break;
+ }
+
+ this._bridgeSettings = torBridgeSettings;
+
+ // load proxy settings
+ let torProxySettings = new TorProxySettings();
+ torProxySettings.readSettings();
+
+ if (torProxySettings.type != TorProxyType.NONE) {
+ this.onToggleProxy(true);
+ this.onSelectProxyType(torProxySettings.type);
+ this._proxyAddressTextbox.value = torProxySettings.address;
+ this._proxyPortTextbox.value = torProxySettings.port;
+ this._proxyUsernameTextbox.value = torProxySettings.username;
+ this._proxyPasswordTextbox.value = torProxySettings.password;
+ }
+
+ this._proxySettings = torProxySettings;
+
+ // load firewall settings
+ let torFirewallSettings = new TorFirewallSettings();
+ torFirewallSettings.readSettings();
+
+ if (torFirewallSettings.hasPorts) {
+ this.onToggleFirewall(true);
+ this._allowedPortsTextbox.value =
+ torFirewallSettings.commaSeparatedListString;
+ }
+
+ this._firewallSettings = torFirewallSettings;
+ },
+
+ init() {
+ this._populateXUL();
+ },
+
+ //
+ // Callbacks
+ //
+
+ // callback when using bridges toggled
+ onToggleBridge(enabled) {
+ this._useBridgeCheckbox.checked = enabled;
+ let disabled = !enabled;
+
+ // first disable all the bridge related elements
+ this._setElementsDisabled(
+ [
+ this._builtinBridgeOption,
+ this._builtinBridgeMenulist,
+ this._requestBridgeOption,
+ this._requestBridgeButton,
+ this._requestBridgeTextarea,
+ this._provideBridgeOption,
+ this._provideBridgeTextarea,
+ ],
+ disabled
+ );
+
+ // and selectively re-enable based on the radiogroup's current value
+ if (enabled) {
+ this.onSelectBridgeOption(this._bridgeSelectionRadiogroup.value);
+ } else {
+ this.onSelectBridgeOption(TorBridgeSource.NONE);
+ }
+ return this;
+ },
+
+ // callback when a bridge option is selected
+ onSelectBridgeOption(source) {
+ // disable all of the bridge elements under radio buttons
+ this._setElementsDisabled(
+ [
+ this._builtinBridgeMenulist,
+ this._requestBridgeButton,
+ this._requestBridgeTextarea,
+ this._provideBridgeTextarea,
+ ],
+ true
+ );
+
+ if (source != TorBridgeSource.NONE) {
+ this._bridgeSelectionRadiogroup.value = source;
+ }
+
+ switch (source) {
+ case TorBridgeSource.BUILTIN: {
+ this._setElementsDisabled([this._builtinBridgeMenulist], false);
+ break;
+ }
+ case TorBridgeSource.BRIDGEDB: {
+ this._setElementsDisabled(
+ [this._requestBridgeButton, this._requestBridgeTextarea],
+ false
+ );
+ break;
+ }
+ case TorBridgeSource.USERPROVIDED: {
+ this._setElementsDisabled([this._provideBridgeTextarea], false);
+ break;
+ }
+ }
+ return this;
+ },
+
+ // called when the request brige button is activated
+ onRequestBridge() {
+ let requestBridgeDialog = new RequestBridgeDialog();
+ requestBridgeDialog.openDialog(
+ gSubDialog,
+ this._proxySettings.proxyURI,
+ aBridges => {
+ if (aBridges.length > 0) {
+ let bridgeSettings = makeTorBridgeSettingsBridgeDB(aBridges);
+ bridgeSettings.writeSettings();
+ this._bridgeSettings = bridgeSettings;
+
+ this._requestBridgeTextarea.value = bridgeSettings.bridgeStrings;
+ }
+ }
+ );
+ return this;
+ },
+
+ // pushes bridge settings from UI to tor
+ onUpdateBridgeSettings() {
+ let bridgeSettings = null;
+
+ let source = this._useBridgeCheckbox.checked
+ ? this._bridgeSelectionRadiogroup.value
+ : TorBridgeSource.NONE;
+ switch (source) {
+ case TorBridgeSource.NONE: {
+ bridgeSettings = makeTorBridgeSettingsNone();
+ break;
+ }
+ case TorBridgeSource.BUILTIN: {
+ // if there is a built-in bridge already selected, use that
+ let bridgeType = this._builtinBridgeMenulist.value;
+ if (bridgeType) {
+ bridgeSettings = makeTorBridgeSettingsBuiltin(bridgeType);
+ } else {
+ bridgeSettings = makeTorBridgeSettingsNone();
+ }
+ break;
+ }
+ case TorBridgeSource.BRIDGEDB: {
+ // if there are bridgedb bridges saved in the text area, use them
+ let bridgeStrings = this._requestBridgeTextarea.value;
+ if (bridgeStrings) {
+ let bridgeStringList = parseBridgeStrings(bridgeStrings);
+ bridgeSettings = makeTorBridgeSettingsBridgeDB(bridgeStringList);
+ } else {
+ bridgeSettings = makeTorBridgeSettingsNone();
+ }
+ break;
+ }
+ case TorBridgeSource.USERPROVIDED: {
+ // if bridges already exist in the text area, use them
+ let bridgeStrings = this._provideBridgeTextarea.value;
+ if (bridgeStrings) {
+ let bridgeStringList = parseBridgeStrings(bridgeStrings);
+ bridgeSettings = makeTorBridgeSettingsUserProvided(
+ bridgeStringList
+ );
+ } else {
+ bridgeSettings = makeTorBridgeSettingsNone();
+ }
+ break;
+ }
+ }
+ bridgeSettings.writeSettings();
+ this._bridgeSettings = bridgeSettings;
+ return this;
+ },
+
+ // callback when proxy is toggled
+ onToggleProxy(enabled) {
+ this._useProxyCheckbox.checked = enabled;
+ let disabled = !enabled;
+
+ this._setElementsDisabled(
+ [
+ this._proxyTypeLabel,
+ this._proxyTypeMenulist,
+ this._proxyAddressLabel,
+ this._proxyAddressTextbox,
+ this._proxyPortLabel,
+ this._proxyPortTextbox,
+ this._proxyUsernameLabel,
+ this._proxyUsernameTextbox,
+ this._proxyPasswordLabel,
+ this._proxyPasswordTextbox,
+ ],
+ disabled
+ );
+ this.onSelectProxyType(this._proxyTypeMenulist.value);
+ return this;
+ },
+
+ // callback when proxy type is changed
+ onSelectProxyType(value) {
+ if (value == "") {
+ value = TorProxyType.NONE;
+ }
+ this._proxyTypeMenulist.value = value;
+ switch (value) {
+ case TorProxyType.NONE: {
+ this._setElementsDisabled(
+ [
+ this._proxyAddressLabel,
+ this._proxyAddressTextbox,
+ this._proxyPortLabel,
+ this._proxyPortTextbox,
+ this._proxyUsernameLabel,
+ this._proxyUsernameTextbox,
+ this._proxyPasswordLabel,
+ this._proxyPasswordTextbox,
+ ],
+ true
+ ); // DISABLE
+
+ this._proxyAddressTextbox.value = "";
+ this._proxyPortTextbox.value = "";
+ this._proxyUsernameTextbox.value = "";
+ this._proxyPasswordTextbox.value = "";
+ break;
+ }
+ case TorProxyType.SOCKS4: {
+ this._setElementsDisabled(
+ [
+ this._proxyAddressLabel,
+ this._proxyAddressTextbox,
+ this._proxyPortLabel,
+ this._proxyPortTextbox,
+ ],
+ false
+ ); // ENABLE
+ this._setElementsDisabled(
+ [
+ this._proxyUsernameLabel,
+ this._proxyUsernameTextbox,
+ this._proxyPasswordLabel,
+ this._proxyPasswordTextbox,
+ ],
+ true
+ ); // DISABLE
+
+ this._proxyUsernameTextbox.value = "";
+ this._proxyPasswordTextbox.value = "";
+ break;
+ }
+ case TorProxyType.SOCKS5:
+ case TorProxyType.HTTPS: {
+ this._setElementsDisabled(
+ [
+ this._proxyAddressLabel,
+ this._proxyAddressTextbox,
+ this._proxyPortLabel,
+ this._proxyPortTextbox,
+ this._proxyUsernameLabel,
+ this._proxyUsernameTextbox,
+ this._proxyPasswordLabel,
+ this._proxyPasswordTextbox,
+ ],
+ false
+ ); // ENABLE
+ break;
+ }
+ }
+ return this;
+ },
+
+ // pushes proxy settings from UI to tor
+ onUpdateProxySettings() {
+ const proxyType = this._useProxyCheckbox.checked
+ ? this._proxyTypeMenulist.value
+ : TorProxyType.NONE;
+ const addressString = this._proxyAddressTextbox.value;
+ const portString = this._proxyPortTextbox.value;
+ const usernameString = this._proxyUsernameTextbox.value;
+ const passwordString = this._proxyPasswordTextbox.value;
+
+ let proxySettings = null;
+
+ switch (proxyType) {
+ case TorProxyType.NONE:
+ proxySettings = makeTorProxySettingsNone();
+ break;
+ case TorProxyType.SOCKS4:
+ proxySettings = makeTorProxySettingsSocks4(
+ addressString,
+ parsePort(portString)
+ );
+ break;
+ case TorProxyType.SOCKS5:
+ proxySettings = makeTorProxySettingsSocks5(
+ addressString,
+ parsePort(portString),
+ usernameString,
+ passwordString
+ );
+ break;
+ case TorProxyType.HTTPS:
+ proxySettings = makeTorProxySettingsHTTPS(
+ addressString,
+ parsePort(portString),
+ usernameString,
+ passwordString
+ );
+ break;
+ }
+
+ proxySettings.writeSettings();
+ this._proxySettings = proxySettings;
+ return this;
+ },
+
+ // callback when firewall proxy is toggled
+ onToggleFirewall(enabled) {
+ this._useFirewallCheckbox.checked = enabled;
+ let disabled = !enabled;
+
+ this._setElementsDisabled(
+ [this._allowedPortsLabel, this._allowedPortsTextbox],
+ disabled
+ );
+
+ return this;
+ },
+
+ // pushes firewall settings from UI to tor
+ onUpdateFirewallSettings() {
+ let portListString = this._useFirewallCheckbox.checked
+ ? this._allowedPortsTextbox.value
+ : "";
+ let firewallSettings = null;
+
+ if (portListString) {
+ firewallSettings = makeTorFirewallSettingsCustom(
+ parsePortList(portListString)
+ );
+ } else {
+ firewallSettings = makeTorFirewallSettingsNone();
+ }
+
+ firewallSettings.writeSettings();
+ this._firewallSettings = firewallSettings;
+ return this;
+ },
+
+ onViewTorLogs() {
+ let torLogDialog = new TorLogDialog();
+ torLogDialog.openDialog(gSubDialog);
+ },
+ };
+ return retval;
+})(); /* gTorPane */
diff --git a/browser/components/torpreferences/content/torPane.xul b/browser/components/torpreferences/content/torPane.xul
new file mode 100644
index 000000000000..298c148bcbf2
--- /dev/null
+++ b/browser/components/torpreferences/content/torPane.xul
@@ -0,0 +1,119 @@
+<!-- Tor panel -->
+
+<script type="application/javascript"
+ src="chrome://browser/content/torpreferences/torPane.js"/>
+
+<hbox id="torPreferencesCategory"
+ class="subcategory"
+ hidden="true"
+ data-category="paneTor">
+ <html:h1 id="torPreferences-header"/>
+</hbox>
+
+<groupbox data-category="paneTor" >
+ <description flex="1">
+ <html:span id="torPreferences-description" class="tail-with-learn-more"/>
+ <label id="torPreferences-learnMore" class="learnMore text-link" is="text-link"/>
+ </description>
+</groupbox>
+
+<!-- Bridges -->
+<groupbox id="torPreferences-bridges-group" data-category="paneTor" >
+ <html:h2 id="torPreferences-bridges-header"/>
+ <description flex="1">
+ <html:span id="torPreferences-bridges-description" class="tail-with-learn-more"/>
+ <label id="torPreferences-bridges-learnMore" class="learnMore text-link" is="text-link"/>
+ </description>
+ <checkbox id="torPreferences-bridges-toggle" oncommand="gTorPane.onToggleBridge(this.checked).onUpdateBridgeSettings();"/>
+ <radiogroup id="torPreferences-bridges-bridgeSelection"
+ oncommand="gTorPane.onSelectBridgeOption(this.value).onUpdateBridgeSettings();">
+ <hbox class="indent">
+ <radio id="torPreferences-bridges-radioBuiltin"/>
+ <spacer flex="1"/>
+ <menulist id="torPreferences-bridges-builtinList" class="torMarginFix" oncommand="gTorPane.onUpdateBridgeSettings();">
+ <menupopup/>
+ </menulist>
+ </hbox>
+ <vbox class="indent">
+ <hbox>
+ <radio id="torPreferences-bridges-radioRequestBridge"/>
+ <space flex="1"/>
+ <button id="torPreferences-bridges-buttonRequestBridge" class="torMarginFix" oncommand="gTorPane.onRequestBridge();"/>
+ </hbox>
+ <html:textarea
+ id="torPreferences-bridges-textareaRequestBridge"
+ class="indent torMarginFix"
+ multiline="true"
+ rows="3"
+ readonly="true"/>
+ </vbox>
+ <hbox class="indent" flex="1">
+ <vbox flex="1">
+ <radio id="torPreferences-bridges-radioProvideBridge"/>
+ <description id="torPreferences-bridges-descriptionProvideBridge" class="indent"/>
+ <html:textarea
+ id="torPreferences-bridges-textareaProvideBridge"
+ class="indent torMarginFix"
+ multiline="true"
+ rows="3"
+ onblur="gTorPane.onUpdateBridgeSettings();"/>
+ </vbox>
+ </hbox>
+ </radiogroup>
+</groupbox>
+
+<!-- Advanced -->
+<groupbox id="torPreferences-advanced-group" data-category="paneTor">
+ <html:h2 id="torPreferences-advanced-header"/>
+ <description flex="1">
+ <html:span id="torPreferences-advanced-description" class="tail-with-learn-more"/>
+ <label id="torPreferences-advanced-learnMore" class="learnMore text-link" is="text-link"/>
+ </description>
+ <grid flex="1">
+ <columns>
+ <column flex="0"/>
+ <column flex="1"/>
+ </columns>
+ <rows>
+ <!-- Local Proxy -->
+ <checkbox id="torPreferences-advanced-toggleProxy" oncommand="gTorPane.onToggleProxy(this.checked).onUpdateProxySettings();"/>
+ <row class="indent" align="center">
+ <label id="torPreferences-localProxy-type"/>
+ <hbox>
+ <spacer flex="1"/>
+ <menulist id="torPreferences-localProxy-builtinList" class="torMarginFix" oncommand="gTorPane.onSelectProxyType(this.value).onUpdateProxySettings();">
+ <menupopup/>
+ </menulist>
+ </hbox>
+ </row>
+ <row class="indent" align="center">
+ <label id="torPreferences-localProxy-address"/>
+ <hbox align="center">
+ <textbox id="torPreferences-localProxy-textboxAddress" class="torMarginFix" flex="4" onblur="gTorPane.onUpdateProxySettings();"/>
+ <label id="torPreferences-localProxy-port"/>
+ <!-- proxy-port-input class style pulled from preferences.css and used in the vanilla proxy setup menu -->
+ <html:input id="torPreferences-localProxy-textboxPort" class="proxy-port-input torMarginFix" hidespinbuttons="true" type="number" min="0" max="65535" maxlength="5" onblur="gTorPane.onUpdateProxySettings();"/>
+ </hbox>
+ </row>
+ <row class="indent" align="center">
+ <label id="torPreferences-localProxy-username"/>
+ <hbox align="center">
+ <textbox id="torPreferences-localProxy-textboxUsername" class="torMarginFix" flex="1" onblur="gTorPane.onUpdateProxySettings();"/>
+ <label id="torPreferences-localProxy-password"/>
+ <textbox id="torPreferences-localProxy-textboxPassword" class="torMarginFix" type="password" flex="1" onblur="gTorPane.onUpdateProxySettings();"/>
+ </hbox>
+ </row>
+ <!-- Firewall -->
+ <checkbox id="torPreferences-advanced-toggleFirewall" oncommand="gTorPane.onToggleFirewall(this.checked).onUpdateFirewallSettings();"/>
+ <row class="indent" align="center">
+ <label id="torPreferences-advanced-allowedPorts"/>
+ <textbox id="torPreferences-advanced-textboxAllowedPorts" class="torMarginFix" value="80,443" onblur="gTorPane.onUpdateFirewallSettings();"/>
+ </row>
+ </rows>
+ </grid>
+ <hbox id="torPreferences-torDaemon-hbox" align="center">
+ <label id="torPreferences-torLogs"/>
+ <spacer flex="1"/>
+ <button id="torPreferences-buttonTorLogs" class="torMarginFix" oncommand="gTorPane.onViewTorLogs();"/>
+ </hbox>
+</groupbox>
diff --git a/browser/components/torpreferences/content/torPreferences.css b/browser/components/torpreferences/content/torPreferences.css
new file mode 100644
index 000000000000..19c7421cd647
--- /dev/null
+++ b/browser/components/torpreferences/content/torPreferences.css
@@ -0,0 +1,63 @@
+#category-tor > .category-icon {
+ list-style-image: url("chrome://browser/content/torpreferences/torPreferencesIcon.svg");
+}
+
+hbox#torPreferences-torDaemon-hbox {
+ margin-top: 20px;
+}
+
+description#torPreferences-requestBridge-description {
+ /*margin-bottom: 1em;*/
+ min-height: 2em;
+}
+
+image#torPreferences-requestBridge-captchaImage {
+ margin: 1em;
+ min-height: 125px;
+}
+
+button#torPreferences-requestBridge-refreshCaptchaButton {
+ min-width: initial;
+}
+
+dialog#torPreferences-requestBridge-dialog > hbox
+{
+ margin-bottom: 1em;
+}
+
+/*
+ Various elements that really should be lining up don't because they have inconsistent margins
+*/
+.torMarginFix
+{
+ margin-left : 4px;
+ margin-right : 4px;
+}
+
+/*
+ This hbox is hidden by css here by default so that the
+ xul dialog allocates enough screen space for the error message
+ element, otherwise it gets cut off since dialog's overflow is hidden
+*/
+hbox#torPreferences-requestBridge-incorrectCaptchaHbox {
+ visibility: hidden;
+}
+
+image#torPreferences-requestBridge-errorIcon {
+ list-style-image: url("chrome://browser/skin/warning.svg");
+}
+
+groupbox#torPreferences-bridges-group textarea {
+ white-space: pre;
+ overflow: auto;
+}
+
+textarea#torPreferences-torDialog-textarea {
+ -moz-box-flex: 1;
+ font-family: monospace;
+ font-size: 0.8em;
+ white-space: pre;
+ overflow: auto;
+ /* 10 lines */
+ min-height: 20em;
+}
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/torPreferencesIcon.svg b/browser/components/torpreferences/content/torPreferencesIcon.svg
new file mode 100644
index 000000000000..d7895f1107c5
--- /dev/null
+++ b/browser/components/torpreferences/content/torPreferencesIcon.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+ <g fill="context-fill" fill-opacity="context-fill-opacity" fill-rule="nonzero">
+ <path d="M12.0246161,21.8174863 L12.0246161,20.3628098 C16.6324777,20.3495038 20.3634751,16.6108555 20.3634751,11.9996673 C20.3634751,7.38881189 16.6324777,3.65016355 12.0246161,3.63685757 L12.0246161,2.18218107 C17.4358264,2.1958197 21.8178189,6.58546322 21.8178189,11.9996673 C21.8178189,17.4142042 17.4358264,21.8041803 12.0246161,21.8174863 L12.0246161,21.8174863 Z M12.0246161,16.7259522 C14.623607,16.7123136 16.7272828,14.6023175 16.7272828,11.9996673 C16.7272828,9.39734991 14.623607,7.28735377 12.0246161,7.27371516 L12.0246161,5.81937131 C15.4272884,5.8326773 18.1819593,8.59400123 18.1819593,11.9996673 C18.1819593,15.4056661 15.4272884,18.1669901 12.0246161,18.1802961 L12.0246161,16.7259522 Z M12.0246161,9.45556355 C13.4187503,9.46886953 14.5454344,10.6022066 14.5454344,11.9996673 C14.5454344,13.3974608 13.4187503,14.5307978 12.0246161,14.5441038 L12.0246161,9.45556355 Z M0,11.9996673 C0,18.6273771 5.37229031,24 12,24 C18.6273771,24 24,18.6273771 24,11.9996673 C24,5.37229031
18.6273771,0 12,0 C5.37229031,0 0,5.37229031 0,11.9996673 Z"/>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/torProxySettings.jsm b/browser/components/torpreferences/content/torProxySettings.jsm
new file mode 100644
index 000000000000..98bb5e8d5cbf
--- /dev/null
+++ b/browser/components/torpreferences/content/torProxySettings.jsm
@@ -0,0 +1,245 @@
+"use strict";
+
+var EXPORTED_SYMBOLS = [
+ "TorProxyType",
+ "TorProxySettings",
+ "makeTorProxySettingsNone",
+ "makeTorProxySettingsSocks4",
+ "makeTorProxySettingsSocks5",
+ "makeTorProxySettingsHTTPS",
+];
+
+const { TorProtocolService } = ChromeUtils.import(
+ "resource:///modules/TorProtocolService.jsm"
+);
+const { TorStrings } = ChromeUtils.import("resource:///modules/TorStrings.jsm");
+const { parseAddrPort, parseUsernamePassword } = ChromeUtils.import(
+ "chrome://browser/content/torpreferences/parseFunctions.jsm"
+);
+
+const TorProxyType = {
+ NONE: "NONE",
+ SOCKS4: "SOCKS4",
+ SOCKS5: "SOCKS5",
+ HTTPS: "HTTPS",
+};
+
+class TorProxySettings {
+ constructor() {
+ this._proxyType = TorProxyType.NONE;
+ this._proxyAddress = undefined;
+ this._proxyPort = undefined;
+ this._proxyUsername = undefined;
+ this._proxyPassword = undefined;
+ }
+
+ get type() {
+ return this._proxyType;
+ }
+ get address() {
+ return this._proxyAddress;
+ }
+ get port() {
+ return this._proxyPort;
+ }
+ get username() {
+ return this._proxyUsername;
+ }
+ get password() {
+ return this._proxyPassword;
+ }
+ get proxyURI() {
+ switch (this._proxyType) {
+ case TorProxyType.SOCKS4:
+ return `socks4a://${this._proxyAddress}:${this._proxyPort}`;
+ case TorProxyType.SOCKS5:
+ if (this._proxyUsername) {
+ return `socks5://${this._proxyUsername}:${this._proxyPassword}@${
+ this._proxyAddress
+ }:${this._proxyPort}`;
+ }
+ return `socks5://${this._proxyAddress}:${this._proxyPort}`;
+ case TorProxyType.HTTPS:
+ if (this._proxyUsername) {
+ return `http://${this._proxyUsername}:${this._proxyPassword}@${
+ this._proxyAddress
+ }:${this._proxyPort}`;
+ }
+ return `http://${this._proxyAddress}:${this._proxyPort}`;
+ }
+ return undefined;
+ }
+
+ // attempts to read proxy settings from Tor daemon
+ readSettings() {
+ // SOCKS4
+ {
+ let addressPort = TorProtocolService.readStringSetting(
+ TorStrings.configKeys.socks4Proxy
+ );
+ if (addressPort) {
+ // address+port
+ let [proxyAddress, proxyPort] = parseAddrPort(addressPort);
+
+ this._proxyType = TorProxyType.SOCKS4;
+ this._proxyAddress = proxyAddress;
+ this._proxyPort = proxyPort;
+ this._proxyUsername = "";
+ this._proxyPassword = "";
+
+ return;
+ }
+ }
+
+ // SOCKS5
+ {
+ let addressPort = TorProtocolService.readStringSetting(
+ TorStrings.configKeys.socks5Proxy
+ );
+
+ if (addressPort) {
+ // address+port
+ let [proxyAddress, proxyPort] = parseAddrPort(addressPort);
+ // username
+ let proxyUsername = TorProtocolService.readStringSetting(
+ TorStrings.configKeys.socks5ProxyUsername
+ );
+ // password
+ let proxyPassword = TorProtocolService.readStringSetting(
+ TorStrings.configKeys.socks5ProxyPassword
+ );
+
+ this._proxyType = TorProxyType.SOCKS5;
+ this._proxyAddress = proxyAddress;
+ this._proxyPort = proxyPort;
+ this._proxyUsername = proxyUsername;
+ this._proxyPassword = proxyPassword;
+
+ return;
+ }
+ }
+
+ // HTTP
+ {
+ let addressPort = TorProtocolService.readStringSetting(
+ TorStrings.configKeys.httpsProxy
+ );
+
+ if (addressPort) {
+ // address+port
+ let [proxyAddress, proxyPort] = parseAddrPort(addressPort);
+
+ // username:password
+ let proxyAuthenticator = TorProtocolService.readStringSetting(
+ TorStrings.configKeys.httpsProxyAuthenticator
+ );
+
+ let [proxyUsername, proxyPassword] = ["", ""];
+ if (proxyAuthenticator) {
+ [proxyUsername, proxyPassword] = parseUsernamePassword(
+ proxyAuthenticator
+ );
+ }
+
+ this._proxyType = TorProxyType.HTTPS;
+ this._proxyAddress = proxyAddress;
+ this._proxyPort = proxyPort;
+ this._proxyUsername = proxyUsername;
+ this._proxyPassword = proxyPassword;
+ }
+ }
+ // no proxy settings
+ } /* TorProxySettings::ReadFromTor() */
+
+ // attempts to write proxy settings to Tor daemon
+ // throws on error
+ writeSettings() {
+ let settingsObject = new Map();
+
+ // init proxy related settings to null so Tor daemon resets them
+ settingsObject.set(TorStrings.configKeys.socks4Proxy, null);
+ settingsObject.set(TorStrings.configKeys.socks5Proxy, null);
+ settingsObject.set(TorStrings.configKeys.socks5ProxyUsername, null);
+ settingsObject.set(TorStrings.configKeys.socks5ProxyPassword, null);
+ settingsObject.set(TorStrings.configKeys.httpsProxy, null);
+ settingsObject.set(TorStrings.configKeys.httpsProxyAuthenticator, null);
+
+ switch (this._proxyType) {
+ case TorProxyType.SOCKS4:
+ settingsObject.set(
+ TorStrings.configKeys.socks4Proxy,
+ `${this._proxyAddress}:${this._proxyPort}`
+ );
+ break;
+ case TorProxyType.SOCKS5:
+ settingsObject.set(
+ TorStrings.configKeys.socks5Proxy,
+ `${this._proxyAddress}:${this._proxyPort}`
+ );
+ settingsObject.set(
+ TorStrings.configKeys.socks5ProxyUsername,
+ this._proxyUsername
+ );
+ settingsObject.set(
+ TorStrings.configKeys.socks5ProxyPassword,
+ this._proxyPassword
+ );
+ break;
+ case TorProxyType.HTTPS:
+ settingsObject.set(
+ TorStrings.configKeys.httpsProxy,
+ `${this._proxyAddress}:${this._proxyPort}`
+ );
+ settingsObject.set(
+ TorStrings.configKeys.httpsProxyAuthenticator,
+ `${this._proxyUsername}:${this._proxyPassword}`
+ );
+ break;
+ }
+
+ TorProtocolService.writeSettings(settingsObject);
+ } /* TorProxySettings::WriteToTor() */
+}
+
+// factory methods for our various supported proxies
+function makeTorProxySettingsNone() {
+ return new TorProxySettings();
+}
+
+function makeTorProxySettingsSocks4(aProxyAddress, aProxyPort) {
+ let retval = new TorProxySettings();
+ retval._proxyType = TorProxyType.SOCKS4;
+ retval._proxyAddress = aProxyAddress;
+ retval._proxyPort = aProxyPort;
+ return retval;
+}
+
+function makeTorProxySettingsSocks5(
+ aProxyAddress,
+ aProxyPort,
+ aProxyUsername,
+ aProxyPassword
+) {
+ let retval = new TorProxySettings();
+ retval._proxyType = TorProxyType.SOCKS5;
+ retval._proxyAddress = aProxyAddress;
+ retval._proxyPort = aProxyPort;
+ retval._proxyUsername = aProxyUsername;
+ retval._proxyPassword = aProxyPassword;
+ return retval;
+}
+
+function makeTorProxySettingsHTTPS(
+ aProxyAddress,
+ aProxyPort,
+ aProxyUsername,
+ aProxyPassword
+) {
+ let retval = new TorProxySettings();
+ retval._proxyType = TorProxyType.HTTPS;
+ retval._proxyAddress = aProxyAddress;
+ retval._proxyPort = aProxyPort;
+ retval._proxyUsername = aProxyUsername;
+ retval._proxyPassword = aProxyPassword;
+ return retval;
+}
diff --git a/browser/components/torpreferences/jar.mn b/browser/components/torpreferences/jar.mn
new file mode 100644
index 000000000000..44920322fe4f
--- /dev/null
+++ b/browser/components/torpreferences/jar.mn
@@ -0,0 +1,14 @@
+browser.jar:
+ content/browser/torpreferences/parseFunctions.jsm (content/parseFunctions.jsm)
+ content/browser/torpreferences/requestBridgeDialog.xul (content/requestBridgeDialog.xul)
+ content/browser/torpreferences/requestBridgeDialog.jsm (content/requestBridgeDialog.jsm)
+ content/browser/torpreferences/torBridgeSettings.jsm (content/torBridgeSettings.jsm)
+ content/browser/torpreferences/torCategory.inc.xul (content/torCategory.inc.xul)
+ content/browser/torpreferences/torFirewallSettings.jsm (content/torFirewallSettings.jsm)
+ content/browser/torpreferences/torLogDialog.jsm (content/torLogDialog.jsm)
+ content/browser/torpreferences/torLogDialog.xul (content/torLogDialog.xul)
+ content/browser/torpreferences/torPane.js (content/torPane.js)
+ content/browser/torpreferences/torPane.xul (content/torPane.xul)
+ content/browser/torpreferences/torPreferences.css (content/torPreferences.css)
+ content/browser/torpreferences/torPreferencesIcon.svg (content/torPreferencesIcon.svg)
+ content/browser/torpreferences/torProxySettings.jsm (content/torProxySettings.jsm)
diff --git a/browser/components/torpreferences/moz.build b/browser/components/torpreferences/moz.build
new file mode 100644
index 000000000000..7e103239c8d6
--- /dev/null
+++ b/browser/components/torpreferences/moz.build
@@ -0,0 +1 @@
+JAR_MANIFESTS += ['jar.mn']
diff --git a/browser/modules/BridgeDB.jsm b/browser/modules/BridgeDB.jsm
new file mode 100644
index 000000000000..16bf02e6c688
--- /dev/null
+++ b/browser/modules/BridgeDB.jsm
@@ -0,0 +1,110 @@
+"use strict;";
+
+var EXPORTED_SYMBOLS = ["BridgeDB"];
+
+const { TorLauncherBridgeDB } = ChromeUtils.import(
+ "resource://torlauncher/modules/tl-bridgedb.jsm"
+);
+const { TorProtocolService } = ChromeUtils.import(
+ "resource:///modules/TorProtocolService.jsm"
+);
+const { TorStrings } = ChromeUtils.import("resource:///modules/TorStrings.jsm");
+
+var BridgeDB = {
+ _moatRequestor: null,
+ _currentCaptchaInfo: null,
+ _bridges: null,
+
+ get currentCaptchaImage() {
+ if (this._currentCaptchaInfo) {
+ return this._currentCaptchaInfo.captchaImage;
+ }
+ return null;
+ },
+
+ get currentBridges() {
+ return this._bridges;
+ },
+
+ submitCaptchaGuess(aCaptchaSolution) {
+ if (this._moatRequestor && this._currentCaptchaInfo) {
+ return this._moatRequestor
+ .finishFetch(
+ this._currentCaptchaInfo.transport,
+ this._currentCaptchaInfo.challenge,
+ aCaptchaSolution
+ )
+ .then(aBridgeInfo => {
+ this._moatRequestor.close();
+ this._moatRequestor = null;
+ this._currentCaptchaInfo = null;
+ this._bridges = aBridgeInfo.bridges;
+ // array of bridge strings
+ return this._bridges;
+ });
+ }
+
+ return new Promise((aResponse, aReject) => {
+ aReject(new Error("Invalid _moatRequestor or _currentCaptchaInfo"));
+ });
+ },
+
+ requestNewCaptchaImage(aProxyURI) {
+ // close and clear out existing state on captcha request
+ this.close();
+
+ let transportPlugins = TorProtocolService.readStringArraySetting(
+ TorStrings.configKeys.clientTransportPlugin
+ );
+
+ let meekClientPath;
+ let meekTransport; // We support both "meek" and "meek_lite".
+ let meekClientArgs;
+ // TODO: shouldn't this early out once meek settings are found?
+ for (const line of transportPlugins) {
+ // Parse each ClientTransportPlugin line and look for the meek or
+ // meek_lite transport. This code works a lot like the Tor daemon's
+ // parse_transport_line() function.
+ let tokens = line.split(" ");
+ if (tokens.length > 2 && tokens[1] == "exec") {
+ let transportArray = tokens[0].split(",").map(aStr => aStr.trim());
+ let transport = transportArray.find(
+ aTransport => aTransport === "meek"
+ );
+ if (!transport) {
+ transport = transportArray.find(
+ aTransport => aTransport === "meek_lite"
+ );
+ }
+ if (transport) {
+ meekTransport = transport;
+ meekClientPath = tokens[2];
+ meekClientArgs = tokens.slice(3);
+ }
+ }
+ }
+
+ this._moatRequestor = TorLauncherBridgeDB.createMoatRequestor();
+
+ return this._moatRequestor
+ .init(aProxyURI, meekTransport, meekClientPath, meekClientArgs)
+ .then(() => {
+ // TODO: get this from TorLauncherUtil
+ let bridgeType = "obfs4";
+ return this._moatRequestor.fetchBridges([bridgeType]);
+ })
+ .then(aCaptchaInfo => {
+ // cache off the current captcha info as the challenge is needed for response
+ this._currentCaptchaInfo = aCaptchaInfo;
+ return aCaptchaInfo.captchaImage;
+ });
+ },
+
+ close() {
+ if (this._moatRequestor) {
+ this._moatRequestor.close();
+ this._moatRequestor = null;
+ }
+ this._currentCaptchaInfo = null;
+ },
+};
diff --git a/browser/modules/TorProtocolService.jsm b/browser/modules/TorProtocolService.jsm
new file mode 100644
index 000000000000..682e7be9de1a
--- /dev/null
+++ b/browser/modules/TorProtocolService.jsm
@@ -0,0 +1,203 @@
+"use strict";
+
+var EXPORTED_SYMBOLS = ["TorProtocolService"];
+
+var TorProtocolService = {
+ _tlps: Cc["@torproject.org/torlauncher-protocol-service;1"].getService(
+ Ci.nsISupports
+ ).wrappedJSObject,
+ // maintain a map of tor settings set by Tor Browser so that we don't
+ // repeatedly set the same key/values over and over
+ // this map contains string keys to primitive or array values
+ _settingsCache: new Map(),
+
+ _typeof(aValue) {
+ switch (typeof aValue) {
+ case "boolean":
+ return "boolean";
+ case "string":
+ return "string";
+ case "object":
+ if (aValue == null) {
+ return "null";
+ } else if (Array.isArray(aValue)) {
+ return "array";
+ }
+ return "object";
+ }
+ return "unknown";
+ },
+
+ _assertValidSettingKey(aSetting) {
+ // ensure the 'key' is a string
+ if (typeof aSetting != "string") {
+ throw new Error(
+ `Expected setting of type string but received ${typeof aSetting}`
+ );
+ }
+ },
+
+ _assertValidSetting(aSetting, aValue) {
+ this._assertValidSettingKey(aSetting);
+
+ const valueType = this._typeof(aValue);
+ switch (valueType) {
+ case "boolean":
+ case "string":
+ case "null":
+ return;
+ case "array":
+ for (const element of aValue) {
+ if (typeof element != "string") {
+ throw new Error(
+ `Setting '${aSetting}' array contains value of invalid type '${typeof element}'`
+ );
+ }
+ }
+ return;
+ default:
+ throw new Error(
+ `Invalid object type received for setting '${aSetting}'`
+ );
+ }
+ },
+
+ // takes a Map containing tor settings
+ // throws on error
+ writeSettings(aSettingsObj) {
+ // only write settings that have changed
+ let newSettings = new Map();
+ for (const [setting, value] of aSettingsObj) {
+ let saveSetting = false;
+
+ // make sure we have valid data here
+ this._assertValidSetting(setting, value);
+
+ if (!this._settingsCache.has(setting)) {
+ // no cached setting, so write
+ saveSetting = true;
+ } else {
+ const cachedValue = this._settingsCache.get(setting);
+ if (value != cachedValue) {
+ // compare arrays member-wise
+ if (Array.isArray(value) && Array.isArray(cachedValue)) {
+ if (value.length != cachedValue.length) {
+ saveSetting = true;
+ } else {
+ const arrayLength = value.length;
+ for (let i = 0; i < arrayLength; ++i) {
+ if (value[i] != cachedValue[i]) {
+ saveSetting = true;
+ break;
+ }
+ }
+ }
+ } else {
+ // some other different values
+ saveSetting = true;
+ }
+ }
+ }
+
+ if (saveSetting) {
+ newSettings.set(setting, value);
+ }
+ }
+
+ // only write if new setting to save
+ if (newSettings.size > 0) {
+ // convert settingsObject map to js object for torlauncher-protocol-service
+ let settingsObject = {};
+ for (const [setting, value] of newSettings) {
+ // console.log(`${setting} : ${value}`);
+ settingsObject[setting] = value;
+ }
+
+ let errorObject = {};
+ if (!this._tlps.TorSetConfWithReply(settingsObject, errorObject)) {
+ throw new Error(errorObject.details);
+ }
+
+ // save settings to cache after successfully writing to Tor
+ for (const [setting, value] of newSettings) {
+ this._settingsCache.set(setting, value);
+ }
+ }
+ },
+
+ _readSetting(aSetting) {
+ this._assertValidSettingKey(aSetting);
+ let reply = this._tlps.TorGetConf(aSetting);
+ if (this._tlps.TorCommandSucceeded(reply)) {
+ return reply.lineArray;
+ }
+ throw new Error(reply.lineArray.join("\n"));
+ },
+
+ _readBoolSetting(aSetting) {
+ let lineArray = this._readSetting(aSetting);
+ if (lineArray.length != 1) {
+ throw new Error(
+ `Expected an array with length 1 but received array of length ${
+ lineArray.length
+ }`
+ );
+ }
+
+ let retval = lineArray[0];
+ switch (retval) {
+ case "0":
+ return false;
+ case "1":
+ return true;
+ default:
+ throw new Error(`Expected boolean (1 or 0) but received '${retval}'`);
+ }
+ },
+
+ _readStringSetting(aSetting) {
+ let lineArray = this._readSetting(aSetting);
+ if (lineArray.length != 1) {
+ throw new Error(
+ `Expected an array with length 1 but received array of length ${
+ lineArray.length
+ }`
+ );
+ }
+ return lineArray[0];
+ },
+
+ _readStringArraySetting(aSetting) {
+ let lineArray = this._readSetting(aSetting);
+ return lineArray;
+ },
+
+ readBoolSetting(aSetting) {
+ let value = this._readBoolSetting(aSetting);
+ this._settingsCache.set(aSetting, value);
+ return value;
+ },
+
+ readStringSetting(aSetting) {
+ let value = this._readStringSetting(aSetting);
+ this._settingsCache.set(aSetting, value);
+ return value;
+ },
+
+ readStringArraySetting(aSetting) {
+ let value = this._readStringArraySetting(aSetting);
+ this._settingsCache.set(aSetting, value);
+ return value;
+ },
+
+ // writes current tor settings to disk
+ flushSettings() {
+ this._tlps.TorSendCommand("SAVECONF");
+ },
+
+ getLog() {
+ let countObj = { value: 0 };
+ let torLog = this._tlps.TorGetLog(countObj);
+ return torLog;
+ },
+};
diff --git a/browser/modules/TorStrings.jsm b/browser/modules/TorStrings.jsm
new file mode 100644
index 000000000000..c7bd6f4236ae
--- /dev/null
+++ b/browser/modules/TorStrings.jsm
@@ -0,0 +1,326 @@
+"use strict";
+
+var EXPORTED_SYMBOLS = ["TorStrings"];
+
+const { XPCOMUtils } = ChromeUtils.import(
+ "resource://gre/modules/XPCOMUtils.jsm"
+);
+const { getLocale } = ChromeUtils.import(
+ "resource://torbutton/modules/utils.js"
+);
+
+XPCOMUtils.defineLazyGlobalGetters(this, ["DOMParser"]);
+XPCOMUtils.defineLazyGetter(this, "domParser", () => {
+ const parser = new DOMParser();
+ parser.forceEnableDTD();
+ return parser;
+});
+
+/*
+ Tor String Bundle
+
+ Strings loaded from torbutton/tor-launcher, but provide a fallback in case they aren't available
+*/
+class TorStringBundle {
+ constructor(aBundleURLs, aPrefix) {
+ let locations = [];
+ for (const [index, url] of aBundleURLs.entries()) {
+ locations.push(`<!ENTITY % dtd_${index} SYSTEM "${url}">%dtd_${index};`);
+ }
+ this._locations = locations;
+ this._prefix = aPrefix;
+ }
+
+ // copied from testing/marionette/l10n.js
+ localizeEntity(urls, id) {
+ // Use the DOM parser to resolve the entity and extract its real value
+ let header = `<?xml version="1.0"?><!DOCTYPE elem [${this._locations.join(
+ ""
+ )}]>`;
+ let elem = `<elem id="elementID">&${id};</elem>`;
+ let doc = domParser.parseFromString(header + elem, "text/xml");
+ let element = doc.querySelector("elem[id='elementID']");
+
+ if (element === null) {
+ throw new Error(`Entity with id='${id}' hasn't been found`);
+ }
+
+ return element.textContent;
+ }
+
+ getString(key, fallback) {
+ if (key) {
+ try {
+ return this.localizeEntity(this._bundleURLs, `${this._prefix}${key}`);
+ } catch (e) {}
+ }
+
+ // on failure, assign the fallback if it exists
+ if (fallback) {
+ return fallback;
+ }
+ // otherwise return string key
+ return `$(${key})`;
+ }
+}
+
+/*
+ Security Level Strings
+*/
+var TorStrings = {
+ /*
+ Tor Browser Security Level Strings
+ */
+ securityLevel: (function() {
+ let tsb = new TorStringBundle(
+ ["chrome://torbutton/locale/torbutton.dtd"],
+ "torbutton.prefs.sec_"
+ );
+ let getString = function(key, fallback) {
+ return tsb.getString(key, fallback);
+ };
+
+ // read localized strings from torbutton; but use hard-coded en-US strings as fallbacks in case of error
+ let retval = {
+ securityLevel: getString("caption", "Security Level"),
+ customWarning: getString("custom_warning", "Custom"),
+ overview: getString(
+ "overview",
+ "Disable certain web features that can be used to attack your security and anonymity."
+ ),
+ standard: {
+ level: getString("standard_label", "Standard"),
+ tooltip: getString("standard_tooltip", "Security Level : Standard"),
+ summary: getString(
+ "standard_description",
+ "All Tor Browser and website features are enabled."
+ ),
+ },
+ safer: {
+ level: getString("safer_label", "Safer"),
+ tooltip: getString("safer_tooltip", "Security Level : Safer"),
+ summary: getString(
+ "safer_description",
+ "Disables website features that are often dangerous, causing some sites to lose functionality."
+ ),
+ description1: getString(
+ "js_on_https_sites_only",
+ "JavaScript is disabled on non-HTTPS sites."
+ ),
+ description2: getString(
+ "limit_typography",
+ "Some fonts and math symbols are disabled."
+ ),
+ description3: getString(
+ "click_to_play_media",
+ "Audio and video (HTML5 media), and WebGL are click-to-play."
+ ),
+ },
+ safest: {
+ level: getString("safest_label", "Safest"),
+ tooltip: getString("safest_tooltip", "Security Level : Safest"),
+ summary: getString(
+ "safest_description",
+ "Only allows website features required for static sites and basic services. These changes affect images, media, and scripts."
+ ),
+ description1: getString(
+ "js_disabled",
+ "JavaScript is disabled by default on all sites."
+ ),
+ description2: getString(
+ "limit_graphics_and_typography",
+ "Some fonts, icons, math symbols, and images are disabled."
+ ),
+ description3: getString(
+ "click_to_play_media",
+ "Audio and video (HTML5 media), and WebGL are click-to-play."
+ ),
+ },
+ custom: {
+ summary: getString(
+ "custom_summary",
+ "Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels."
+ ),
+ },
+ learnMore: getString("learn_more_label", "Learn more"),
+ learnMoreURL: `https://tb-manual.torproject.org/${getLocale()}/security-settings/`,
+ restoreDefaults: getString("restore_defaults", "Restore Defaults"),
+ advancedSecuritySettings: getString(
+ "advanced_security_settings",
+ "Advanced Security Settings\u2026"
+ ),
+ };
+ return retval;
+ })() /* Security Level Strings */,
+
+ /*
+ Tor about:preferences#tor Strings
+ */
+ settings: (function() {
+ let tsb = new TorStringBundle(
+ ["chrome://torlauncher/locale/network-settings.dtd"],
+ ""
+ );
+ let getString = function(key, fallback) {
+ return tsb.getString(key, fallback);
+ };
+
+ let retval = {
+ categoryTitle: getString("torPreferences.categoryTitle", "Tor"),
+ torPreferencesHeading: getString(
+ "torPreferences.torSettings",
+ "Tor Settings"
+ ),
+ torPreferencesDescription: getString(
+ "torPreferences.torSettingsDescription",
+ "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world."
+ ),
+ learnMore: getString("torPreferences.learnMore", "Learn More"),
+ bridgesHeading: getString("torPreferences.bridges", "Bridges"),
+ bridgesDescription: getString(
+ "torPreferences.bridgesDescription",
+ "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another."
+ ),
+ useBridge: getString("torPreferences.useBridge", "Use a bridge"),
+ selectBridge: getString(
+ "torsettings.useBridges.default",
+ "Select a bridge"
+ ),
+ requestBridgeFromTorProject: getString(
+ "torsettings.useBridges.bridgeDB",
+ "Request a bridge from torproject.org"
+ ),
+ requestNewBridge: getString(
+ "torPreferences.requestNewBridge",
+ "Request a New Bridge\u2026"
+ ),
+ provideBridge: getString(
+ "torPreferences.provideBridge",
+ "Provide a bridge"
+ ),
+ provideBridgeDirections: getString(
+ "torsettings.useBridges.label",
+ "Enter bridge information from a trusted source."
+ ),
+ provideBridgePlaceholder: getString(
+ "torsettings.useBridges.placeholder",
+ "type address:port (one per line)"
+ ),
+ advancedHeading: getString("torPreferences.advanced", "Advanced"),
+ advancedDescription: getString(
+ "torPreferences.advancedDescription",
+ "Configure how Tor Browser connects to the internet."
+ ),
+ useLocalProxy: getString("torPreferences.useProxy", "Use a local proxy"),
+ proxyType: getString("torsettings.useProxy.type", "Proxy Type"),
+ proxyTypeSOCKS4: getString("torsettings.useProxy.type.socks4", "SOCKS4"),
+ proxyTypeSOCKS5: getString("torsettings.useProxy.type.socks5", "SOCKS5"),
+ proxyTypeHTTP: getString("torsettings.useProxy.type.http", "HTTP/HTTPS"),
+ proxyAddress: getString("torsettings.useProxy.address", "Address"),
+ proxyAddressPlaceholder: getString(
+ "torsettings.useProxy.address.placeholder",
+ "IP address or hostname"
+ ),
+ proxyPort: getString("torsettings.useProxy.port", "Port"),
+ proxyUsername: getString("torsettings.useProxy.username", "Username"),
+ proxyPassword: getString("torsettings.useProxy.password", "Password"),
+ proxyUsernamePasswordPlaceholder: getString(
+ "torsettings.optional",
+ "Optional"
+ ),
+ useFirewall: getString(
+ "torsettings.firewall.checkbox",
+ "This computer goes through a firewall that only allows connections to certain ports"
+ ),
+ allowedPorts: getString(
+ "torsettings.firewall.allowedPorts",
+ "Allowed Ports"
+ ),
+ allowedPortsPlaceholder: getString(
+ "torPreferences.firewallPortsPlaceholder",
+ "Comma-seperated values"
+ ),
+ requestBridgeDialogTitle: getString(
+ "torPreferences.requestBridgeDialogTitle",
+ "Request Bridge"
+ ),
+ submitCaptcha: getString(
+ "torsettings.useBridges.captchaSubmit",
+ "Submit"
+ ),
+ contactingBridgeDB: getString(
+ "torPreferences.requestBridgeDialogWaitPrompt",
+ "Contacting BridgeDB. Please Wait."
+ ),
+ solveTheCaptcha: getString(
+ "torPreferences.requestBridgeDialogSolvePrompt",
+ "Solve the CAPTCHA to request a bridge."
+ ),
+ captchaTextboxPlaceholder: getString(
+ "torsettings.useBridges.captchaSolution.placeholder",
+ "Enter the characters from the image"
+ ),
+ incorrectCaptcha: getString(
+ "torPreferences.requestBridgeErrorBadSolution",
+ "The solution is not correct. Please try again."
+ ),
+ showTorDaemonLogs: getString(
+ "torPreferences.viewTorLogs",
+ "View the Tor logs."
+ ),
+ showLogs: getString("torPreferences.viewLogs", "View Logs\u2026"),
+ torLogDialogTitle: getString(
+ "torPreferences.torLogsDialogTitle",
+ "Tor Logs"
+ ),
+ copyLog: getString("torsettings.copyLog", "Copy Tor Log to Clipboard"),
+
+ learnMoreTorBrowserURL: `https://tb-manual.torproject.org/${getLocale()}/about/`,
+ learnMoreBridgesURL: `https://tb-manual.torproject.org/${getLocale()}/bridges/`,
+ learnMoreNetworkSettingsURL: `about:blank`,
+ };
+
+ return retval;
+ })() /* Tor Network Settings Strings */,
+
+ /*
+ Tor Deamon Configuration Key Strings
+ */
+
+ // TODO: proper camel case
+ configKeys: {
+ /* Bridge Conf Settings */
+ useBridges: "UseBridges",
+ bridgeList: "Bridge",
+ /* Proxy Conf Strings */
+ socks4Proxy: "Socks4Proxy",
+ socks5Proxy: "Socks5Proxy",
+ socks5ProxyUsername: "Socks5ProxyUsername",
+ socks5ProxyPassword: "Socks5ProxyPassword",
+ httpsProxy: "HTTPSProxy",
+ httpsProxyAuthenticator: "HTTPSProxyAuthenticator",
+ /* Firewall Conf Strings */
+ reachableAddresses: "ReachableAddresses",
+
+ /* BridgeDB Strings */
+ clientTransportPlugin: "ClientTransportPlugin",
+ },
+
+ /*
+ about:config preference keys
+ */
+
+ preferenceKeys: {
+ defaultBridgeType: "extensions.torlauncher.default_bridge_type",
+ recommendedBridgeType:
+ "extensions.torlauncher.default_bridge_recommended_type",
+ },
+
+ /*
+ about:config preference branches
+ */
+ preferenceBranches: {
+ defaultBridge: "extensions.torlauncher.default_bridge.",
+ bridgeDBBridges: "extensions.torlauncher.bridgedb_bridge.",
+ },
+};
diff --git a/browser/modules/moz.build b/browser/modules/moz.build
index 304bd34d2ff2..43f1524f4553 100644
--- a/browser/modules/moz.build
+++ b/browser/modules/moz.build
@@ -134,6 +134,7 @@ XPCSHELL_TESTS_MANIFESTS += ['test/unit/xpcshell.ini']
EXTRA_JS_MODULES += [
'AboutNewTab.jsm',
'AsyncTabSwitcher.jsm',
+ 'BridgeDB.jsm',
'BrowserUsageTelemetry.jsm',
'BrowserWindowTracker.jsm',
'ContentClick.jsm',
@@ -165,6 +166,8 @@ EXTRA_JS_MODULES += [
'TabsList.jsm',
'TabUnloader.jsm',
'ThemeVariableMap.jsm',
+ 'TorProtocolService.jsm',
+ 'TorStrings.jsm',
'TransientPrefs.jsm',
'webrtcUI.jsm',
'ZoomUI.jsm',
1
0
commit a1fe61ca5e14e166617c516f2af449b043a3ef1c
Author: Georg Koppen <gk(a)torproject.org>
Date: Sat Oct 12 12:09:12 2019 +0000
Translations update
---
chrome/locale/ar/browserOnboarding.properties | 2 +-
chrome/locale/bn-BD/browserOnboarding.properties | 2 +-
chrome/locale/ca/browserOnboarding.properties | 2 +-
chrome/locale/cs/browserOnboarding.properties | 2 +-
chrome/locale/da/browserOnboarding.properties | 2 +-
chrome/locale/de/browserOnboarding.properties | 2 +-
chrome/locale/el/browserOnboarding.properties | 2 +-
chrome/locale/es-AR/browserOnboarding.properties | 2 +-
chrome/locale/eu/browserOnboarding.properties | 2 +-
chrome/locale/fa/browserOnboarding.properties | 2 +-
chrome/locale/fr/browserOnboarding.properties | 8 ++++----
chrome/locale/ga-IE/browserOnboarding.properties | 2 +-
chrome/locale/he/browserOnboarding.properties | 12 ++++++------
chrome/locale/hu/browserOnboarding.properties | 2 +-
chrome/locale/id/browserOnboarding.properties | 2 +-
chrome/locale/is/browserOnboarding.properties | 2 +-
chrome/locale/it/browserOnboarding.properties | 2 +-
chrome/locale/ja/browserOnboarding.properties | 4 ++--
chrome/locale/ja/torbutton.properties | 6 +++---
chrome/locale/ka/browserOnboarding.properties | 2 +-
chrome/locale/ko/browserOnboarding.properties | 2 +-
chrome/locale/mk/browserOnboarding.properties | 12 ++++++------
chrome/locale/nb-NO/browserOnboarding.properties | 8 ++++----
chrome/locale/nl/browserOnboarding.properties | 12 ++++++------
chrome/locale/pl/browserOnboarding.properties | 2 +-
chrome/locale/pt-BR/browserOnboarding.properties | 12 ++++++------
chrome/locale/ro/browserOnboarding.properties | 2 +-
chrome/locale/ru/browserOnboarding.properties | 2 +-
chrome/locale/sv-SE/browserOnboarding.properties | 2 +-
chrome/locale/tr/browserOnboarding.properties | 12 ++++++------
chrome/locale/tr/torbutton.properties | 2 +-
chrome/locale/vi/browserOnboarding.properties | 2 +-
chrome/locale/zh-CN/browserOnboarding.properties | 12 ++++++------
chrome/locale/zh-TW/browserOnboarding.properties | 2 +-
34 files changed, 73 insertions(+), 73 deletions(-)
diff --git a/chrome/locale/ar/browserOnboarding.properties b/chrome/locale/ar/browserOnboarding.properties
index 33aaf5d2..4366f4d4 100644
--- a/chrome/locale/ar/browserOnboarding.properties
+++ b/chrome/locale/ar/browserOnboarding.properties
@@ -51,7 +51,7 @@ onboarding.tour-tor-update.prefix-updated=تحديث
onboarding.tour-tor-toolbar=شريط الأدوات
onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
onboarding.tour-tor-toolbar-update-9.0.next-button=اذهب الى شبكة تور
diff --git a/chrome/locale/bn-BD/browserOnboarding.properties b/chrome/locale/bn-BD/browserOnboarding.properties
index 1b6aa316..9513be00 100644
--- a/chrome/locale/bn-BD/browserOnboarding.properties
+++ b/chrome/locale/bn-BD/browserOnboarding.properties
@@ -51,7 +51,7 @@ onboarding.tour-tor-update.prefix-updated=Updated
onboarding.tour-tor-toolbar=Toolbar
onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
onboarding.tour-tor-toolbar-update-9.0.next-button=টর নেটওয়ার্কে যান
diff --git a/chrome/locale/ca/browserOnboarding.properties b/chrome/locale/ca/browserOnboarding.properties
index 247260b3..b3125ed0 100644
--- a/chrome/locale/ca/browserOnboarding.properties
+++ b/chrome/locale/ca/browserOnboarding.properties
@@ -51,7 +51,7 @@ onboarding.tour-tor-update.prefix-updated=Actualitzat
onboarding.tour-tor-toolbar=Barra d'eines
onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
onboarding.tour-tor-toolbar-update-9.0.next-button=Aneu a la Xarxa Tor
diff --git a/chrome/locale/cs/browserOnboarding.properties b/chrome/locale/cs/browserOnboarding.properties
index 8f6d6e86..de61ab4e 100644
--- a/chrome/locale/cs/browserOnboarding.properties
+++ b/chrome/locale/cs/browserOnboarding.properties
@@ -51,7 +51,7 @@ onboarding.tour-tor-update.prefix-updated=Aktualizováno
onboarding.tour-tor-toolbar=Panel nástrojů
onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
onboarding.tour-tor-toolbar-update-9.0.next-button=Přejít na síť Tor
diff --git a/chrome/locale/da/browserOnboarding.properties b/chrome/locale/da/browserOnboarding.properties
index 3993caf5..0b6f4ddc 100644
--- a/chrome/locale/da/browserOnboarding.properties
+++ b/chrome/locale/da/browserOnboarding.properties
@@ -51,7 +51,7 @@ onboarding.tour-tor-update.prefix-updated=Opdateret
onboarding.tour-tor-toolbar=Værktøjslinje
onboarding.tour-tor-toolbar-update-9.0.title=Farvel Onion-knap.
onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
onboarding.tour-tor-toolbar-update-9.0.button=Forespørg en ny identitet
onboarding.tour-tor-toolbar-update-9.0.next-button=Gå til Tor-netværk
diff --git a/chrome/locale/de/browserOnboarding.properties b/chrome/locale/de/browserOnboarding.properties
index b6750198..9eea6582 100644
--- a/chrome/locale/de/browserOnboarding.properties
+++ b/chrome/locale/de/browserOnboarding.properties
@@ -51,7 +51,7 @@ onboarding.tour-tor-update.prefix-updated=Aktualisiert
onboarding.tour-tor-toolbar=Symbolleiste
onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
onboarding.tour-tor-toolbar-update-9.0.next-button=Öffne Tor-Netzwerk
diff --git a/chrome/locale/el/browserOnboarding.properties b/chrome/locale/el/browserOnboarding.properties
index 1f061edc..d76aebc3 100644
--- a/chrome/locale/el/browserOnboarding.properties
+++ b/chrome/locale/el/browserOnboarding.properties
@@ -51,7 +51,7 @@ onboarding.tour-tor-update.prefix-updated=Αναβαθμίστηκε
onboarding.tour-tor-toolbar=Γραμμή εργαλείων
onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
onboarding.tour-tor-toolbar-update-9.0.next-button=Πηγαίντε στο Δίκτυο Tor
diff --git a/chrome/locale/es-AR/browserOnboarding.properties b/chrome/locale/es-AR/browserOnboarding.properties
index cc8931f8..b3d531b7 100644
--- a/chrome/locale/es-AR/browserOnboarding.properties
+++ b/chrome/locale/es-AR/browserOnboarding.properties
@@ -51,7 +51,7 @@ onboarding.tour-tor-update.prefix-updated=Actualizado
onboarding.tour-tor-toolbar=Barra de herramientas
onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
onboarding.tour-tor-toolbar-update-9.0.next-button=Ir a la red Tor
diff --git a/chrome/locale/eu/browserOnboarding.properties b/chrome/locale/eu/browserOnboarding.properties
index 35289c49..e9103eaf 100644
--- a/chrome/locale/eu/browserOnboarding.properties
+++ b/chrome/locale/eu/browserOnboarding.properties
@@ -51,7 +51,7 @@ onboarding.tour-tor-update.prefix-updated=Eguneratua
onboarding.tour-tor-toolbar=Tresna-barra
onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
onboarding.tour-tor-toolbar-update-9.0.next-button=Joan Tor sarera
diff --git a/chrome/locale/fa/browserOnboarding.properties b/chrome/locale/fa/browserOnboarding.properties
index 8926015e..4d25d226 100644
--- a/chrome/locale/fa/browserOnboarding.properties
+++ b/chrome/locale/fa/browserOnboarding.properties
@@ -51,7 +51,7 @@ onboarding.tour-tor-update.prefix-updated=بهروزرسانی شد
onboarding.tour-tor-toolbar=نوار ابزار
onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
onboarding.tour-tor-toolbar-update-9.0.next-button=برو به شبکه تور
diff --git a/chrome/locale/fr/browserOnboarding.properties b/chrome/locale/fr/browserOnboarding.properties
index 01065625..8e1019c3 100644
--- a/chrome/locale/fr/browserOnboarding.properties
+++ b/chrome/locale/fr/browserOnboarding.properties
@@ -15,7 +15,7 @@ onboarding.tour-tor-privacy.button=Poursuivre vers Réseau Tor
onboarding.tour-tor-network=Réseau Tor
onboarding.tour-tor-network.title=Naviguez sur un réseau décentralisé.
onboarding.tour-tor-network.description=Le Navigateur Tor vous connecte au réseau Tor exploité par des milliers de bénévoles dans le monde entier. Contrairement à un RPV, il n’y a pas de point de défaillance unique ou d’entité centralisée auxquels vous devez faire confiance pour profiter d’Internet en toute confidentialité.
-onboarding.tour-tor-network.description-para2=NOUVEAU : paramètres du réseau Tor, dont la possibilité de demander des ponts où Tor est bloqué, se trouvent maintenant dans Préférences.
+onboarding.tour-tor-network.description-para2=NOUVEAU : Paramètres du réseau Tor, dont la possibilité de demander des ponts où Tor est bloqué, se trouvent maintenant dans Préférences.
onboarding.tour-tor-network.action-button=Réglez vos paramètres du réseau Tor
onboarding.tour-tor-network.button=Poursuivre vers Affichage des circuits
@@ -49,10 +49,10 @@ onboarding.tour-tor-update.prefix-new=Nouveau
onboarding.tour-tor-update.prefix-updated=Mis à jour
onboarding.tour-tor-toolbar=Barre d’outils
-onboarding.tour-tor-toolbar-update-9.0.title=Au revoir le bouton oignon.
+onboarding.tour-tor-toolbar-update-9.0.title=Adieu au bouton oignon.
onboarding.tour-tor-toolbar-update-9.0.description=Nous voulons que votre expérience d’utilisation de Tor soit entièrement intégrée au Navigateur Tor.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
-onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.description-para2=C’est pourquoi désormais, au lieu d’utiliser le bouton oignon, vous pouvez voir votre circuit Tor par le [i] de la barre d’URL et demander une nouvelle identité en utilisant le bouton de la barre d’outils ou le menu [≡] .
+onboarding.tour-tor-toolbar-update-9.0.button=Comment demander une nouvelle identité
onboarding.tour-tor-toolbar-update-9.0.next-button=Poursuivre vers Réseau Tor
# Circuit Display onboarding.
diff --git a/chrome/locale/ga-IE/browserOnboarding.properties b/chrome/locale/ga-IE/browserOnboarding.properties
index 6ec36431..754e6467 100644
--- a/chrome/locale/ga-IE/browserOnboarding.properties
+++ b/chrome/locale/ga-IE/browserOnboarding.properties
@@ -51,7 +51,7 @@ onboarding.tour-tor-update.prefix-updated=Nuashonraithe
onboarding.tour-tor-toolbar=Barra Uirlisí
onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
onboarding.tour-tor-toolbar-update-9.0.next-button=Téigh go Líonra Tor
diff --git a/chrome/locale/he/browserOnboarding.properties b/chrome/locale/he/browserOnboarding.properties
index 3da89d1a..d9a89e69 100644
--- a/chrome/locale/he/browserOnboarding.properties
+++ b/chrome/locale/he/browserOnboarding.properties
@@ -15,8 +15,8 @@ onboarding.tour-tor-privacy.button=לך אל רשת Tor
onboarding.tour-tor-network=רשת Tor
onboarding.tour-tor-network.title=טייל ברשת מבוזרת.
onboarding.tour-tor-network.description=דפדפן Tor מחבר אותך אל רשת Tor המופעלת ע"י אלפי מתנדבים ברחבי העולם. בשונה מאשר VPN, אין נקודת כשל בודדת או כניסה ממורכזת שאתה צריך לסמוך עליה על מנת ליהנות מהאינטרנט באופן פרטי.
-onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
-onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
+onboarding.tour-tor-network.description-para2=חדש: הגדרות רשת Tor, כולל היכולת לבקש גשרים במקום שבו Tor חסום, יכולות להימצא בהעדפות.
+onboarding.tour-tor-network.action-button=התאם את הגדרות רשת Tor שלך
onboarding.tour-tor-network.button=לך אל תצוגת מעגל
onboarding.tour-tor-circuit-display=תצוגת מעגל
@@ -49,10 +49,10 @@ onboarding.tour-tor-update.prefix-new=חדש
onboarding.tour-tor-update.prefix-updated=מעודכן
onboarding.tour-tor-toolbar=סרגל כלים
-onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
-onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
-onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.title=להתראות כפתור בצל.
+onboarding.tour-tor-toolbar-update-9.0.description=אנחנו רוצים את החוויה של שימוש ב־Tor שלך שתהיה משולבת במלואה בתוך דפדפן Tor.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=זאת הסיבה מדוע כעת, ללא שימוש בכפתור הבצל, אתה יכול לראות את מעגל Tor שלך דרך [i] בשורת הכתובת ולבקש זהות חדשה ע"י שימוש בכפתור סרגל הכלים או בתפריט [≡].
+onboarding.tour-tor-toolbar-update-9.0.button=איך לבקש זהות חדשה
onboarding.tour-tor-toolbar-update-9.0.next-button=לך אל רשת Tor
# Circuit Display onboarding.
diff --git a/chrome/locale/hu/browserOnboarding.properties b/chrome/locale/hu/browserOnboarding.properties
index 3eafe389..cbb31d72 100644
--- a/chrome/locale/hu/browserOnboarding.properties
+++ b/chrome/locale/hu/browserOnboarding.properties
@@ -51,7 +51,7 @@ onboarding.tour-tor-update.prefix-updated=Frissített
onboarding.tour-tor-toolbar=Toolbar
onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
onboarding.tour-tor-toolbar-update-9.0.next-button=Irány a Tor Hálózat
diff --git a/chrome/locale/id/browserOnboarding.properties b/chrome/locale/id/browserOnboarding.properties
index 217ad01c..958fba00 100644
--- a/chrome/locale/id/browserOnboarding.properties
+++ b/chrome/locale/id/browserOnboarding.properties
@@ -51,7 +51,7 @@ onboarding.tour-tor-update.prefix-updated=Telah terupdate
onboarding.tour-tor-toolbar=Toolbar
onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
onboarding.tour-tor-toolbar-update-9.0.next-button=Pergi ke Jaringan Tor
diff --git a/chrome/locale/is/browserOnboarding.properties b/chrome/locale/is/browserOnboarding.properties
index 81980cb1..656b8ae5 100644
--- a/chrome/locale/is/browserOnboarding.properties
+++ b/chrome/locale/is/browserOnboarding.properties
@@ -51,7 +51,7 @@ onboarding.tour-tor-update.prefix-updated=Uppfært
onboarding.tour-tor-toolbar=Verkfærastika
onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
onboarding.tour-tor-toolbar-update-9.0.next-button=Fara á Tor-netið
diff --git a/chrome/locale/it/browserOnboarding.properties b/chrome/locale/it/browserOnboarding.properties
index b24127ce..95633f21 100644
--- a/chrome/locale/it/browserOnboarding.properties
+++ b/chrome/locale/it/browserOnboarding.properties
@@ -51,7 +51,7 @@ onboarding.tour-tor-update.prefix-updated=Aggiornato
onboarding.tour-tor-toolbar=Barra degli strumenti
onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
onboarding.tour-tor-toolbar-update-9.0.next-button=Vai alla rete Tor
diff --git a/chrome/locale/ja/browserOnboarding.properties b/chrome/locale/ja/browserOnboarding.properties
index 64f1baea..e1241ee5 100644
--- a/chrome/locale/ja/browserOnboarding.properties
+++ b/chrome/locale/ja/browserOnboarding.properties
@@ -44,14 +44,14 @@ onboarding.tour-tor-onion-services.description=Onion サービスは、検閲に
onboarding.tour-tor-onion-services.button=Onion サイトを訪問
onboarding.tour-tor-onion-services.next-button=完了
-onboarding.overlay-icon-tooltip-updated2=最新情報\n%S に
+onboarding.overlay-icon-tooltip-updated2=%S の\n変更点をご紹介します
onboarding.tour-tor-update.prefix-new=新機能
onboarding.tour-tor-update.prefix-updated=更新
onboarding.tour-tor-toolbar=ツールバー
onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
onboarding.tour-tor-toolbar-update-9.0.next-button=Tor ネットワークへ
diff --git a/chrome/locale/ja/torbutton.properties b/chrome/locale/ja/torbutton.properties
index b30ecc3c..a03e2d7b 100644
--- a/chrome/locale/ja/torbutton.properties
+++ b/chrome/locale/ja/torbutton.properties
@@ -7,7 +7,7 @@ torbutton.circuit_display.tor_bridge = ブリッジ
torbutton.circuit_display.unknown_country = 不明な国
torbutton.circuit_display.guard = ガード
torbutton.circuit_display.guard_note = [ガード] ノードは変更されない場合があります。
-torbutton.circuit_display.learn_more = さらに知る
+torbutton.circuit_display.learn_more = 詳細情報
torbutton.content_sizer.margin_tooltip = Tor Browser はウィンドウのサイズを平凡にするためにこのマージンを追加します。これにより、あなたのことをオンラインで追跡しにくくします。
torbutton.panel.tooltip.disabled = クリックしてTorを有効にする
torbutton.panel.tooltip.enabled = クリックしてTorを無効にする
@@ -56,5 +56,5 @@ profileMigrationFailed=存在しているプロファイル %S へのマイグ
updateDownloadingPanelUILabel=%S 更新をダウンロードしています
# .Onion Page Info prompt. Strings are kept here for ease of translation.
-pageInfo_OnionEncryptionWithBitsAndProtocol=接続が暗号化されています (Onionサービス、%1$S、鍵長 %2$S bit、%3$S)
-pageInfo_OnionEncryption=接続が暗号化されています (Onionサービス)
+pageInfo_OnionEncryptionWithBitsAndProtocol=接続が暗号化されています (Onion サービス、%1$S、鍵長 %2$S bit、%3$S)
+pageInfo_OnionEncryption=接続が暗号化されています (Onion サービス)
diff --git a/chrome/locale/ka/browserOnboarding.properties b/chrome/locale/ka/browserOnboarding.properties
index 11c88645..11832796 100644
--- a/chrome/locale/ka/browserOnboarding.properties
+++ b/chrome/locale/ka/browserOnboarding.properties
@@ -51,7 +51,7 @@ onboarding.tour-tor-update.prefix-updated=განახლებული
onboarding.tour-tor-toolbar=ხელსაწყოთა ზოლი
onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
onboarding.tour-tor-toolbar-update-9.0.next-button=იხილეთ Tor-ქსელი
diff --git a/chrome/locale/ko/browserOnboarding.properties b/chrome/locale/ko/browserOnboarding.properties
index 732ea8ab..ed818936 100644
--- a/chrome/locale/ko/browserOnboarding.properties
+++ b/chrome/locale/ko/browserOnboarding.properties
@@ -51,7 +51,7 @@ onboarding.tour-tor-update.prefix-updated=업데이트됨
onboarding.tour-tor-toolbar=툴바
onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
onboarding.tour-tor-toolbar-update-9.0.next-button=Tor 네트워크 항목으로 가봅니다.
diff --git a/chrome/locale/mk/browserOnboarding.properties b/chrome/locale/mk/browserOnboarding.properties
index c0247407..08935029 100644
--- a/chrome/locale/mk/browserOnboarding.properties
+++ b/chrome/locale/mk/browserOnboarding.properties
@@ -15,8 +15,8 @@ onboarding.tour-tor-privacy.button=Оди на Tor Мрежа
onboarding.tour-tor-network=Tor Мрежа
onboarding.tour-tor-network.title=Патувајте низ децентрализираната мрежа.
onboarding.tour-tor-network.description=Tor Browser ве поврзува на Tor мрежата одржувана од илјадници волонтери низ целиот свет. За разлика од VPN, овде нема место за неуспех или централизиран ентитет на кого треба да му верувате со цел да уживате приватност на Интернет.
-onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
-onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
+onboarding.tour-tor-network.description-para2=НОВО: Tor Мрежните поставувања, вклучуваат можност да побараат мостови таму каде Tor е блокиран, сега можат да бидат пронајдени во Својства.
+onboarding.tour-tor-network.action-button=Прилагоди ги твоите Мрежни поставки
onboarding.tour-tor-network.button=Оди на Круг екранот
onboarding.tour-tor-circuit-display=Круг екран
@@ -49,10 +49,10 @@ onboarding.tour-tor-update.prefix-new=Ново
onboarding.tour-tor-update.prefix-updated=Ажурирано
onboarding.tour-tor-toolbar=Лента со алатки
-onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
-onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
-onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.title=Збогум Онион копче.
+onboarding.tour-tor-toolbar-update-9.0.description=Сакаме вашето искуство користејќи го Tor да биде целосно вградено во Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=Затоа сега, наместо да го користите онион копчето, можете да го видите вашиот Tor Круг преку [i] во URL лентата и да побарате Нов Идентитет користејќи го копчето во алатникот или [≡] менито.
+onboarding.tour-tor-toolbar-update-9.0.button=Како да побарате Нов Идентитет
onboarding.tour-tor-toolbar-update-9.0.next-button=Оди на Tor Мрежа
# Circuit Display onboarding.
diff --git a/chrome/locale/nb-NO/browserOnboarding.properties b/chrome/locale/nb-NO/browserOnboarding.properties
index 89bfd8e9..a444b823 100644
--- a/chrome/locale/nb-NO/browserOnboarding.properties
+++ b/chrome/locale/nb-NO/browserOnboarding.properties
@@ -15,8 +15,8 @@ onboarding.tour-tor-privacy.button=Gå til Tor Nettverk
onboarding.tour-tor-network=Tor Nettverk
onboarding.tour-tor-network.title=Reis et decentralisert nettverk.
onboarding.tour-tor-network.description=Tor Nettleser forbinder deg med Tor-nettet som drives av tusenvis av frivillige rundt om i verden. I motsetning til en VPN er det ingen feilpunkt eller sentralisert enhet du må stole på for å kunne nyte Internettet privat.
-onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
-onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
+onboarding.tour-tor-network.description-para2=NYTT: Tor nettverksinnstillinger, inkluderer muligheten til å be om broer der Tor er blokkert, kan nå finnes i Innstillinger.
+onboarding.tour-tor-network.action-button=Juster din Tor-nettverksinnstillinger
onboarding.tour-tor-network.button=Gå til Kretsvisning
onboarding.tour-tor-circuit-display=Kretsvisning
@@ -51,8 +51,8 @@ onboarding.tour-tor-update.prefix-updated=Oppdatert
onboarding.tour-tor-toolbar=Verktøylinje
onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
-onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=Hvordan be om en Ny identitet
onboarding.tour-tor-toolbar-update-9.0.next-button=Gå til Tor Nettverk
# Circuit Display onboarding.
diff --git a/chrome/locale/nl/browserOnboarding.properties b/chrome/locale/nl/browserOnboarding.properties
index 84ab0176..f109d951 100644
--- a/chrome/locale/nl/browserOnboarding.properties
+++ b/chrome/locale/nl/browserOnboarding.properties
@@ -15,8 +15,8 @@ onboarding.tour-tor-privacy.button=Naar Tor-netwerk
onboarding.tour-tor-network=Tor-netwerk
onboarding.tour-tor-network.title=Reis over een gedecentraliseerd netwerk.
onboarding.tour-tor-network.description=Tor Browser verbindt u met het Tor-netwerk, mogelijk gemaakt door duizenden vrijwilligers over de hele wereld. Anders dan bij een VPN is er geen sprake van één zwakke plek of centrale autoriteit die u moet vertrouwen om privé van het internet gebruik te maken.
-onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
-onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
+onboarding.tour-tor-network.description-para2=NIEUW: de Tor-netwerkinstellingen, waaronder de mogelijkheid om bridges aan te vragen waar Tor is geblokkeerd, zijn nu te vinden in Voorkeuren.
+onboarding.tour-tor-network.action-button=Uw Tor-netwerkinstellingen aanpassen
onboarding.tour-tor-network.button=Naar Circuit-venster
onboarding.tour-tor-circuit-display=Circuit-venster
@@ -49,10 +49,10 @@ onboarding.tour-tor-update.prefix-new=Nieuw
onboarding.tour-tor-update.prefix-updated=Bijgewerkt
onboarding.tour-tor-toolbar=Werkbalk
-onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
-onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
-onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.title=Vaarwel Onion-knop.
+onboarding.tour-tor-toolbar-update-9.0.description=We willen dat uw ervaring met Tor volledig is geïntegreerd binnen Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=Dat is waarom u nu, in plaats van de onion-knop te gebruiken, uw Tor-circuit via de [i] in de URL-balk kunt zien en een nieuwe identiteit kunt aanvragen via de werkbalkknop of het menu [≡].
+onboarding.tour-tor-toolbar-update-9.0.button=Een nieuwe identiteit aanvragen
onboarding.tour-tor-toolbar-update-9.0.next-button=Naar Tor-netwerk
# Circuit Display onboarding.
diff --git a/chrome/locale/pl/browserOnboarding.properties b/chrome/locale/pl/browserOnboarding.properties
index e0591437..e9ae1d69 100644
--- a/chrome/locale/pl/browserOnboarding.properties
+++ b/chrome/locale/pl/browserOnboarding.properties
@@ -51,7 +51,7 @@ onboarding.tour-tor-update.prefix-updated=Zaktualizowano
onboarding.tour-tor-toolbar=Pasek narzędzi
onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
onboarding.tour-tor-toolbar-update-9.0.next-button=Przejdź do Sieci Tor
diff --git a/chrome/locale/pt-BR/browserOnboarding.properties b/chrome/locale/pt-BR/browserOnboarding.properties
index 11f2240e..dfe66c08 100644
--- a/chrome/locale/pt-BR/browserOnboarding.properties
+++ b/chrome/locale/pt-BR/browserOnboarding.properties
@@ -15,8 +15,8 @@ onboarding.tour-tor-privacy.button=Vá para a Rede Tor.
onboarding.tour-tor-network=Rede Tor
onboarding.tour-tor-network.title=Viaje por uma rede descentralizada.
onboarding.tour-tor-network.description=O Tor Browser conecta você à rede Tor, composta por milhares de voluntários ao redor do mundo. Diferente de uma VPN, não há uma entidade ou ponto de falha central em que você precisa confiar para desfrutar da internet com privacidade.
-onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
-onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
+onboarding.tour-tor-network.description-para2=NOVO: As configurações de rede do Tor, incluindo a capacidade de solicitar pontes onde o Tor está bloqueado, agora podem ser encontradas em Preferências.
+onboarding.tour-tor-network.action-button=Ajuste suas configurações de rede do Tor
onboarding.tour-tor-network.button=Vá para a Exibição de Circuitos
onboarding.tour-tor-circuit-display=Exibição de Circuitos
@@ -49,10 +49,10 @@ onboarding.tour-tor-update.prefix-new=Novo
onboarding.tour-tor-update.prefix-updated=Atualizado
onboarding.tour-tor-toolbar=Barra de ferramentas
-onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
-onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
-onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.title=Adeus Onion Botão.
+onboarding.tour-tor-toolbar-update-9.0.description=Queremos que sua experiência com o Tor seja totalmente integrada ao Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=É por isso que agora, em vez de usar o onion botão, você pode ver o seu Tor Circuit através do [i] na barra de URL e solicitar uma nova identidade usando o botão da barra de ferramentas ou o menu [≡].
+onboarding.tour-tor-toolbar-update-9.0.button=Como solicitar uma nova identidade
onboarding.tour-tor-toolbar-update-9.0.next-button=Vá para a Rede Tor.
# Circuit Display onboarding.
diff --git a/chrome/locale/ro/browserOnboarding.properties b/chrome/locale/ro/browserOnboarding.properties
index c76a29e0..27989597 100644
--- a/chrome/locale/ro/browserOnboarding.properties
+++ b/chrome/locale/ro/browserOnboarding.properties
@@ -51,7 +51,7 @@ onboarding.tour-tor-update.prefix-updated=Actualizat
onboarding.tour-tor-toolbar=Bara cu instrumente
onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
onboarding.tour-tor-toolbar-update-9.0.next-button=Sari la Rețeaua Tor
diff --git a/chrome/locale/ru/browserOnboarding.properties b/chrome/locale/ru/browserOnboarding.properties
index 45cb0a8d..baba509f 100644
--- a/chrome/locale/ru/browserOnboarding.properties
+++ b/chrome/locale/ru/browserOnboarding.properties
@@ -51,7 +51,7 @@ onboarding.tour-tor-update.prefix-updated=Обновленный
onboarding.tour-tor-toolbar=Панель инструментов
onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
onboarding.tour-tor-toolbar-update-9.0.next-button=Перейти в Сеть Tor
diff --git a/chrome/locale/sv-SE/browserOnboarding.properties b/chrome/locale/sv-SE/browserOnboarding.properties
index 06b41901..21001db9 100644
--- a/chrome/locale/sv-SE/browserOnboarding.properties
+++ b/chrome/locale/sv-SE/browserOnboarding.properties
@@ -51,7 +51,7 @@ onboarding.tour-tor-update.prefix-updated=Uppdaterad
onboarding.tour-tor-toolbar=Verktygsfält
onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
onboarding.tour-tor-toolbar-update-9.0.next-button=Gå till Tor-nätverket
diff --git a/chrome/locale/tr/browserOnboarding.properties b/chrome/locale/tr/browserOnboarding.properties
index 0b50cf36..b5e9b49f 100644
--- a/chrome/locale/tr/browserOnboarding.properties
+++ b/chrome/locale/tr/browserOnboarding.properties
@@ -15,8 +15,8 @@ onboarding.tour-tor-privacy.button=Tor Ağına Geç
onboarding.tour-tor-network=Tor Ağı
onboarding.tour-tor-network.title=Tek merkezden yönetilmeyen bir ağda gezinin.
onboarding.tour-tor-network.description=Tor Browser sizi tüm dünyada binlerce gönüllü tarafından işletilen Tor Ağına bağlar. VPN bağlantısının aksine güvenlik açığı oluşturacak bir nokta ya da İnternet üzerinde kişisel gizliliğinizi koruyarak gezinmeniz için güvenmeniz gereken merkezi bir kuruluş yoktur.
-onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
-onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
+onboarding.tour-tor-network.description-para2=YENİ: Tor Ağı Ayarları, Tor ağına erişimin engellendiği yerlerde köprü isteğinde bulunma özelliği artı Ayarlar bölümü altında bulunabilir.
+onboarding.tour-tor-network.action-button=Tor Ağı Ayarlarınızı Yapın
onboarding.tour-tor-network.button=Devre Görünümüne Geç
onboarding.tour-tor-circuit-display=Devre Görünümü
@@ -49,10 +49,10 @@ onboarding.tour-tor-update.prefix-new=Yeni
onboarding.tour-tor-update.prefix-updated=Güncellendi
onboarding.tour-tor-toolbar=Araç Çubuğu
-onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
-onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
-onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.title=Soğan Düğmesine Veda Edin.
+onboarding.tour-tor-toolbar-update-9.0.description=Tor işlemlerini tamamen Tor Browser ile yapabilmenizi istiyoruz.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=Bu nedenle, artık soğan düğmesini kullanmak yerine adres çubuğundaki [i] simgesine tıklayarak Tor Devresini görebilir, araç çubuğu düğmesini ya da [≡] menüsünü kullanarak Yeni Kimlik isteğinde bulunabilirsiniz.
+onboarding.tour-tor-toolbar-update-9.0.button=Nasıl Yeni Kimlik İsteğinde Bulunacaksınız
onboarding.tour-tor-toolbar-update-9.0.next-button=Tor Ağına Geç
# Circuit Display onboarding.
diff --git a/chrome/locale/tr/torbutton.properties b/chrome/locale/tr/torbutton.properties
index 6105c7b1..4523d729 100644
--- a/chrome/locale/tr/torbutton.properties
+++ b/chrome/locale/tr/torbutton.properties
@@ -1,6 +1,6 @@
torbutton.circuit_display.internet = İnternet
torbutton.circuit_display.ip_unknown = Bilinmeyen IP
-torbutton.circuit_display.onion_site = Soğan sitesi
+torbutton.circuit_display.onion_site = Onion sitesi
torbutton.circuit_display.this_browser = Bu tarayıcı
torbutton.circuit_display.relay = Aktarıcı
torbutton.circuit_display.tor_bridge = Köprü
diff --git a/chrome/locale/vi/browserOnboarding.properties b/chrome/locale/vi/browserOnboarding.properties
index e9508e20..0b14f935 100644
--- a/chrome/locale/vi/browserOnboarding.properties
+++ b/chrome/locale/vi/browserOnboarding.properties
@@ -51,7 +51,7 @@ onboarding.tour-tor-update.prefix-updated=Updated
onboarding.tour-tor-toolbar=Toolbar
onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
onboarding.tour-tor-toolbar-update-9.0.next-button=Đi đến mạng Tor
diff --git a/chrome/locale/zh-CN/browserOnboarding.properties b/chrome/locale/zh-CN/browserOnboarding.properties
index 83aa1571..f188ac01 100644
--- a/chrome/locale/zh-CN/browserOnboarding.properties
+++ b/chrome/locale/zh-CN/browserOnboarding.properties
@@ -15,8 +15,8 @@ onboarding.tour-tor-privacy.button=前往“Tor 网络”
onboarding.tour-tor-network=Tor 网络
onboarding.tour-tor-network.title=通过非中心化的网络进行浏览。
onboarding.tour-tor-network.description=Tor 浏览器将你和世界数千名志愿者支持的 Tor 网络相连。和 VPN 不同的是,这里不会有单点故障,也不需要你为了私密浏览信任某一个中心化的实体。
-onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
-onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
+onboarding.tour-tor-network.description-para2=新内容:设置中的 Tor 网络设置,包括在 Tor 被屏蔽时获取网桥。
+onboarding.tour-tor-network.action-button=调整 Tor 网络设置
onboarding.tour-tor-network.button=前往 ’显示链路'
onboarding.tour-tor-circuit-display=显示链路
@@ -49,10 +49,10 @@ onboarding.tour-tor-update.prefix-new=新建
onboarding.tour-tor-update.prefix-updated=已更新
onboarding.tour-tor-toolbar=工具栏
-onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
-onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
-onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.title=拜拜,洋葱按钮。
+onboarding.tour-tor-toolbar-update-9.0.description=我们希望将你使用 Tor 全部操作搬到 Tor 浏览器内。
+onboarding.tour-tor-toolbar-update-9.0.description-para2=所以现在,你可以在地址栏中的[i]按钮中看到 Tor 链路,在工具栏按钮[≡]菜单中请求新的身份,而不是使用洋葱按钮。
+onboarding.tour-tor-toolbar-update-9.0.button=如何请求新身份
onboarding.tour-tor-toolbar-update-9.0.next-button=前往“Tor 网络”
# Circuit Display onboarding.
diff --git a/chrome/locale/zh-TW/browserOnboarding.properties b/chrome/locale/zh-TW/browserOnboarding.properties
index 5cd92164..0c96e284 100644
--- a/chrome/locale/zh-TW/browserOnboarding.properties
+++ b/chrome/locale/zh-TW/browserOnboarding.properties
@@ -51,7 +51,7 @@ onboarding.tour-tor-update.prefix-updated=已更新
onboarding.tour-tor-toolbar=工具列
onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
onboarding.tour-tor-toolbar-update-9.0.next-button=前往 Tor 網路
1
0
commit 017ca3ee046af4b1afa641f772834d373ff750c7
Author: Georg Koppen <gk(a)torproject.org>
Date: Sat Oct 12 12:03:55 2019 +0000
Relese prep for 0.2.19.5
Version bump
---
src/install.rdf | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/install.rdf b/src/install.rdf
index 5676e6d..40d84da 100644
--- a/src/install.rdf
+++ b/src/install.rdf
@@ -7,7 +7,7 @@
<em:creator>The Tor Project, Inc.</em:creator>
<em:contributor>Pearl Crescent, LLC</em:contributor>
<em:id>tor-launcher(a)torproject.org</em:id>
- <em:version>0.2.19.4</em:version>
+ <em:version>0.2.19.5</em:version>
<em:multiprocessCompatible>true</em:multiprocessCompatible>
<em:homepageURL>https://www.torproject.org/projects/torbrowser.html</em:homepageURL>
<em:updateURL>data:text/plain,</em:updateURL>
1
0
commit 30726c5171ad3aa5e7c2e1e260f0dbb1b2f7b346
Author: Georg Koppen <gk(a)torproject.org>
Date: Sat Oct 12 12:02:42 2019 +0000
Translation updates
---
chrome.manifest | 8 ++++++
jar.mn | 16 ++++++++++++
src/chrome/locale/af/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/ar/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/az/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/be/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/bg/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/bn/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/br/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/bs/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/ca/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/cs/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/cy/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/da/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/de/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/el/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/eo/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/es-AR/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/es-MX/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/es/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/et/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/eu/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/fa/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/fi/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/fr/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/fy/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/ga/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/gl/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/gu/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/he/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/hi/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/hr/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/hu/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/hy/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/id/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/is/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/it/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/ja/network-settings.dtd | 39 +++++++++++++++++++++++++---
src/chrome/locale/ka/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/kk/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/km/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/kn/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/ko/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/lt/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/lv/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/mk/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/mk/torlauncher.properties | 4 +--
src/chrome/locale/ml/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/mr/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/ms-MY/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/my/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/nb/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/ne/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/nl-BE/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/nl/network-settings.dtd | 33 ++++++++++++++++++++++-
src/chrome/locale/nl/torlauncher.properties | 2 +-
src/chrome/locale/nn/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/pa/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/pl/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/pt-BR/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/pt-PT/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/ro/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/ru/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/si-LK/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/sk/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/sl/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/sq/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/sr/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/sv/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/sw/network-settings.dtd | 33 ++++++++++++++++++++++-
src/chrome/locale/ta/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/te/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/th/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/tr/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/uk/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/ur/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/ur/torlauncher.properties | 2 +-
src/chrome/locale/uz/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/vi/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/zh-CN/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/zh-HK/network-settings.dtd | 31 ++++++++++++++++++++++
src/chrome/locale/zh-TW/network-settings.dtd | 31 ++++++++++++++++++++++
82 files changed, 2421 insertions(+), 10 deletions(-)
diff --git a/chrome.manifest b/chrome.manifest
index 2f55271..5c22b8c 100644
--- a/chrome.manifest
+++ b/chrome.manifest
@@ -16,6 +16,7 @@ contract @torproject.org/torlauncher-process-service;1 {FE7B4CAF-BCF4-4848-8BFF-
category profile-after-change TorProcessService @torproject.org/torlauncher-process-service;1
locale torlauncher en-US chrome/locale/en-US/
+locale torlauncher ach chrome/locale/ach/
locale torlauncher ady chrome/locale/ady/
locale torlauncher af chrome/locale/af/
locale torlauncher af-ZA chrome/locale/af-ZA/
@@ -24,6 +25,7 @@ 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 ast chrome/locale/ast/
locale torlauncher az chrome/locale/az/
locale torlauncher be chrome/locale/be/
locale torlauncher bg chrome/locale/bg/
@@ -46,6 +48,7 @@ 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 en-GB chrome/locale/en-GB/
locale torlauncher eo chrome/locale/eo/
locale torlauncher es chrome/locale/es/
locale torlauncher es-AR chrome/locale/es-AR/
@@ -64,6 +67,7 @@ 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 gd chrome/locale/gd/
locale torlauncher gl chrome/locale/gl/
locale torlauncher gu chrome/locale/gu/
locale torlauncher gu-IN chrome/locale/gu-IN/
@@ -84,6 +88,7 @@ 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 kab chrome/locale/kab/
locale torlauncher kk chrome/locale/kk/
locale torlauncher km chrome/locale/km/
locale torlauncher kn chrome/locale/kn/
@@ -117,6 +122,8 @@ 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 oc chrome/locale/oc/
+locale torlauncher or chrome/locale/or/
locale torlauncher pa chrome/locale/pa/
locale torlauncher pap chrome/locale/pap/
locale torlauncher pl chrome/locale/pl/
@@ -137,6 +144,7 @@ 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 son chrome/locale/son/
locale torlauncher sq chrome/locale/sq/
locale torlauncher sq-AL chrome/locale/sq-AL/
locale torlauncher sr chrome/locale/sr/
diff --git a/jar.mn b/jar.mn
index b078202..011323a 100644
--- a/jar.mn
+++ b/jar.mn
@@ -25,6 +25,8 @@ torlauncher.jar:
% locale torlauncher en-US %locale/en-US/
locale/en-US/ (src/chrome/locale/en-US/*)
+% locale torlauncher ach %locale/ach/
+ locale/ach/ (src/chrome/locale/ach/*)
% locale torlauncher ady %locale/ady/
locale/ady/ (src/chrome/locale/ady/*)
% locale torlauncher af %locale/af/
@@ -41,6 +43,8 @@ torlauncher.jar:
locale/ar/ (src/chrome/locale/ar/*)
% locale torlauncher arn %locale/arn/
locale/arn/ (src/chrome/locale/arn/*)
+% locale torlauncher ast %locale/ast/
+ locale/ast/ (src/chrome/locale/ast/*)
% locale torlauncher az %locale/az/
locale/az/ (src/chrome/locale/az/*)
% locale torlauncher be %locale/be/
@@ -85,6 +89,8 @@ torlauncher.jar:
locale/el/ (src/chrome/locale/el/*)
% locale torlauncher el-GR %locale/el-GR/
locale/el-GR/ (src/chrome/locale/el-GR/*)
+% locale torlauncher en-GB %locale/en-GB/
+ locale/en-GB/ (src/chrome/locale/en-GB/*)
% locale torlauncher eo %locale/eo/
locale/eo/ (src/chrome/locale/eo/*)
% locale torlauncher es %locale/es/
@@ -121,6 +127,8 @@ torlauncher.jar:
locale/fy/ (src/chrome/locale/fy/*)
% locale torlauncher ga %locale/ga/
locale/ga/ (src/chrome/locale/ga/*)
+% locale torlauncher gd %locale/gd/
+ locale/gd/ (src/chrome/locale/gd/*)
% locale torlauncher gl %locale/gl/
locale/gl/ (src/chrome/locale/gl/*)
% locale torlauncher gu %locale/gu/
@@ -161,6 +169,8 @@ torlauncher.jar:
locale/jv/ (src/chrome/locale/jv/*)
% locale torlauncher ka %locale/ka/
locale/ka/ (src/chrome/locale/ka/*)
+% locale torlauncher kab %locale/kab/
+ locale/kab/ (src/chrome/locale/kab/*)
% locale torlauncher kk %locale/kk/
locale/kk/ (src/chrome/locale/kk/*)
% locale torlauncher km %locale/km/
@@ -227,6 +237,10 @@ torlauncher.jar:
locale/nn/ (src/chrome/locale/nn/*)
% locale torlauncher nso %locale/nso/
locale/nso/ (src/chrome/locale/nso/*)
+% locale torlauncher oc %locale/oc/
+ locale/oc/ (src/chrome/locale/oc/*)
+% locale torlauncher or %locale/or/
+ locale/or/ (src/chrome/locale/or/*)
% locale torlauncher pa %locale/pa/
locale/pa/ (src/chrome/locale/pa/*)
% locale torlauncher pap %locale/pap/
@@ -267,6 +281,8 @@ torlauncher.jar:
locale/sn/ (src/chrome/locale/sn/*)
% locale torlauncher so %locale/so/
locale/so/ (src/chrome/locale/so/*)
+% locale torlauncher son %locale/son/
+ locale/son/ (src/chrome/locale/son/*)
% locale torlauncher sq %locale/sq/
locale/sq/ (src/chrome/locale/sq/*)
% locale torlauncher sq-AL %locale/sq-AL/
diff --git a/src/chrome/locale/af/network-settings.dtd b/src/chrome/locale/af/network-settings.dtd
index 739c19c..ca04ccf 100644
--- a/src/chrome/locale/af/network-settings.dtd
+++ b/src/chrome/locale/af/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Optional">
<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Poort:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Gebruikersnaam:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Wagwoord">
<!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 "Hierdie rekenaar gaan deur 'n firewall wat slegs konneksies na sekere poorte toelaat">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Toegelate Poorte:">
<!ENTITY torsettings.useBridges.checkbox "Tor is censored in my country">
<!ENTITY torsettings.useBridges.default "Select a built-in bridge">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Bridges">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Advanced">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/ar/network-settings.dtd b/src/chrome/locale/ar/network-settings.dtd
index 8055d0f..5e1673a 100644
--- a/src/chrome/locale/ar/network-settings.dtd
+++ b/src/chrome/locale/ar/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "اختياري">
<!ENTITY torsettings.useProxy.checkbox "أستخدم وسيطا للاتصال بالإنترنت">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "نوع البروكسي:">
<!ENTITY torsettings.useProxy.type.placeholder "اختر نوع الوسيط">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "العنوان:">
<!ENTITY torsettings.useProxy.address.placeholder "عنوان الإنترنت IP أو اسم المضيف">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "المنفذ:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "اسم المستخدم:">
+<!-- TODO: remove colon-->
<!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">
<!ENTITY torsettings.firewall.checkbox "اتصال الإنترنت لهذا الكمبيوتر يمر بجدار حماية يسمح بالاتصال فقط من خلال منافذ معينة">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "المنافذ المسموح بها:">
<!ENTITY torsettings.useBridges.checkbox "تور محجوب في بلدي">
<!ENTITY torsettings.useBridges.default "اختر جسرا مُدمَجا في البرنامج">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "الرجاء الانتظار بينما ننشئ اتصالا لشبكة تور.  قد يستغرق هذا عدة دقائق.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "تور">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "إعرف/ي أكثر ">
+<!ENTITY torPreferences.bridges "الجسور">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "متقدم">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "حل كاباتشا لطلب جسر.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "الحل ليس سليمًا. يُرجى إعادة المحاولة.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/az/network-settings.dtd b/src/chrome/locale/az/network-settings.dtd
index b50b5bd..b3aeaae 100644
--- a/src/chrome/locale/az/network-settings.dtd
+++ b/src/chrome/locale/az/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Əlavə">
<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Proxy Tipi:">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Ünvan:">
<!ENTITY torsettings.useProxy.address.placeholder "İP ünvanı və ya anakompüterin adı">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "İstifadəçi adı:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Şifrə:">
<!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 "Bu kompüter yalnız müəyyən portlarla əlaqəyə icazə verən təhlükəsizlik divarindan keçir">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "İczaə verilən portlar:">
<!ENTITY torsettings.useBridges.checkbox "Tor is censored in my country">
<!ENTITY torsettings.useBridges.default "Select a built-in bridge">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Körpülər">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Qabaqcıl">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/be/network-settings.dtd b/src/chrome/locale/be/network-settings.dtd
index c4f9af4..38e2752 100644
--- a/src/chrome/locale/be/network-settings.dtd
+++ b/src/chrome/locale/be/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Optional">
<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Username:">
+<!-- TODO: remove colon-->
<!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">
<!ENTITY torsettings.firewall.checkbox "This computer goes through a firewall that only allows connections to certain ports">
+<!-- TODO: remove colon-->
<!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">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Даведацца больш">
+<!ENTITY torPreferences.bridges "Масты">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Дадаткова">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/bg/network-settings.dtd b/src/chrome/locale/bg/network-settings.dtd
index 3ce31b5..01223d7 100644
--- a/src/chrome/locale/bg/network-settings.dtd
+++ b/src/chrome/locale/bg/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Допълнителен">
<!ENTITY torsettings.useProxy.checkbox "Аз използвам прокси за достъп до интернет">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Прокси Тип:">
<!ENTITY torsettings.useProxy.type.placeholder "Изберете вида на проксито">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Адрес:">
<!ENTITY torsettings.useProxy.address.placeholder "IP адрес или хост">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Порт:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Потребителско име:">
+<!-- TODO: remove colon-->
<!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">
<!ENTITY torsettings.firewall.checkbox "Този компютър се свързва през firewall,който позволява връзки само към определени портове.">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Позволени портове:">
<!ENTITY torsettings.useBridges.checkbox "Tor е цензуриран в моята страна">
<!ENTITY torsettings.useBridges.default "Избор на вграден бридж">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Моля изчакайте, докато установим връзка с Тор мрежата..  Toва може да отнеме няколко минути.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Бриджове">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Напреднали">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Решете CAPTCHA за заявка на bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "Решението не е правилно. Моля, опитайте пак.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/bn/network-settings.dtd b/src/chrome/locale/bn/network-settings.dtd
index 99ab804..67680f7 100644
--- a/src/chrome/locale/bn/network-settings.dtd
+++ b/src/chrome/locale/bn/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "ঐচ্ছিক">
<!ENTITY torsettings.useProxy.checkbox "আমি ইন্টারনেটে সংযোগ স্থাপন করতে প্রক্সি ব্যবহার করি">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "প্রক্সি প্রকার:">
<!ENTITY torsettings.useProxy.type.placeholder "একটি প্রক্সি টাইপ নির্বাচন করুন">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "ঠিকানা:">
<!ENTITY torsettings.useProxy.address.placeholder "আইপি ঠিকানা বা হোস্টনাম">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "পোর্টঃ">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "ব্যবহারকারী নাম:">
+<!-- TODO: remove colon-->
<!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">
<!ENTITY torsettings.firewall.checkbox "এই কম্পিউটারটি একটি ফায়ারওয়ালের মাধ্যমে যায় যা কেবলমাত্র কিছু পোর্টের সংযোগের অনুমতি দেয়">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "অনুমোদিত পোর্টসমূহ:">
<!ENTITY torsettings.useBridges.checkbox "টর আমার দেশে সেন্সর করা হয়">
<!ENTITY torsettings.useBridges.default "একটি অন্তর্নির্মিত ব্রিজ নির্বাচন করুন">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "আমরা টর নেটওয়ার্কে একটি সংযোগ স্থাপন করার সময় অনুগ্রহ করে অপেক্ষা করুন।   এই কয়েক মিনিট সময় নিতে পারে.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "আরও জানুন">
+<!ENTITY torPreferences.bridges "ব্রিজ">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "অগ্রবর্তী">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "একটি ব্রিজ অনুরোধ করার জন্য ক্যাপচা সমাধান করুন।...">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "সমাধান সঠিক নয়। অনুগ্রহপূর্বক আবার চেষ্টা করুন.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/br/network-settings.dtd b/src/chrome/locale/br/network-settings.dtd
index 4870d28..86eb33d 100644
--- a/src/chrome/locale/br/network-settings.dtd
+++ b/src/chrome/locale/br/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Optional">
<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Username:">
+<!-- TODO: remove colon-->
<!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">
+<!-- TODO: remove colon-->
<!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">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Gortozit mar plij ma tiazefemp ur gevreadenn ouzh ar genrouedad Tor.   Gellout a rafe kemer meur a vunutenn.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Gouzout hiroc'h">
+<!ENTITY torPreferences.bridges "Pontoù">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Araokaet">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/bs/network-settings.dtd b/src/chrome/locale/bs/network-settings.dtd
index 25ee444..ba458c3 100644
--- a/src/chrome/locale/bs/network-settings.dtd
+++ b/src/chrome/locale/bs/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Optional">
<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Korisničko ime:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Šifra">
<!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">
+<!-- TODO: remove colon-->
<!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">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Bridges">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Advanced">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/ca/network-settings.dtd b/src/chrome/locale/ca/network-settings.dtd
index 0d02c66..65d4f16 100644
--- a/src/chrome/locale/ca/network-settings.dtd
+++ b/src/chrome/locale/ca/network-settings.dtd
@@ -27,17 +27,23 @@
">
<!ENTITY torsettings.useProxy.checkbox "Utilitzo un servidor intermediari per a accedir a Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Tipus de servidor intermediari local:">
<!ENTITY torsettings.useProxy.type.placeholder "seleccioneu un tipus de servidor intermediari">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Adreça:">
<!ENTITY torsettings.useProxy.address.placeholder "Adreça IP o nom del host">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Nom d'usuari:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Contrasenya:">
<!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 "Aquest ordinador va a través d'un tallafoc que només permet connexions a certs ports">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Ports permesos:">
<!ENTITY torsettings.useBridges.checkbox "Tor està censurat al meu país">
<!ENTITY torsettings.useBridges.default "Seleccioneu un pont predefinit">
@@ -61,3 +67,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Espereu mentre establim una connexió amb la xarxa Tor.  Això pot tardar uns minuts.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Aprèn més">
+<!ENTITY torPreferences.bridges "Ponts">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Avançat">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Resolgueu el CAPTCHA per a sol·licitar un pont.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "La solució no és correcta. Torneu a provar-ho.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/cs/network-settings.dtd b/src/chrome/locale/cs/network-settings.dtd
index 1e76823..61c193f 100644
--- a/src/chrome/locale/cs/network-settings.dtd
+++ b/src/chrome/locale/cs/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Volitelné">
<!ENTITY torsettings.useProxy.checkbox "Používám proxy pro připojení k Internetu">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Typ proxy:">
<!ENTITY torsettings.useProxy.type.placeholder "vyberte typ proxy">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Adresa:">
<!ENTITY torsettings.useProxy.address.placeholder "IP adresa nebo název serveru">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Uživatel:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Heslo:">
<!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 "Tento počítač používá firewall, který povoluje připojení pouze přes některé porty.">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Povolené porty:">
<!ENTITY torsettings.useBridges.checkbox "Tor je v mé zemi cenzurován">
<!ENTITY torsettings.useBridges.default "Vyberte vestavěný most">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Počkejte prosím na vytvoření spojení do sítě Tor.  Může to trvat několik minut.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Zjistit více">
+<!ENTITY torPreferences.bridges "Bridge">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Pokročilé">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Pro vyžádání mostu prosím opište kód CAPTCHA.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "Neopsali jste kód správně. Zkuste to prosím znovu.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/cy/network-settings.dtd b/src/chrome/locale/cy/network-settings.dtd
index e721af4..55cb7db 100644
--- a/src/chrome/locale/cy/network-settings.dtd
+++ b/src/chrome/locale/cy/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Dewisiol">
<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Math Dirprwy:">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Cyfeiriad:">
<!ENTITY torsettings.useProxy.address.placeholder "Cyfeiriad IP neu enw gwesteiwr">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Porth:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Enw defnyddiwr:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Cyfrinair:">
<!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">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Pyrth a ganiateir:">
<!ENTITY torsettings.useBridges.checkbox "Tor is censored in my country">
<!ENTITY torsettings.useBridges.default "Select a built-in bridge">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Bridges">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Advanced">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/da/network-settings.dtd b/src/chrome/locale/da/network-settings.dtd
index 52f89be..9cde33f 100644
--- a/src/chrome/locale/da/network-settings.dtd
+++ b/src/chrome/locale/da/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Valgfri">
<!ENTITY torsettings.useProxy.checkbox "Jeg bruger en proxy til at oprette forbindelse til internettet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Proxytype:">
<!ENTITY torsettings.useProxy.type.placeholder "vælg en proxytype">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Adresse:">
<!ENTITY torsettings.useProxy.address.placeholder "IP-adresse eller værtsnavn">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Brugernavn:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Adgangskode:">
<!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 "Computeren går gennem en firewall som kun tillader forbindelse til bestemte porte">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Tilladte porte:">
<!ENTITY torsettings.useBridges.checkbox "Tor er censureret i mit land">
<!ENTITY torsettings.useBridges.default "Vælg en indbygget bro">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Vent venligst mens der etableres forbindelse til Tor-netværket.  Det kan tage flere minutter.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Læs mere">
+<!ENTITY torPreferences.bridges "Broer">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Avanceret">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Løs CAPTCHA'en for at anmode om en bro.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "Løsningen er ikke korrekt. Prøv venligst igen.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/de/network-settings.dtd b/src/chrome/locale/de/network-settings.dtd
index ae68303..33e1bf4 100644
--- a/src/chrome/locale/de/network-settings.dtd
+++ b/src/chrome/locale/de/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Optional">
<!ENTITY torsettings.useProxy.checkbox "Ich benutze einen Proxy, um mich mit dem Internet zu verbinden">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Proxy-Typ:">
<!ENTITY torsettings.useProxy.type.placeholder "Proxy-Typ auswählen">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Adresse:">
<!ENTITY torsettings.useProxy.address.placeholder "IP-Adresse oder Rechnername">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Anschluss:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Nutzername:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Passwort:">
<!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 "Die Verbindung dieses Rechner geht durch eine Firewall, die nur bestimmte Anschlüsse zulässt">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Erlaubte Anschlüsse:">
<!ENTITY torsettings.useBridges.checkbox "Tor wird in meinem Land blockiert.">
<!ENTITY torsettings.useBridges.default "Bereitgestellte Brücke auswählen">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Bitte warten Sie, während eine Verbindung zum Tor-Netzwerk hergestellt wird.  Das kann einige Minuten dauern.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Mehr erfahren">
+<!ENTITY torPreferences.bridges "Brücken">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Fortgeschritten">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Löse das CAPTCHA, um eine Brücke anzufordern.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "Die Lösung ist nicht korrekt. Bitte versuchen Sie es erneut.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/el/network-settings.dtd b/src/chrome/locale/el/network-settings.dtd
index a5b525b..740406b 100644
--- a/src/chrome/locale/el/network-settings.dtd
+++ b/src/chrome/locale/el/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Προεραιτικα">
<!ENTITY torsettings.useProxy.checkbox "Χρησιμοποιώ διακομιστή μεσολάβησης για να συνδεθώ στο ίντερνετ.">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Τύπος διακομιστή μεσολάβησης:">
<!ENTITY torsettings.useProxy.type.placeholder "Επιλέξτε τύπο διακομιστή μεσολάβησης.">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Διεύθυνση:">
<!ENTITY torsettings.useProxy.address.placeholder "Διεύθυνση ΙΡ η όνομα υπολογιστή ">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Θύρα συστήματος:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Όνομα Χρήστη:">
+<!-- TODO: remove colon-->
<!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">
<!ENTITY torsettings.firewall.checkbox "Το τείχος προστασίας μου με αφήνει να συνδέομαι μόνο σε συγκεκριμένες θύρες συστήματος">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Επιτρεπόμενες Θύρες:">
<!ENTITY torsettings.useBridges.checkbox "Ο Tor είναι αποκλεισμένος στη χώρα μου">
<!ENTITY torsettings.useBridges.default "Επιλέξτε ένα ενταγμένο bridge">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Παρακαλώ περιμένετε καθώς δημιουργούμε σύνδεση στο δίκτυο Tor.  Αυτό μπορεί να πάρει μερικά λεπτά.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Μάθετε περισσότερα">
+<!ENTITY torPreferences.bridges "Γέφυρες">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Ρυθμίσεις για προχωρημένους">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Λύστε το CAPTCHA για να ζητήσετε γέφυρα.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "Η λύση δεν είναι σωστή. Παρακαλώ προσπαθήστε ξανά.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/eo/network-settings.dtd b/src/chrome/locale/eo/network-settings.dtd
index 5bca622..123b293 100644
--- a/src/chrome/locale/eo/network-settings.dtd
+++ b/src/chrome/locale/eo/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Optional">
<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Adreso:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Pordo:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Username:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Pasvorto:">
<!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">
+<!-- TODO: remove colon-->
<!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">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Toro">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Pontoj">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Altnivela">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/es-AR/network-settings.dtd b/src/chrome/locale/es-AR/network-settings.dtd
index d9b8996..b5c9a4d 100644
--- a/src/chrome/locale/es-AR/network-settings.dtd
+++ b/src/chrome/locale/es-AR/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Opcional">
<!ENTITY torsettings.useProxy.checkbox "Uso un proxy para conectar a Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Tipo de proxy:">
<!ENTITY torsettings.useProxy.type.placeholder "seleccioná un tipo de proxy">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Dirección:">
<!ENTITY torsettings.useProxy.address.placeholder "Dirección IP o nombre de equipo">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Puerto:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Usuario:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Contraseña:">
<!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 "Esta computadora pasa a través de un cortafuegos que sólo permite conexiones a ciertos puertos">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Puerto permitidos:">
<!ENTITY torsettings.useBridges.checkbox "Tor está censurado en mi país">
<!ENTITY torsettings.useBridges.default "Seleccioná un puente incorporado">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Por favor, esperá mientras establecemos una conexión a la red de Tor.  Puede tardar varios minutos.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Aprendé más">
+<!ENTITY torPreferences.bridges "Puentes">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Advanced">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solucioná el CAPTCHA para solicitar un puente.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "La solución no es correcta. Por favor intentá de nuevo.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/es-MX/network-settings.dtd b/src/chrome/locale/es-MX/network-settings.dtd
index 55a4949..02fef62 100644
--- a/src/chrome/locale/es-MX/network-settings.dtd
+++ b/src/chrome/locale/es-MX/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Opcional">
<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Puerto:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Username:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Contraseña:">
<!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">
+<!-- TODO: remove colon-->
<!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">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Por favor, espera mientras establecemos una conexión con Tor network.  Esto puede llevar varios minutos.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Puentes">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Advanced">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/es/network-settings.dtd b/src/chrome/locale/es/network-settings.dtd
index 9949f21..e8c1793 100644
--- a/src/chrome/locale/es/network-settings.dtd
+++ b/src/chrome/locale/es/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Opcional">
<!ENTITY torsettings.useProxy.checkbox "Utilizo un proxy para conectar a Internet.">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Tipo de proxy:">
<!ENTITY torsettings.useProxy.type.placeholder "seleccionar un tipo de proxy">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Dirección:">
<!ENTITY torsettings.useProxy.address.placeholder "Dirección IP o nombre de máquina (host)">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Puerto:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Nombre de usuario:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Contraseña:">
<!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 "Esta computadora va a través de un cortafuegos(firewall) que sólo permite conexiones a ciertos puertos">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Puertos permitidos:">
<!ENTITY torsettings.useBridges.checkbox "En mi país se censura a Tor">
<!ENTITY torsettings.useBridges.default "Seleccionar un puente construido">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Espera mientras establecemos una conexión a la red Tor.  Esto puede durar varios minutos.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Configuración de Tor">
+<!ENTITY torPreferences.torSettingsDescription "El Navegador Tor enruta tu tráfico a través de la Red Tor, ejecutada por miles de voluntarios alrededor del mundo." >
+<!ENTITY torPreferences.learnMore "Más información">
+<!ENTITY torPreferences.bridges "Puentes">
+<!ENTITY torPreferences.bridgesDescription "Los puentes te ayudan a acceder a la Red Tor en lugares donde Tor está bloqueado. Dependiendo de dónde te encuentres, un puente puede funcionar mejor que otro.">
+<!ENTITY torPreferences.useBridge "Usa un puente">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Solicite un Nuevo Puente&#x2026;">
+<!ENTITY torPreferences.provideBridge "Proporcionar un puente">
+<!ENTITY torPreferences.advanced "Avanzado">
+<!ENTITY torPreferences.advancedDescription "Configura cómo el Navegador Tor se conecta a Internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Valores separados por comas">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Solicitar Puente">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contactando con BridgeDB. Espera por favor.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Resuelve el CAPTCHA para solicitar un puente.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "La solución no es correcta. Por favor, inténtalo de nuevo.">
+<!ENTITY torPreferences.viewTorLogs "Ver los registros de Tor.">
+<!ENTITY torPreferences.viewLogs "Ver registros&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Registros de Tor">
diff --git a/src/chrome/locale/et/network-settings.dtd b/src/chrome/locale/et/network-settings.dtd
index 8a23e11..e4f9b2e 100644
--- a/src/chrome/locale/et/network-settings.dtd
+++ b/src/chrome/locale/et/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Valikuline">
<!ENTITY torsettings.useProxy.checkbox "Ma kasutan proksit et ühenduda internetti">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Proksi tüüp:">
<!ENTITY torsettings.useProxy.type.placeholder "valige proksi tüüp">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Aadress:">
<!ENTITY torsettings.useProxy.address.placeholder "IP aadress või haldaja nimi">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Kasutajanimi:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Parool:">
<!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 "See arvuti läheb läbi tulemüüri mis lubab ainult ühendusi kindlatesse portidesse.">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Lubatud pordid:">
<!ENTITY torsettings.useBridges.checkbox "Tor on minu riigis tsensoreeritud">
<!ENTITY torsettings.useBridges.default "Valige sisseehitatud sild">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Palun oodake kuni loome ühenduse Tor\'i võrguga.  See võib võtta mitu minutit.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Loe lähemalt">
+<!ENTITY torPreferences.bridges "Sillad">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Peenhäälestus">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Lahenda CAPTCHA, et taotleda silda.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/eu/network-settings.dtd b/src/chrome/locale/eu/network-settings.dtd
index fc45f6b..e04cc7e 100644
--- a/src/chrome/locale/eu/network-settings.dtd
+++ b/src/chrome/locale/eu/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Hautazkoa">
<!ENTITY torsettings.useProxy.checkbox "Proxy bat erabiltzen dut Internetera sartzeko">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Proxy mota:">
<!ENTITY torsettings.useProxy.type.placeholder "proxy mota aukeratu">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Helbidea:">
<!ENTITY torsettings.useProxy.address.placeholder "IP helbide edo ostalari izena">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Ataka:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Erabiltzaile izena:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Pasahitza:">
<!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 "Ordenagailu honek ataka zehatz batzuetara bakarrik konektatzea baimentzen duen sueten baten zehar doa">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Baimendutako atakak:">
<!ENTITY torsettings.useBridges.checkbox "Tor zentsuratuta dago nire herrialdean">
<!ENTITY torsettings.useBridges.default "Select a built-in bridge">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Mesedez itxaron Tor sarera konexioa ezartzen dugun bitartean.  Honek minutu batzuk har litzake.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Ikasi gehiago">
+<!ENTITY torPreferences.bridges "Zubiak">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Aurreratua">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "CAPTCHAa ebatzi ezazu zubi bat eskatzeko.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "Ebazpena ez da zuzena. Mesedez saiatu berriro.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/fa/network-settings.dtd b/src/chrome/locale/fa/network-settings.dtd
index dc220d4..89dd4d4 100644
--- a/src/chrome/locale/fa/network-settings.dtd
+++ b/src/chrome/locale/fa/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "اختیاری">
<!ENTITY torsettings.useProxy.checkbox "من برای دسترسی به اینترنت از پروکسی استفاده میکنم.">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "نوع پراکسی:">
<!ENTITY torsettings.useProxy.type.placeholder "یک نوع پروکسی را انتخاب کنید">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "آدرس:">
<!ENTITY torsettings.useProxy.address.placeholder "آدرس آیپی یا نام میزبان">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "پورت:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "نام کاربری:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "رمز عبور">
<!ENTITY torsettings.useProxy.type.socks4 "ساکس ۴">
<!ENTITY torsettings.useProxy.type.socks5 "ساکس ۵">
<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
<!ENTITY torsettings.firewall.checkbox "به نظر می رسد شبکه ارتباطی شما به اینترنت، از یک فایروال استفاده می کند. یعنی فقط اجازه اتصال از یک سری درگاه های به خصوص را می دهد.">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "پورت های مجاز:">
<!ENTITY torsettings.useBridges.checkbox "تور در کشور من فیلتر یا سانسور شده است">
<!ENTITY torsettings.useBridges.default "پل ساخته شده را انتخاب کنید">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "لطفا صبر کنید. در حال برقراری ارتباط با شبکه تٌر.&160; این پروسه ممکن است چند دقیقه به طول بینجامد.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "بیشتر بدانید">
+<!ENTITY torPreferences.bridges "پل ها">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "پیشرفته ">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "برای درخواست یک پل کپچا را حل کنید.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "راه حل درست نیست. لطفا دوباره تلاش کنید.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/fi/network-settings.dtd b/src/chrome/locale/fi/network-settings.dtd
index 33de09f..75c4ad3 100644
--- a/src/chrome/locale/fi/network-settings.dtd
+++ b/src/chrome/locale/fi/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Vaihtoehtoinen">
<!ENTITY torsettings.useProxy.checkbox "Käytän välityspalvelinta yhdistääkseni internetiin">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Välityspalvelintyyppi:">
<!ENTITY torsettings.useProxy.type.placeholder "valitse välityspalvelintyyppi">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Osoite:">
<!ENTITY torsettings.useProxy.address.placeholder "IP-osoite tai palvelinnimi">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Portti:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Käyttäjätunnus:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Salasana:">
<!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 "Tämän tietokoneen palomuuri sallii yhteydet vain tiettyjen porttien kautta">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Sallitut portit:">
<!ENTITY torsettings.useBridges.checkbox "Maani sensuroi Tor'ia">
<!ENTITY torsettings.useBridges.default "Valitse sisäänrakennettu silta">
@@ -61,3 +67,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Odota pieni hetki, kun yhteys TOR-verkostoon luodaan. 
Tässä saattaa kestää muutama minuutti.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Opi lisää">
+<!ENTITY torPreferences.bridges "Sillat">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Lisätietoja">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Ratkaise CAPTCHA jotta voit pyytää sillan.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "Ratkaisu ei ollut oikein. Yritä uudelleen.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/fr/network-settings.dtd b/src/chrome/locale/fr/network-settings.dtd
index fd80e04..82a9353 100644
--- a/src/chrome/locale/fr/network-settings.dtd
+++ b/src/chrome/locale/fr/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "facultatif">
<!ENTITY torsettings.useProxy.checkbox "J’utilise un mandataire pour accéder à Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Type de mandataire :">
<!ENTITY torsettings.useProxy.type.placeholder "sélectionner un type de mandataire">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Adresse :">
<!ENTITY torsettings.useProxy.address.placeholder "adresse IP ou nom d’hôte">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port :">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Nom d’utilisateur :">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Mot de 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 "Cet ordinateur passe par un pare-feu qui n’autorise que les connexions à certains ports">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Ports autorisés :">
<!ENTITY torsettings.useBridges.checkbox "Tor est censuré dans mon pays">
<!ENTITY torsettings.useBridges.default "Sélectionner un pont intégré">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Veuillez patienter pendant que nous établissons une connexion vers le réseau Tor. Cela pourrait prendre plusieurs minutes.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "En apprendre davantage">
+<!ENTITY torPreferences.bridges "Ponts">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Avancé">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Résoudre le captcha pour demander un pont.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "La solution est erronée. Veuillez ressayer.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/fy/network-settings.dtd b/src/chrome/locale/fy/network-settings.dtd
index dee4e14..74c947e 100644
--- a/src/chrome/locale/fy/network-settings.dtd
+++ b/src/chrome/locale/fy/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Optional">
<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Username:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Wachtwurd:">
<!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">
+<!-- TODO: remove colon-->
<!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">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Bridges">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Advanced">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/ga/network-settings.dtd b/src/chrome/locale/ga/network-settings.dtd
index ec8c51c..e83332e 100644
--- a/src/chrome/locale/ga/network-settings.dtd
+++ b/src/chrome/locale/ga/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Roghnach">
<!ENTITY torsettings.useProxy.checkbox "Úsáidim seachfhreastalaí chun ceangal leis an Idirlíon">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Cineál an tSeachfhreastalaí:">
<!ENTITY torsettings.useProxy.type.placeholder "roghnaigh cineál an tseachfhreastalaí">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Seoladh:">
<!ENTITY torsettings.useProxy.address.placeholder "Seoladh IP nó óstainm">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Ainm úsáideora:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Focal faire:">
<!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 "Téann an ríomhaire seo trí bhalla dóiteáin nach gceadaíonn ceangail ach le poirt áirithe">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Poirt Cheadaithe:">
<!ENTITY torsettings.useBridges.checkbox "Déantar cinsireacht ar Tor sa tír seo">
<!ENTITY torsettings.useBridges.default "Roghnaigh droichead ionsuite">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Fan tamall agus ceangal le líonra Tor á bhunú.  Seans go dtógfaidh seo cúpla nóiméad.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Tuilleadh Eolais">
+<!ENTITY torPreferences.bridges "Droichid">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Advanced">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Réitigh an CAPTCHA le droichead a iarraidh.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "Níl an freagra sin ceart. Bain triail eile as.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/gl/network-settings.dtd b/src/chrome/locale/gl/network-settings.dtd
index bde5036..88b0780 100644
--- a/src/chrome/locale/gl/network-settings.dtd
+++ b/src/chrome/locale/gl/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Opcional">
<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Tipo de Proxy:">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Enderezo:">
<!ENTITY torsettings.useProxy.address.placeholder "Enderezo IP ou nome da máquina">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Porto:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Nome de usuario:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Contrasinal:">
<!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 pasa por un firewall que só permite conexións a certos portos">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Portos permitidos:">
<!ENTITY torsettings.useBridges.checkbox "Tor is censored in my country">
<!ENTITY torsettings.useBridges.default "Select a built-in bridge">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Pontes">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Avanzados">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/gu/network-settings.dtd b/src/chrome/locale/gu/network-settings.dtd
index 806c9a6..9a46a2a 100644
--- a/src/chrome/locale/gu/network-settings.dtd
+++ b/src/chrome/locale/gu/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Optional">
<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "પોર્ટ:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Username:">
+<!-- TODO: remove colon-->
<!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">
+<!-- TODO: remove colon-->
<!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">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "ટોર">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Bridges">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "અદ્યતન">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/he/network-settings.dtd b/src/chrome/locale/he/network-settings.dtd
index 135530f..99f0f30 100644
--- a/src/chrome/locale/he/network-settings.dtd
+++ b/src/chrome/locale/he/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "רשותי">
<!ENTITY torsettings.useProxy.checkbox "אני משתמש בייפוי־כוח כדי להתחבר לאינטרנט">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "סוג ייפוי־כוח:">
<!ENTITY torsettings.useProxy.type.placeholder "בחר סוג ייפוי־כוח">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "כתובת:">
<!ENTITY torsettings.useProxy.address.placeholder "כתובת IP או שם מארח">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "פתחה:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "שם משתמש:">
+<!-- TODO: remove colon-->
<!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">
<!ENTITY torsettings.firewall.checkbox "מחשב זה עובר דרך חומת אש המתירה חיבורים רק אל פתחות מסוימות">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "פתחות מותרות:">
<!ENTITY torsettings.useBridges.checkbox "Tor מצונזר במדינה שלי">
<!ENTITY torsettings.useBridges.default "בחר גשר מובנה">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "אנא המתן בזמן שאנחנו מקימים חיבור אל רשת Tor.  זה עשוי לקחת מספר דקות.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "למד עוד">
+<!ENTITY torPreferences.bridges "גשרים">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "מתקדם">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "פתור את ה־CAPTCHA כדי לבקש גשר.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "הפתרון אינו נכון. אנא נסה שוב.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/hi/network-settings.dtd b/src/chrome/locale/hi/network-settings.dtd
index 35916b5..6ef9422 100644
--- a/src/chrome/locale/hi/network-settings.dtd
+++ b/src/chrome/locale/hi/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "ऐच्छिक">
<!ENTITY torsettings.useProxy.checkbox "मैं इंटरनेट से कनेक्ट करने के लिए प्रॉक्सी का उपयोग करता हूं">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "प्रॉक्सी प्रकार:">
<!ENTITY torsettings.useProxy.type.placeholder "प्रॉक्सी प्रकार का चयन करें">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "पता :">
<!ENTITY torsettings.useProxy.address.placeholder "IP पता या मेजबाननाम">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "पोर्ट/द्वार :">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "उपयोगकर्ता नाम">
+<!-- TODO: remove colon-->
<!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">
<!ENTITY torsettings.firewall.checkbox "यह कंप्यूटर फ़ायरवॉल के माध्यम से जाता है जो केवल कुछ पोर्ट्स के कनेक्शन की अनुमति देता है...">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "अनुमति प्राप्त पोर्ट्स ">
<!ENTITY torsettings.useBridges.checkbox "टोर मेरे देश में सेंसर किया गया है">
<!ENTITY torsettings.useBridges.default "एक अंतर्निर्मित पुल का चयन करें">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "कुछ देर रुकिए। हम टोर की संजाल से जुड़ रहे हैं। कुछ मिनट लग सकते हैं।">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "टो">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "और अधिक जानें">
+<!ENTITY torPreferences.bridges "पुल">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "उन्नत">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "पुल का अनुरोध करने के लिए कैप्चा को हल करें।">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "समाधान सही नहीं है। कृपया पुन: प्रयास करें।">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/hr/network-settings.dtd b/src/chrome/locale/hr/network-settings.dtd
index 26ca1a3..5a5dcf9 100644
--- a/src/chrome/locale/hr/network-settings.dtd
+++ b/src/chrome/locale/hr/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Neobavezno">
<!ENTITY torsettings.useProxy.checkbox "Koristim proxy za spajanje na internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Tip proxy-a:">
<!ENTITY torsettings.useProxy.type.placeholder "odaberite tip proxy-a">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Adresa:">
<!ENTITY torsettings.useProxy.address.placeholder "IP adresa ili poslužitelj">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Korisničko ime:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Lozinka:">
<!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 "Ovo raučunalo ide kroz vatrozid koji dozvoljava veze samo preko pojedinih portova.">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Dopušteni portovi:">
<!ENTITY torsettings.useBridges.checkbox "Tor je cenzuriran u mojoj zemlji">
<!ENTITY torsettings.useBridges.default "Odaberite ugrađeni most">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Molimo pričekajte dok uspostavljamo vezu sa Tor mrežom.   Ovo može potrajati nekoliko minuta.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Saznajte više">
+<!ENTITY torPreferences.bridges "Mostovi">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Napredno">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/hu/network-settings.dtd b/src/chrome/locale/hu/network-settings.dtd
index c474df2..487fd65 100644
--- a/src/chrome/locale/hu/network-settings.dtd
+++ b/src/chrome/locale/hu/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Opcionális">
<!ENTITY torsettings.useProxy.checkbox "Proxy-t használok az Internetre való kapcsolódáshoz">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Proxy Típus:">
<!ENTITY torsettings.useProxy.type.placeholder " válaszon ki egy proxy típust">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Cím:">
<!ENTITY torsettings.useProxy.address.placeholder "IP cím vagy gépnév">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Felhasználónév:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Jelszó:">
<!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 "A számítógép egy tűzfalon keresztül kommunikál, ami csak adott portokon keresztül engedélyezi a kapcsolatotokat.">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Engedélyezett portok:">
<!ENTITY torsettings.useBridges.checkbox "A Tor cenzúrázva van az országomban">
<!ENTITY torsettings.useBridges.default "Válasszon ki egy beépített hidat">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Kérlek várj, amíg létrehozunk egy kapcsolatot a Tor hálózathoz.  Ez eltarthat néhány percig.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Tudjon meg többet">
+<!ENTITY torPreferences.bridges "Hidak">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Speciális">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Oldjon meg egy CAPTCHA-t a híd kéréséhez.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "A megoldás nem helyes. Kérjük próbálja újra.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/hy/network-settings.dtd b/src/chrome/locale/hy/network-settings.dtd
index 1f36ac3..958b4c4 100644
--- a/src/chrome/locale/hy/network-settings.dtd
+++ b/src/chrome/locale/hy/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Optional">
<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Username:">
+<!-- TODO: remove colon-->
<!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">
+<!-- TODO: remove colon-->
<!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">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Bridges">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Advanced">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/id/network-settings.dtd b/src/chrome/locale/id/network-settings.dtd
index d537d7b..5fefae6 100644
--- a/src/chrome/locale/id/network-settings.dtd
+++ b/src/chrome/locale/id/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Opsional">
<!ENTITY torsettings.useProxy.checkbox "Saya menggunakan proxy untuk terhubung ke Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Tipe Proksi:">
<!ENTITY torsettings.useProxy.type.placeholder "pilih jenis proxy">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Alamat:">
<!ENTITY torsettings.useProxy.address.placeholder "alamat IP atau nama host">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Nama User:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Kata sandi:">
<!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 "Komputer ini pergi melalui firewall yang hanya mengizinkan koneksi untuk beberapa port">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Port yang diizinkan:">
<!ENTITY torsettings.useBridges.checkbox "Tor disensor di negara saya">
<!ENTITY torsettings.useBridges.default "Pilih satu built-in bridge">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Mohon menunggu sambil kami membuat sambungan ke jaringan TorJaringan Tor.  Ini akan memakan waktu beberapa menit">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Pelajari lebih lanjut">
+<!ENTITY torPreferences.bridges "Jembatan-jembatan">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Advanced ">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Selesaikan CAPTCHA untuk meminta sebuah bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "Solusinya tidak tepat. Silakan coba lagi.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/is/network-settings.dtd b/src/chrome/locale/is/network-settings.dtd
index 33e81fb..5556d16 100644
--- a/src/chrome/locale/is/network-settings.dtd
+++ b/src/chrome/locale/is/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Valkvætt">
<!ENTITY torsettings.useProxy.checkbox "Ég nota milliþjón (proxy) til að tengjast við internetið">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Gerð milliþjóns:">
<!ENTITY torsettings.useProxy.type.placeholder "veldu tegund milliþjóns">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Vistfang:">
<!ENTITY torsettings.useProxy.address.placeholder "IP-vistfang eða vélarheiti">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Gátt:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Notandanafn:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Lykilorð:">
<!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 "Þessi tölva tengist í gegnum eldvegg sem leyfir einungis tengingar í gegnum tilteknar gáttir">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Leyfðar gáttir:">
<!ENTITY torsettings.useBridges.checkbox "Tor er ritskoðað í landinu mínu">
<!ENTITY torsettings.useBridges.default "Veldu innbyggða brú">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Bíddu aðeins á meðan tengingu er komið á við Tor-netið.  Það getur tekið nokkrar mínútur.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Fræðast frekar">
+<!ENTITY torPreferences.bridges "Brýr">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Ítarlegra">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Leystu CAPTCHA-þrautina til að biðja um brú.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "Þessi lausn er ekki rétt. Reyndu aftur.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/it/network-settings.dtd b/src/chrome/locale/it/network-settings.dtd
index 0bb0f66..eccf9b2 100644
--- a/src/chrome/locale/it/network-settings.dtd
+++ b/src/chrome/locale/it/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Facoltativo">
<!ENTITY torsettings.useProxy.checkbox "Uso un proxy per connettermi a internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Tipo di proxy:">
<!ENTITY torsettings.useProxy.type.placeholder "Seleziona un tipo di proxy">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Indirizzo:">
<!ENTITY torsettings.useProxy.address.placeholder "Indirizzo IP oppure hostname">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Porta:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Nome utente:">
+<!-- TODO: remove colon-->
<!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 "Questo computer passa attraverso un firewall che permette le connessioni solo ad alcune porte">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Porte consentite:">
<!ENTITY torsettings.useBridges.checkbox "Tor viene censurato nel mio Paese">
<!ENTITY torsettings.useBridges.default "Seleziona un bridge integrato">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Attendi mentre stabiliamo una connessione alla rete Tor.  Potrebbe richiedere qualche minuto.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Maggiori informazioni">
+<!ENTITY torPreferences.bridges "Ponti">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Avanzate">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Risolvi il CAPTCHA per richiedere un bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "La soluzione è sbagliata. Riprova.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/ja/network-settings.dtd b/src/chrome/locale/ja/network-settings.dtd
index 40b8739..3eb98a7 100644
--- a/src/chrome/locale/ja/network-settings.dtd
+++ b/src/chrome/locale/ja/network-settings.dtd
@@ -26,28 +26,34 @@
<!ENTITY torsettings.optional "オプション">
<!ENTITY torsettings.useProxy.checkbox "インターネットに接続するのにプロキシを使用します">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "プロキシの種類:">
<!ENTITY torsettings.useProxy.type.placeholder "プロキシの種類を選択">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "アドレス:">
<!ENTITY torsettings.useProxy.address.placeholder "IP アドレスまたはホスト名">
-<!ENTITY torsettings.useProxy.port "ポート">
+<!-- TODO: remove colon-->
+<!ENTITY torsettings.useProxy.port "ポート:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "ユーザー名:">
+<!-- TODO: remove colon-->
<!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">
<!ENTITY torsettings.firewall.checkbox "このコンピューターは特定のポートへの接続のみ許可するファイアーウォールを通します。">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "許可されたポート:">
<!ENTITY torsettings.useBridges.checkbox "Tor は私の国では検閲されています">
<!ENTITY torsettings.useBridges.default "内蔵ブリッジを選択する">
<!ENTITY torsettings.useBridges.default.placeholder "ブリッジを選択">
<!ENTITY torsettings.useBridges.bridgeDB "torproject.org からブリッジの要求をする">
-<!ENTITY torsettings.useBridges.captchaSolution.placeholder "画像から文字を入力してください...">
+<!ENTITY torsettings.useBridges.captchaSolution.placeholder "画像の文字を入力してください">
<!ENTITY torsettings.useBridges.reloadCaptcha.tooltip "チャレンジを更新する">
-<!ENTITY torsettings.useBridges.captchaSubmit "生成">
+<!ENTITY torsettings.useBridges.captchaSubmit "送信">
<!ENTITY torsettings.useBridges.custom "知っているブリッジを使う">
<!ENTITY torsettings.useBridges.label "信頼できる情報源からのブリッジ情報を入力してください。">
-<!ENTITY torsettings.useBridges.placeholder "アドレス:ポート を入力(1行につきひとつ)">
+<!ENTITY torsettings.useBridges.placeholder "アドレス:ポート の形式で入力 (1 行ずつ)">
<!ENTITY torsettings.copyLog "Torのログをクリップボードにコピー">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Tor ネットワークへの接続が確立されるまでお待ちください。  これには数分間かかることがあります。">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "さらに詳しく">
+<!ENTITY torPreferences.bridges "ブリッジ">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "詳細">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt " ブリッジをリクエストするにはCAPTCHAを解いて下さい。">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "その解答は正しくありません。再度実行してください。">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/ka/network-settings.dtd b/src/chrome/locale/ka/network-settings.dtd
index 8f79930..b0612a4 100644
--- a/src/chrome/locale/ka/network-settings.dtd
+++ b/src/chrome/locale/ka/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "არასავალდებულო">
<!ENTITY torsettings.useProxy.checkbox "ინტერნეტთან დასაკავშირებლად პროქსის ვიყენებ">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "პროქსის სახეობა:">
<!ENTITY torsettings.useProxy.type.placeholder "მიუთითეთ პროქსის სახეობა">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "მისამართი">
<!ENTITY torsettings.useProxy.address.placeholder "IP-მისამართი ან დასახელება">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "პორტი:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "მომხმარებლის სახელი:">
+<!-- TODO: remove colon-->
<!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">
<!ENTITY torsettings.firewall.checkbox "კომპიუტერი ინტერნეტს უკავშირდება ქსელის ფარის გავლით, რომელშიც მხოლოდ ცალკეული პორტებია დაშვებული">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "დაშვებული პორტები:">
<!ENTITY torsettings.useBridges.checkbox "Tor შეზღუდულია ჩემს ქვეყანაში">
<!ENTITY torsettings.useBridges.default "ჩაშენებული გადამცემი ხიდის მითითება">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "გთხოვთ, მოითმინოთ სანამ დაუკავშირდება Tor-ქსელს.  რამდენიმე წუთს შეიძლება გასტანოს.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "იხილეთ ვრცლად">
+<!ENTITY torPreferences.bridges "გადამცემი ხიდები">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Advanced">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "გაიარეთ CAPTCHA, გადამცემი ხიდის მოთხოვნისთვის.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "გადაწყვეტა არასწორია. გთხოვთ სცადოთ ხელახლა.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/kk/network-settings.dtd b/src/chrome/locale/kk/network-settings.dtd
index e4bd16f..8323269 100644
--- a/src/chrome/locale/kk/network-settings.dtd
+++ b/src/chrome/locale/kk/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Optional">
<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Username:">
+<!-- TODO: remove colon-->
<!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">
+<!-- TODO: remove colon-->
<!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">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Bridges">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Кеңейтілген">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Көпірді сұрату үшін CAPTCHA-ны дұрыс жазыңыз">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "Шешім дұрыс емес. Әрекетті қайталап көріңіз.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/km/network-settings.dtd b/src/chrome/locale/km/network-settings.dtd
index 765aa47..ff36028 100644
--- a/src/chrome/locale/km/network-settings.dtd
+++ b/src/chrome/locale/km/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "ជាជម្រើស">
<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "ប្រភេទប្រូកស៊ី៖">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "អាយដ្ឋាន៖">
<!ENTITY torsettings.useProxy.address.placeholder "អាសយដ្ឋាន IP ឬឈ្មោះម៉ាស៊ីន">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "ច្រក៖">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "ឈ្មោះអ្នកប្រើ៖">
+<!-- TODO: remove colon-->
<!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">
<!ENTITY torsettings.firewall.checkbox "កុំព្យូទ័រនេះឆ្លងកាត់ជញ្ជាំងភ្លើងដែលអនុញ្ញាតតែការភ្ជាប់ទៅច្រកជាក់លាក់">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "ច្រកបានអនុញ្ញាត៖">
<!ENTITY torsettings.useBridges.checkbox "Tor is censored in my country">
<!ENTITY torsettings.useBridges.default "Select a built-in bridge">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "ស្វែងយល់បន្ថែម">
+<!ENTITY torPreferences.bridges "Bridges">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "កម្រិតខ្ពស់">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/kn/network-settings.dtd b/src/chrome/locale/kn/network-settings.dtd
index 3bcea0f..d31b5c1 100644
--- a/src/chrome/locale/kn/network-settings.dtd
+++ b/src/chrome/locale/kn/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Optional">
<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Username:">
+<!-- TODO: remove colon-->
<!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">
<!ENTITY torsettings.firewall.checkbox "This computer goes through a firewall that only allows connections to certain ports">
+<!-- TODO: remove colon-->
<!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">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Bridges">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Advanced">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/ko/network-settings.dtd b/src/chrome/locale/ko/network-settings.dtd
index ed1a18f..fbb93cf 100644
--- a/src/chrome/locale/ko/network-settings.dtd
+++ b/src/chrome/locale/ko/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "옵션">
<!ENTITY torsettings.useProxy.checkbox "인터넷에 연결할 때 프록시를 사용합니다">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "프록시 종류:">
<!ENTITY torsettings.useProxy.type.placeholder "프록시 유형을 선택해 주세요.">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "주소:">
<!ENTITY torsettings.useProxy.address.placeholder "IP 주소 또는 호스트 네임">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "포트:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "사용자명:">
+<!-- TODO: remove colon-->
<!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">
<!ENTITY torsettings.firewall.checkbox "이 컴퓨터는 특정 포트만 허용하는 방화벽을 통해서 연결됩니다.">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "허용된 포트:">
<!ENTITY torsettings.useBridges.checkbox "우리나라에서는 Tor를 검열합니다.">
<!ENTITY torsettings.useBridges.default "제공된 브릿지를 선택하세요.">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Tor 네트워크에 연결할 때까지 기다려주십시오.  몇 분 정도 소요될 수 있습니다.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "바위 산">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "더 알아보기">
+<!ENTITY torPreferences.bridges "중계서버">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "고급">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "브릿지를 요청하기 위해 CAPCHA를 풀어주세요.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "풀이가 맞지 않습니다. 다시 시도해주세요.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/lt/network-settings.dtd b/src/chrome/locale/lt/network-settings.dtd
index 7dd3217..6aa3b5d 100644
--- a/src/chrome/locale/lt/network-settings.dtd
+++ b/src/chrome/locale/lt/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Nebūtina">
<!ENTITY torsettings.useProxy.checkbox "Prisijungimui prie interneto aš naudoju įgaliotąjį serverį">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Įgaliotojo serverio tipas:">
<!ENTITY torsettings.useProxy.type.placeholder "pasirinkite įgaliotojo serverio tipą">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Adresas:">
<!ENTITY torsettings.useProxy.address.placeholder "IP adresas arba serverio vardas">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Prievadas:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Naudotojo vardas:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Slaptažodis:">
<!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 "Šis kompiuteris jungiasi per užkardą, kuri leidžia jungtis tik prie tam tikrų prievadų">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Leidžiami prievadai:">
<!ENTITY torsettings.useBridges.checkbox "Mano šalyje Tor yra cenzūruojamas">
<!ENTITY torsettings.useBridges.default "Pasirinkite įtaisytąjį tinklų tiltą">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Palaukite, kol mes užmegsime ryšį su Tor tinklu.  Tai gali užtrukti kelias minutes.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Tinklų tiltai">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Išplėstiniai">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Norėdami užklausti tinklų tiltą, išspręskite saugos kodą.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "Sprendimas neteisingas. Bandykite dar kartą.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/lv/network-settings.dtd b/src/chrome/locale/lv/network-settings.dtd
index 138b4b3..c7feeb9 100644
--- a/src/chrome/locale/lv/network-settings.dtd
+++ b/src/chrome/locale/lv/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Neobligāts">
<!ENTITY torsettings.useProxy.checkbox "Lai izveidotu savienojumu ar internetu, es lietoju starpniekseveri">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Starpnieka tips:">
<!ENTITY torsettings.useProxy.type.placeholder "izvēlieties starpniekservera veidu">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Adrese:">
<!ENTITY torsettings.useProxy.address.placeholder "IP adrese vai resursdatora nosaukums">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Ports:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Lietotājvārds:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Parole:">
<!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 "Šis dators iet caur ugunsmūri, kurš atļauj tikai savienojumus ar noteiktiem portiem.">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Atļautie porti:">
<!ENTITY torsettings.useBridges.checkbox "Manā valstī Tor tiek cenzēts">
<!ENTITY torsettings.useBridges.default "Izvēlieties iebūvētu tiltu">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Lūdzu pagaidiet kamēr mēs izveidojam savienojumu ar tīklu Tor. Tam var būt nepieciešamas vairākas minūtes.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Tilti">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Lietpratīgs">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/mk/network-settings.dtd b/src/chrome/locale/mk/network-settings.dtd
index b6fcffc..a6ab9ec 100644
--- a/src/chrome/locale/mk/network-settings.dtd
+++ b/src/chrome/locale/mk/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Опционално">
<!ENTITY torsettings.useProxy.checkbox "Користам прокси за поврзување на Интернет">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Тип на прокси:">
<!ENTITY torsettings.useProxy.type.placeholder "одбери тип на прокси">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Адреси:">
<!ENTITY torsettings.useProxy.address.placeholder "IP адреси или име на хост">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Порта:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Корисничко име:">
+<!-- TODO: remove colon-->
<!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">
<!ENTITY torsettings.firewall.checkbox "Овој компјутер оди преку заштитен ѕид кој дозволува поврзувања до одредени порти">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Дозволени порти:">
<!ENTITY torsettings.useBridges.checkbox "Tor е цензуриран во мојата држава">
<!ENTITY torsettings.useBridges.default "Одбери вграден мост">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Ве молиме почекајте додека се воспостави поврзувањето со Тор мрежата.  Ова може да потрае неколку минути.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Тор">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Научете повеќе">
+<!ENTITY torPreferences.bridges "Мостови">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Advanced">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Решете ја ЗАДАЧАТА за да побарате мост.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "Решението е погрешно. Ве молиме обидете се повторно.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/mk/torlauncher.properties b/src/chrome/locale/mk/torlauncher.properties
index b370ad7..806ac8d 100644
--- a/src/chrome/locale/mk/torlauncher.properties
+++ b/src/chrome/locale/mk/torlauncher.properties
@@ -52,7 +52,7 @@ torlauncher.forAssistance2=За помош, посетете ја %S
torlauncher.copiedNLogMessages=Копирањето е завршено. %S Tor лог пораките се подготвени да бидат залепени во уредувач на текст или во порака за е-пошта.
-torlauncher.bootstrapStatus.starting=Започнување
+torlauncher.bootstrapStatus.starting=Започнувањето
torlauncher.bootstrapStatus.conn_pt=Поврзување со мост
torlauncher.bootstrapStatus.conn_done_pt=Поврзан со мост
torlauncher.bootstrapStatus.conn_proxy=Поврзување со прокси
@@ -67,7 +67,7 @@ torlauncher.bootstrapStatus.loading_status=Вчитување на мрежен
torlauncher.bootstrapStatus.loading_keys=Вчитување на авторитетни сертификати
torlauncher.bootstrapStatus.requesting_descriptors=Барање на информации за реле
torlauncher.bootstrapStatus.loading_descriptors=Вчитување на информации за реле
-torlauncher.bootstrapStatus.enough_dirinfo=Завршено вчитувањето на информации за релето
+torlauncher.bootstrapStatus.enough_dirinfo=Завршено е вчитувањето на информациите за релето
torlauncher.bootstrapStatus.ap_conn_pt=Градење кругови: Поврзување со мост
torlauncher.bootstrapStatus.ap_conn_done_pt=Градење кругови: Поврзан со мост
torlauncher.bootstrapStatus.ap_conn_proxy=Градење кругови: Поврзување со прокси
diff --git a/src/chrome/locale/ml/network-settings.dtd b/src/chrome/locale/ml/network-settings.dtd
index 93f3e79..3c6b28a 100644
--- a/src/chrome/locale/ml/network-settings.dtd
+++ b/src/chrome/locale/ml/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "നിര്ബന്ധമില്ലാത്തത് ">
<!ENTITY torsettings.useProxy.checkbox "ഞാൻ ഇന്റർനൈറ്റിലെക് ബന്ധപ്പെടാൻ ഒരു പ്രോക്സി ഉപയോഗിക്കുന്നു ">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "പ്രോക്സി ഇനം :">
<!ENTITY torsettings.useProxy.type.placeholder "ഒരു പ്രോക്സി ഇനം തിരഞ്ഞെടുക്കുക :">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "മേൽവിലാസം :">
<!ENTITY torsettings.useProxy.address.placeholder "ഐ പി മേൽവിലാസം അല്ലെങ്കിൽ ഹോസ്റ്റ് നെയിം ">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "യൂസർ നെയിം :">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "പാസ്സ്വേർഡ് ">
<!ENTITY torsettings.useProxy.type.socks4 "SOCKS 4">
<!ENTITY torsettings.useProxy.type.socks5 "SOCKS 5">
<!ENTITY torsettings.useProxy.type.http "എച് ടി ടി പി /എച് ടി ടി പി എസ് ">
<!ENTITY torsettings.firewall.checkbox "ഈ കംപ്യൂട്ടർ ചില പ്രത്യേക പോർട്ടുകളിലൂടെ മാത്രം ബന്ധം അനുവദിക്കുന്ന ഫയർവാൾ വഴിയാണ് പോകുന്നത്">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "അനുവദിച്ചിട്ടുള്ള പോർട്ടുകൾ ">
<!ENTITY torsettings.useBridges.checkbox "എന്റെ രാജ്യത്തു ടോർ സെൻസർ ചെയ്തിട്ടുള്ളതാണ് ">
<!ENTITY torsettings.useBridges.default "ഇതിനകത്തു തന്നെയുള്ള ഒരു ബ്രിഡ്ജ് തിരഞ്ഞെടുക്കുക ">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "റ്റോറിലേക്കു ബന്ധപ്പെടുത്തുന്നത് വരെ ദയവായി ക്ഷെമിക്കുക &#160. ഇത് നിരവധി സമയം എടുക്കും ">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Bridges">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Advanced">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "ബ്രിഡ്ജിനെ കിട്ടാൻ തന്നിരിക്കുന്ന കാപ്ച പരിഹരിക്കുക ">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "പരിഹാരം ശെരിയല്ല . ദയവായി ഒന്നുകൂടെ ശ്രെമിക്കുക ">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/mr/network-settings.dtd b/src/chrome/locale/mr/network-settings.dtd
index b0346da..e372640 100644
--- a/src/chrome/locale/mr/network-settings.dtd
+++ b/src/chrome/locale/mr/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Optional">
<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Username:">
+<!-- TODO: remove colon-->
<!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">
+<!-- TODO: remove colon-->
<!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">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Bridges">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Advanced">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "पुलाची विनंती करण्यासाठी कॅप्चाचे निरसन करा.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "उपाय बरोबर नाही. कृपया पुन्हा प्रयत्न करा.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/ms-MY/network-settings.dtd b/src/chrome/locale/ms-MY/network-settings.dtd
index 61c974f..9c6299e 100644
--- a/src/chrome/locale/ms-MY/network-settings.dtd
+++ b/src/chrome/locale/ms-MY/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Pilihan">
<!ENTITY torsettings.useProxy.checkbox "Saya guna proksi untuk bersambung dengan Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Jenis Proksi:">
<!ENTITY torsettings.useProxy.type.placeholder "pilih sejenis proksi">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Alamat:">
<!ENTITY torsettings.useProxy.address.placeholder "Alamat IP atau nama hos">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Nama Pengguna:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Kata Laluan:">
<!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 "Komputer ini melalui tembok api yang hanya membolehkan sambungan ke port tertentu">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Port Dibenarkan:">
<!ENTITY torsettings.useBridges.checkbox "Tor dilarang penggunaannya di negara saya">
<!ENTITY torsettings.useBridges.default "Pilih satu titi terbina-dalam">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Tunggu sebentar sementara kami menjalinkan sambungan dengan rangkaian Tor.  Ia mengambil masa beberapa minit.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Jambatan, ataupun Bridges">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Advanced">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Selesaikan CAPTCHA untuk meminta satu titi.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "Jawapan salah. Cuba sekali lagi.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/my/network-settings.dtd b/src/chrome/locale/my/network-settings.dtd
index 748d302..e461e30 100644
--- a/src/chrome/locale/my/network-settings.dtd
+++ b/src/chrome/locale/my/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Optional">
<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "နေရပ်လိပ်စာ -">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "သုံးစွဲသူအမည် -">
+<!-- TODO: remove colon-->
<!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">
<!ENTITY torsettings.firewall.checkbox "This computer goes through a firewall that only allows connections to certain ports">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "ခွင့်ပြုထားသော Ports များ -">
<!ENTITY torsettings.useBridges.checkbox "Tor is censored in my country">
<!ENTITY torsettings.useBridges.default "Select a built-in bridge">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Bridges">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "အဆင့်မြင့်">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/nb/network-settings.dtd b/src/chrome/locale/nb/network-settings.dtd
index 3d1ef4d..f4da5b7 100644
--- a/src/chrome/locale/nb/network-settings.dtd
+++ b/src/chrome/locale/nb/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Valgfritt">
<!ENTITY torsettings.useProxy.checkbox "Jeg bruker en mellomtjener for å koble til Internett">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Mellomtjeningstype:">
<!ENTITY torsettings.useProxy.type.placeholder "velg en mellomtjenertype">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Adresse:">
<!ENTITY torsettings.useProxy.address.placeholder "IP-adresse, eller vertsnavn">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Brukernavn:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Passord:">
<!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 "Denne datamaskinen går gjennom en brannmur som kun tillater tilkoblinger til visse porter">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Tillatte porter:">
<!ENTITY torsettings.useBridges.checkbox "Tor er sensurert i mitt land">
<!ENTITY torsettings.useBridges.default "Velg en bro med flere innfartsårer">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Vent mens tilkobling til Tor-nettverket opprettes.  Dette kan ta flere minutter.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Lær mer">
+<!ENTITY torPreferences.bridges "Broer">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Avansert">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Løs CAPTCHA-en for å forespørre en bro.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "Løsningen er ikke riktig. Vær så snill, prøv på nytt.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/ne/network-settings.dtd b/src/chrome/locale/ne/network-settings.dtd
index 24d381a..5704206 100644
--- a/src/chrome/locale/ne/network-settings.dtd
+++ b/src/chrome/locale/ne/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Optional">
<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Username:">
+<!-- TODO: remove colon-->
<!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">
+<!-- TODO: remove colon-->
<!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">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Bridges">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Advanced">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/nl-BE/network-settings.dtd b/src/chrome/locale/nl-BE/network-settings.dtd
index efd9402..d6ec3f7 100644
--- a/src/chrome/locale/nl-BE/network-settings.dtd
+++ b/src/chrome/locale/nl-BE/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Optioneel">
<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Adres:">
<!ENTITY torsettings.useProxy.address.placeholder "IP adres of hostnaam">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Poort:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Gebruikersnaam:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Wachtwoord:">
<!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">
+<!-- TODO: remove colon-->
<!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">
@@ -61,3 +67,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Even geduld terwijl we verbinding maken met het Tor netwerk. 
Dit kan enkele minuten duren.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Bridges">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Geavanceerd">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/nl/network-settings.dtd b/src/chrome/locale/nl/network-settings.dtd
index f39a8f9..7cbe12a 100644
--- a/src/chrome/locale/nl/network-settings.dtd
+++ b/src/chrome/locale/nl/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Optioneel">
<!ENTITY torsettings.useProxy.checkbox "I gebruik een proxy om met het internet te verbinden.">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Proxytype:">
<!ENTITY torsettings.useProxy.type.placeholder "selecteer een proxytype">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Adres:">
<!ENTITY torsettings.useProxy.address.placeholder "IP-adres of hostnaam">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Poort:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Gebruikersnaam:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Wachtwoord:">
<!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 "Deze computer gebruikt een firewall die alleen verbindingen naar bepaalde poorten toestaat">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Toegestane poorten:">
<!ENTITY torsettings.useBridges.checkbox "Tor is in mijn land gecensureerd.">
<!ENTITY torsettings.useBridges.default "Een ingebouwde bridge selecteren">
@@ -55,8 +61,33 @@
<!ENTITY torsettings.proxyHelp1 "Een lokale proxy kan nodig zijn als u verbinding maakt via het netwerk van een bedrijf, school of universiteit. Als u niet zeker weet of een proxy nodig is, bekijk dan de internetinstellingen in een andere browser, of bekijk de netwerkinstellingen van uw systeem.">
<!ENTITY torsettings.bridgeHelpTitle "Bridge relay-hulp">
-<!ENTITY torsettings.bridgeHelp1 "Bridges zijn niet-vermelde relays die het moeilijker maken om verbindingen met het Tor-netwerk te blokkeren.  Elk type bridge gebruikt een andere methode om censuur te vermijden.  Bridges die obfs gebruiken, laten uw verkeer eruitzien als willekeurige ruis, en bridges die meek gebruiken, laten uw netwerkverkeer eruitzien alsof u met een andere service dan Tor verbinding maakt.">
+<!ENTITY torsettings.bridgeHelp1 "Bridges zijn niet-vermelde relays die het moeilijker maken om verbindingen met het Tor-netwerk te blokkeren.  Elk type bridge gebruikt een andere methode om censuur te vermijden.  Bridges die obfs gebruiken, laten uw verkeer eruitzien als willekeurige ruis, en bridges die meek gebruiken, laten uw verkeer eruitzien alsof u met een andere service dan Tor verbinding maakt.">
<!ENTITY torsettings.bridgeHelp2 "Vanwege de manier waarop bepaalde landen Tor proberen te blokkeren, werken sommige bridges in bepaalde landen wel, maar niet in andere.  Als u niet zeker weet welke bridges in uw land werken, bezoek dan torproject.org/about/contact.html#support">
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Even geduld; er wordt verbinding gemaakt met het Tor-netwerk.  Dit kan enkele minuten duren.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Meer info">
+<!ENTITY torPreferences.bridges "Bridges">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Geavanceerd">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Los de CAPTCHA op om een bridge aan te vragen.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "De oplossing is niet juist. Probeer het opnieuw.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/nl/torlauncher.properties b/src/chrome/locale/nl/torlauncher.properties
index 6edbe32..b5f8fb1 100644
--- a/src/chrome/locale/nl/torlauncher.properties
+++ b/src/chrome/locale/nl/torlauncher.properties
@@ -4,7 +4,7 @@
torlauncher.error_title=Tor Starter
torlauncher.tor_exited_during_startup=Tor is afgesloten tijdens het opstarten. Dit kan komen door een fout in uw torrc-bestand, een bug in Tor of ander programma op uw systeem, of defecte hardware. Totdat u het onderliggende probleem oplost en Tor opnieuw start, zal Tor Browser niet opstarten.
-torlauncher.tor_exited=Tor is onverwachts afgesloten. Dit kan komen door een fout in Tor zelf, een ander programma op uw systeem, of defecte hardware. Totdat u Tor opnieuw start, zal Tor Browser geen websites kunnen bereiken. Stuur een kopie van uw Tor-logboek naar het ondersteuningsteam als het probleem zich blijft voordoen.
+torlauncher.tor_exited=Tor is onverwachts afgesloten. Dit kan komen door een bug in Tor zelf, een ander programma op uw systeem, of defecte hardware. Totdat u Tor opnieuw start, zal Tor Browser geen websites kunnen bereiken. Stuur een kopie van uw Tor-logboek naar het ondersteuningsteam als het probleem zich blijft voordoen.
torlauncher.tor_exited2=Tor herstarten zal niet uw browsertabbladen sluiten.
torlauncher.tor_controlconn_failed=Kon geen verbinding maken met Tor-controlepoort.
torlauncher.tor_failed_to_start=Tor kon niet worden gestart.
diff --git a/src/chrome/locale/nn/network-settings.dtd b/src/chrome/locale/nn/network-settings.dtd
index 808cfe1..d94e449 100644
--- a/src/chrome/locale/nn/network-settings.dtd
+++ b/src/chrome/locale/nn/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Valfritt">
<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Mellomtenartype:">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Addresse:">
<!ENTITY torsettings.useProxy.address.placeholder "IP-adresse eller vertsnamn">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Brukarnamn:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Passord:">
<!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">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Tillatne portar:">
<!ENTITY torsettings.useBridges.checkbox "Tor is censored in my country">
<!ENTITY torsettings.useBridges.default "Select a built-in bridge">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Bruer">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Advanced">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/pa/network-settings.dtd b/src/chrome/locale/pa/network-settings.dtd
index 87efa6c..17f12d8 100644
--- a/src/chrome/locale/pa/network-settings.dtd
+++ b/src/chrome/locale/pa/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "ਚੋਣਵਾਂ">
<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "ਪਰਾਕਸੀ ਕਿਸਮ:">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "ਪਤਾ:">
<!ENTITY torsettings.useProxy.address.placeholder "IP ਸਿਰਨਾਵਾਂ ਜਾਂ ਹੋਸਟ-ਨਾਂ">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "ਯੂਜ਼ਰ-ਨਾਂ:">
+<!-- TODO: remove colon-->
<!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">
<!ENTITY torsettings.firewall.checkbox "This computer goes through a firewall that only allows connections to certain ports">
+<!-- TODO: remove colon-->
<!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">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "ਟੌਰ">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Bridges">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "ਉੱਨਤ">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/pl/network-settings.dtd b/src/chrome/locale/pl/network-settings.dtd
index 76131f7..e8c508d 100644
--- a/src/chrome/locale/pl/network-settings.dtd
+++ b/src/chrome/locale/pl/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "(opcjonalnie)">
<!ENTITY torsettings.useProxy.checkbox "Używam proxy do łączenia się z Internetem">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Typ Proxy:">
<!ENTITY torsettings.useProxy.type.placeholder "wybierz typ proxy">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Adres:">
<!ENTITY torsettings.useProxy.address.placeholder "Nazwa hosta lub adres IP">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Użytkownik:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Hasło:">
<!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 "Ten komputer pozwala na połączenie z ustalonymi portami">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Dozwolone porty:">
<!ENTITY torsettings.useBridges.checkbox "Tor jest ocenzurowany w moim kraju">
<!ENTITY torsettings.useBridges.default "Wybierz wbudowany most">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Proszę zaczekać, aż ustanowimy połączenie do sieci Tor.  To może zająć kilka minut.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Dowiedz się więcej">
+<!ENTITY torPreferences.bridges "Mostki">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Zaawansowane">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Rozwiąż CAPTCHA, aby poprosić o most.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "Rozwiązanie nie jest poprawne. Proszę spróbuj ponownie.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/pt-BR/network-settings.dtd b/src/chrome/locale/pt-BR/network-settings.dtd
index 98e152a..6fbdd57 100644
--- a/src/chrome/locale/pt-BR/network-settings.dtd
+++ b/src/chrome/locale/pt-BR/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Opcional">
<!ENTITY torsettings.useProxy.checkbox "Eu uso proxy para me conectar à Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Tipo de Proxy:">
<!ENTITY torsettings.useProxy.type.placeholder "Selecione um tipo de proxy">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Endereço:">
<!ENTITY torsettings.useProxy.address.placeholder "Endereço IP ou Servidor">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Porta:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Usuário:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Senha:">
<!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 "A conexão Internet deste computador é filtrada por uma firewall que autoriza conexões somente a determinadas portas.">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Portas habilitadas:">
<!ENTITY torsettings.useBridges.checkbox "Tor é censurado no país onde estou">
<!ENTITY torsettings.useBridges.default "Selecione uma ponte embutida">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Por favor, aguarde enquanto estabelecemos uma conexão com a rede Tor.  Isso pode demorar alguns minutos.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Saiba Mais">
+<!ENTITY torPreferences.bridges "Pontes">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Avançado">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Resolva o CAPTCHA para solicitar uma ponte.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "A solução não está correta. Por favor, tente novamente.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/pt-PT/network-settings.dtd b/src/chrome/locale/pt-PT/network-settings.dtd
index f62d4c8..0c40404 100644
--- a/src/chrome/locale/pt-PT/network-settings.dtd
+++ b/src/chrome/locale/pt-PT/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Opcional">
<!ENTITY torsettings.useProxy.checkbox "Eu utilizo um proxy para ligar à Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Tipo de proxy:">
<!ENTITY torsettings.useProxy.type.placeholder "selecionar um tipo de proxy">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Endereço:">
<!ENTITY torsettings.useProxy.address.placeholder "Endereço de IP ou nome do hospedeiro">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Porta:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Nome do utilizador:">
+<!-- TODO: remove colon-->
<!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">
+<!-- TODO: remove colon-->
<!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">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Por favor, aguarde, enquanto nós estabelecemos uma ligação à rede Tor.  Isto pode demorar alguns minutos.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Saber Mais">
+<!ENTITY torPreferences.bridges "Pontes">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Avançado">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Resolva o CAPTCHA para solicitar uma ponte.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "A solução não está correta. Por favor, tente novamente.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/ro/network-settings.dtd b/src/chrome/locale/ro/network-settings.dtd
index cc428b8..602aa09 100644
--- a/src/chrome/locale/ro/network-settings.dtd
+++ b/src/chrome/locale/ro/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Opțional">
<!ENTITY torsettings.useProxy.checkbox "Folosesc un proxy pentru a mă conecta la Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Tip proxy:">
<!ENTITY torsettings.useProxy.type.placeholder "alege un tip de proxy">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Adresă:">
<!ENTITY torsettings.useProxy.address.placeholder "Adresă IP sau hostname">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Nume utilizator:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Parola:">
<!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 "Acest computer trece printr-un firewall care permite doar conexiuni către anumite porturi">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Porturi permise:">
<!ENTITY torsettings.useBridges.checkbox "Tor este cenzurat în țara mea">
<!ENTITY torsettings.useBridges.default "Selectează o punte integrată">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Te rugăm să aștepți până ce stabilim o conexiune cu rețeaua Tor.   Aceasta poate dura mai multe minute.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Află mai multe">
+<!ENTITY torPreferences.bridges "Punți">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Avansat">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Rezolvă acest CAPTCHA pentru a cere o punte.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "Soluția nu este corectă. Încearcă din nou.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/ru/network-settings.dtd b/src/chrome/locale/ru/network-settings.dtd
index aa45c11..f4b0918 100644
--- a/src/chrome/locale/ru/network-settings.dtd
+++ b/src/chrome/locale/ru/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Необязательно">
<!ENTITY torsettings.useProxy.checkbox "Я использую прокси для подключения к интернету">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Тип прокси:">
<!ENTITY torsettings.useProxy.type.placeholder "выбор типа прокси">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Адрес:">
<!ENTITY torsettings.useProxy.address.placeholder "IP-адрес или имя узла">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Порт:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Имя пользователя:">
+<!-- TODO: remove colon-->
<!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">
<!ENTITY torsettings.firewall.checkbox "Мой сетевой экран позволяет мне подключиться только к определенным портам">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Разрешенные порты:">
<!ENTITY torsettings.useBridges.checkbox "Tor запрещен в моей стране">
<!ENTITY torsettings.useBridges.default "Выбрать встроенный мост">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Пожалуйста, подождите, пока мы установим подключение к сети Tor.  Это может занять несколько минут.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Подробнее">
+<!ENTITY torPreferences.bridges "Мосты">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Дополнительно">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Решите CAPTCHA для запроса моста.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "Решение не является правильным. Попробуйте еще раз.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/si-LK/network-settings.dtd b/src/chrome/locale/si-LK/network-settings.dtd
index 28e41e3..bbc6322 100644
--- a/src/chrome/locale/si-LK/network-settings.dtd
+++ b/src/chrome/locale/si-LK/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "අමතර">
<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "නියුතු සේවාදායක වර්ගය:">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "ලිපිනය:">
<!ENTITY torsettings.useProxy.address.placeholder "IP ලිපිනය හෝ සත්කාරක නාමය">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "පොර්ටය:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "පරිශීලක නාමය">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "මුරපදය">
<!ENTITY torsettings.useProxy.type.socks4 "4 වැනි සොකට්ටුව">
<!ENTITY torsettings.useProxy.type.socks5 "5 වැනි සොකට්ටුව">
<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
<!ENTITY torsettings.firewall.checkbox "මෙම පරිගණකය විශේෂිත ports සදහා සම්බන්ධ වීමට ඉඩදෙන පරිදි firewall එකක් හරහා ගමන් කරයි.">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "අනුමත Ports">
<!ENTITY torsettings.useBridges.checkbox "Tor is censored in my country">
<!ENTITY torsettings.useBridges.default "Select a built-in bridge">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "සේතු">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "උසස් ">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/sk/network-settings.dtd b/src/chrome/locale/sk/network-settings.dtd
index 5ab733a..f73bc29 100644
--- a/src/chrome/locale/sk/network-settings.dtd
+++ b/src/chrome/locale/sk/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Voliteľné">
<!ENTITY torsettings.useProxy.checkbox "Na pripojenie k internetu používam proxy">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Typ Proxy:">
<!ENTITY torsettings.useProxy.type.placeholder "vybrať typ proxy">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Adresa:">
<!ENTITY torsettings.useProxy.address.placeholder "IP adresa alebo názov hostiteľa">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Už.názov:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Heslo?">
<!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 "Tento počítač ide cez firewall, ktorý povoľuje iba niektoré porty">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Povolené porty:">
<!ENTITY torsettings.useBridges.checkbox "Tor je v mojej krajine cenzurovaný">
<!ENTITY torsettings.useBridges.default "Zvoľte zabudované premostenie">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Prosím počkajte na vytvorenie pripojenia do siete Tor.  Môže to trvať niekoľko minút. ">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Mosty">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Pokročilé">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Vyrieš CAPTCHA na vyžiadanie premostenia.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "Riešenie nie je správne. Prosím skúste znova.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/sl/network-settings.dtd b/src/chrome/locale/sl/network-settings.dtd
index 806626a..d3119fd 100644
--- a/src/chrome/locale/sl/network-settings.dtd
+++ b/src/chrome/locale/sl/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Po izbiri">
<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Proxy tip:">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Naslov:">
<!ENTITY torsettings.useProxy.address.placeholder "IP naslov ali ime domene">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "vrata:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Uporabniško ime:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Geslo:">
<!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 "Računalnik uporablja požarni zid, ki dovoljuje povezavo le na določena vrata">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Dovoljena vrata:">
<!ENTITY torsettings.useBridges.checkbox "Tor is censored in my country">
<!ENTITY torsettings.useBridges.default "Select a built-in bridge">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Mostovi">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Napredno">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/sq/network-settings.dtd b/src/chrome/locale/sq/network-settings.dtd
index c33a2dd..e5ca0fc 100644
--- a/src/chrome/locale/sq/network-settings.dtd
+++ b/src/chrome/locale/sq/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Me zgjedhje">
<!ENTITY torsettings.useProxy.checkbox "Unë përdor një proxy për tu lidhur në Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Lloji i Proxy-t:">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Adresa:">
<!ENTITY torsettings.useProxy.address.placeholder "Adresa IP ose emri i pritësit">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Porta:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Emri i përdoruesit:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Fjalëkalimi:">
<!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 "Ky kompjuter kalon përmes një muri mbrojtës, që i lejon lidhje vetëm me disa porta.">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Portat e Lejuara:">
<!ENTITY torsettings.useBridges.checkbox "TOR është i çensuruar në vëndin tim">
<!ENTITY torsettings.useBridges.default "Zgjidh një urë të paracaktuar">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Ju lutemi prisni derisa të vendosim një lidhje me rrjetin e Tor.  Kjo mund të kërkojë disa minuta.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Urat">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Të mëtejshme">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/sr/network-settings.dtd b/src/chrome/locale/sr/network-settings.dtd
index 7dcd5e2..8c46da8 100644
--- a/src/chrome/locale/sr/network-settings.dtd
+++ b/src/chrome/locale/sr/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Опционо">
<!ENTITY torsettings.useProxy.checkbox "Koristim proxy za povezivanje na internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Врста proxyja:">
<!ENTITY torsettings.useProxy.type.placeholder "изаберите тип проксија">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Adresa:">
<!ENTITY torsettings.useProxy.address.placeholder "IP адреса или hostname">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Порт:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Корисничко име:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Lozinka:">
<!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 "Овај рачунар пролази кроз firewall који дозвољава само конекције на одређене портове.">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Дозвољени Портови:">
<!ENTITY torsettings.useBridges.checkbox "Тор је цензурисан у мојој земљи">
<!ENTITY torsettings.useBridges.default "Odaberi ugrađeni most">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Molimo sačekajte dok uspostavljamo vezu sa Tor mrežom.  Ovo može potrajati nekoliko minuta.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Mostovi">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Напредно">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Rešite CAPTCHA da biste zahtevali most.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "Rešenje nije ispravno. Molimo pokušajte ponovo.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/sv/network-settings.dtd b/src/chrome/locale/sv/network-settings.dtd
index 95a0720..09616d1 100644
--- a/src/chrome/locale/sv/network-settings.dtd
+++ b/src/chrome/locale/sv/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Valfritt">
<!ENTITY torsettings.useProxy.checkbox "Jag använder en proxy för att ansluta till internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Proxytyp:">
<!ENTITY torsettings.useProxy.type.placeholder "Välj en proxytyp">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Adress:">
<!ENTITY torsettings.useProxy.address.placeholder "IP-adress eller värdnamn">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Användarnamn:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Lösenord:">
<!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 "Denna dator går genom en brandvägg som bara tillåter anslutningar på vissa specifika portar.">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Tillåtna portar:">
<!ENTITY torsettings.useBridges.checkbox "Tor är censurerat i mitt land">
<!ENTITY torsettings.useBridges.default "Välj en inbyggd bro">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Var god och vänta medan vi etablerar en anslutning till Tor-nätverket.   Detta kan ta upp till flera minuter.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Läs mer">
+<!ENTITY torPreferences.bridges "Broar">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Avancerat">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Lös CAPTCHA:n för att begära en bro.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "Lösningen är inte korrekt. Vänligen försök igen.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/sw/network-settings.dtd b/src/chrome/locale/sw/network-settings.dtd
index c6c5687..879715c 100644
--- a/src/chrome/locale/sw/network-settings.dtd
+++ b/src/chrome/locale/sw/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Optional">
<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
-<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
+<!ENTITY torsettings.useProxy.port "Kituo:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Username:">
+<!-- TODO: remove colon-->
<!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">
+<!-- TODO: remove colon-->
<!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">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Bridges">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Advanced">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/ta/network-settings.dtd b/src/chrome/locale/ta/network-settings.dtd
index dbb7a00..544797f 100644
--- a/src/chrome/locale/ta/network-settings.dtd
+++ b/src/chrome/locale/ta/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "விருப்பத்தேர்வு">
<!ENTITY torsettings.useProxy.checkbox "நான் இணையத்துடன் இணைய ஒரு பதிலாளைப் பயன்படுத்துகிறேன்">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "பதிலாள் வகை:">
<!ENTITY torsettings.useProxy.type.placeholder "ஒரு பதிலாள் வகையைத் தேர்ந்தெடுங்கள்">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "முகவரி:">
<!ENTITY torsettings.useProxy.address.placeholder "IP முகவரி அல்லது ஹோஸ்ட்பெயர்">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "பயனர்பெயர்:">
+<!-- TODO: remove colon-->
<!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">
<!ENTITY torsettings.firewall.checkbox "இந்த கணினி ஒரு தீயரண் வழியே செல்கிறது அது குறிப்பிட்ட முனைகளுக்கான இணைப்புகளை மட்டுமே அனுமதிக்கிறது">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "அனுமதிக்கப்பட்ட முனைகள்:">
<!ENTITY torsettings.useBridges.checkbox "Tor எனது நாட்டின் தணிக்கையிடப்படுகிறது">
<!ENTITY torsettings.useBridges.default "ஒரு உள்ளமை bridge தேர்ந்தெடுங்கள்">
@@ -61,3 +67,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "தயவுசெய்து நாங்கள் Tor வலையமைப்புடன் ஒரு இணைப்பு நிறுவும்வரை காத்திருங்கள். 
இதற்கு பல நிமிடங்கள் ஆகலாம்.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "மேலும் அறிய">
+<!ENTITY torPreferences.bridges "Bridgeகள்">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Advanced">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/te/network-settings.dtd b/src/chrome/locale/te/network-settings.dtd
index c6c5687..da2e5c8 100644
--- a/src/chrome/locale/te/network-settings.dtd
+++ b/src/chrome/locale/te/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Optional">
<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Username:">
+<!-- TODO: remove colon-->
<!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">
+<!-- TODO: remove colon-->
<!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">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Bridges">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Advanced">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/th/network-settings.dtd b/src/chrome/locale/th/network-settings.dtd
index cb88acc..e4fa0b1 100644
--- a/src/chrome/locale/th/network-settings.dtd
+++ b/src/chrome/locale/th/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "ไม่จำเป็น">
<!ENTITY torsettings.useProxy.checkbox "ฉันใช้พร็อกซีเพื่อเชื่อมต่อกับอินเทอร์เน็ต">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "ชนิดพร็อกซีคือ">
<!ENTITY torsettings.useProxy.type.placeholder "เลือกชนิดพร็อกซี">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "ที่อยู่คือ">
<!ENTITY torsettings.useProxy.address.placeholder "ที่อยู่ IP หรือชื่อโฮสต์">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "พอร์ตคือ">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "ชื่อผู้ใช้คือ">
+<!-- TODO: remove colon-->
<!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">
<!ENTITY torsettings.firewall.checkbox "คอมพิวเตอร์เครื่องนี้ใช้งานผ่านไฟร์วอลล์ที่อนุญาตให้เชื่อมต่อกับเฉพาะบางพอร์ตเท่านั้น">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "พอร์ตที่อนุญาตคือ ">
<!ENTITY torsettings.useBridges.checkbox "Tor ถูกเซ็นเซอร์ในประเทศของฉัน">
<!ENTITY torsettings.useBridges.default "เลือกสะพานที่มีมาให้ในตัว">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "กรุณรอระหว่างที่เรากำลังสร้างการเชื่อมต่อไปยังเครือข่าย Tor   ซึ่งอาจจะใช้เวลาหลายนาที">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "เรียนรู้เพิ่มเติม">
+<!ENTITY torPreferences.bridges "สะพาน">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "ขั้นสูง">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "แก้ปัญหา CAPTCHA เพื่อขอสะพาน">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "วิธีแก้ไขไม่ถูกต้อง กรุณาลองอีกครั้ง">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/tr/network-settings.dtd b/src/chrome/locale/tr/network-settings.dtd
index c463944..a0179c4 100644
--- a/src/chrome/locale/tr/network-settings.dtd
+++ b/src/chrome/locale/tr/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "İsteğe bağlı">
<!ENTITY torsettings.useProxy.checkbox "Internete erişmek için vekil sunucu kullanıyorum">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Vekil Sunucu Türü:">
<!ENTITY torsettings.useProxy.type.placeholder "vekil sunucu türünü seçin">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Adres:">
<!ENTITY torsettings.useProxy.address.placeholder "IP adresi ya da sunucu adı">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Kapı Numarası:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Kullanıcı Adı:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Parola:">
<!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 "Bu bilgisayarda yalnız belirli kapı numaralarından bağlanılmasına izin veren bir güvenlik duvarı kullanılıyor">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Kullanılabilecek Kapı Numaraları:">
<!ENTITY torsettings.useBridges.checkbox "Bulunduğum ülkede Tor ağı engelleniyor">
<!ENTITY torsettings.useBridges.default "Hazır Köprülerden Seçin">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Lütfen Tor ağı ile bağlantı kurulurken bekleyin. Bu işlem birkaç dakika sürebilir.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Ayarları">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser sizi tüm dünyada binlerce gönüllü tarafından işletilen Tor Ağına bağlar." >
+<!ENTITY torPreferences.learnMore "Ayrıntılı Bilgi Alın">
+<!ENTITY torPreferences.bridges "Köprüler">
+<!ENTITY torPreferences.bridgesDescription "Köprüler Tor bağlantısının engellendiği yerlerden Tor Ağına erişmek için kullanılır.. Bulunduğunuz konuma göre bir köprü türü diğerinden daha uygun olabilir.">
+<!ENTITY torPreferences.useBridge "Bir köprü kullanın">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Yeni Köprü İsteğinde Bulunun&#x2026;">
+<!ENTITY torPreferences.provideBridge "Bir köprü adresi yazın">
+<!ENTITY torPreferences.advanced "Gelişmiş">
+<!ENTITY torPreferences.advancedDescription "Tor Browser uygulamasının İnternete nasıl bağlanacağını yapılandırın.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Virgül ile ayrılmış değerler">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Köprü İsteğinde Bulunun">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Köprü veritabanına bağlanılıyor. Lütfen bekleyin.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Köprü isteği yapmak için güvenlik kodunu çözün.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "Çözüm doğru değil. Lütfen yeniden deneyin.">
+<!ENTITY torPreferences.viewTorLogs "Tor günlük kayıtlarına bakın.">
+<!ENTITY torPreferences.viewLogs "Günlüğü Görüntüle&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Günlük Kayıtları">
diff --git a/src/chrome/locale/uk/network-settings.dtd b/src/chrome/locale/uk/network-settings.dtd
index 1b90b5b..e7a9862 100644
--- a/src/chrome/locale/uk/network-settings.dtd
+++ b/src/chrome/locale/uk/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Додатково">
<!ENTITY torsettings.useProxy.checkbox "Я використовую проксі для з'єднання з Інтернетом">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Тип проксі:">
<!ENTITY torsettings.useProxy.type.placeholder "оберіть тип проксі">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Адреса:">
<!ENTITY torsettings.useProxy.address.placeholder "ІР адреса або ім'я хосту">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Порт:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Ім'я користувача:">
+<!-- TODO: remove colon-->
<!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">
<!ENTITY torsettings.firewall.checkbox "Мій брандмауер дозволяє підключення тільки до певних портів">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Дозволенні порти:">
<!ENTITY torsettings.useBridges.checkbox "Тор цензується в моїй країні">
<!ENTITY torsettings.useBridges.default "Виберіть вбудований міст">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Будь ласка, зачекайте, поки ми встановимо з'єднання з мережею Tor.  Це може зайняти кілька хвилин.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Тор">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Дізнатися більше">
+<!ENTITY torPreferences.bridges "Мости">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Розширений">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Розв'яжіть CAPTCHA, щоб надіслати запит на отримання мосту.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "Розв'язання невірне. Спробуйте знову.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/ur/network-settings.dtd b/src/chrome/locale/ur/network-settings.dtd
index 02b715d..7b76324 100644
--- a/src/chrome/locale/ur/network-settings.dtd
+++ b/src/chrome/locale/ur/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "اختیاری">
<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "صارف کا نام:">
+<!-- TODO: remove colon-->
<!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">
<!ENTITY torsettings.firewall.checkbox "This computer goes through a firewall that only allows connections to certain ports">
+<!-- TODO: remove colon-->
<!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">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "تور">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Bridges">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "ترقی یافتہ">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "پل کی گزارش کرنے کیلئے کیپچا کو حل کریں۔">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/ur/torlauncher.properties b/src/chrome/locale/ur/torlauncher.properties
index a66e6eb..836b6f7 100644
--- a/src/chrome/locale/ur/torlauncher.properties
+++ b/src/chrome/locale/ur/torlauncher.properties
@@ -42,7 +42,7 @@ torlauncher.no_meek=This browser is not configured for meek, which is needed to
torlauncher.no_bridges_available=No bridges are available at this time. Sorry.
torlauncher.connect=رابطہ کریں
-torlauncher.restart_tor=Restart Tor
+torlauncher.restart_tor=ٹور دوبارہ چلائیں
torlauncher.quit=چھوڑدیجیے (Quit)
torlauncher.quit_win=خارج کرنا
torlauncher.done=مکمل ہوگیا
diff --git a/src/chrome/locale/uz/network-settings.dtd b/src/chrome/locale/uz/network-settings.dtd
index aad954d..aaae5c1 100644
--- a/src/chrome/locale/uz/network-settings.dtd
+++ b/src/chrome/locale/uz/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Qo'shimcha">
<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Proksi turi:">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Manzil:">
<!ENTITY torsettings.useProxy.address.placeholder "IP manzil yoki host nomi">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Foydalanuvchi nomi:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Maxfiy so'z:">
<!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">
+<!-- TODO: remove colon-->
<!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">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Bridges">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Qo‘shimcha">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/vi/network-settings.dtd b/src/chrome/locale/vi/network-settings.dtd
index 68d2383..1910e2a 100644
--- a/src/chrome/locale/vi/network-settings.dtd
+++ b/src/chrome/locale/vi/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Tuỳ chọn">
<!ENTITY torsettings.useProxy.checkbox "Tôi sử dụng proxy để kết nối tới Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Dạng proxy:">
<!ENTITY torsettings.useProxy.type.placeholder "chọn loại proxy">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Địa chỉ:">
<!ENTITY torsettings.useProxy.address.placeholder "Địa chỉ IP hoặc hostname">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Cổng:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Tên đăng nhập:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.password "Mật khẩu:">
<!ENTITY torsettings.useProxy.type.socks4 "SOCK 4">
<!ENTITY torsettings.useProxy.type.socks5 "SOCK 5">
<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
<!ENTITY torsettings.firewall.checkbox "Máy tính này đi qua một tường lửa mà chỉ cho phép tới một vài cổng">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "Những Cổng Được phép:">
<!ENTITY torsettings.useBridges.checkbox "Tor đã bị kiểm duyệt ở quốc gia của tôi">
<!ENTITY torsettings.useBridges.default "Sử dụng cầu nối có sẵn">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Vui lòng chờ trong khi chúng tôi thiết lập kết nối tới mạng lưới Tor.  Việc này có thể mất một vài phút.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Cầu Nối">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Nâng cao">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/zh-CN/network-settings.dtd b/src/chrome/locale/zh-CN/network-settings.dtd
index f0dc557..1baec73 100644
--- a/src/chrome/locale/zh-CN/network-settings.dtd
+++ b/src/chrome/locale/zh-CN/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "可选">
<!ENTITY torsettings.useProxy.checkbox "使用代理访问互联网">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "代理类型:">
<!ENTITY torsettings.useProxy.type.placeholder "选择代理类型">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "地址:">
<!ENTITY torsettings.useProxy.address.placeholder "IP 地址或主机名">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "端口:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "用户名:">
+<!-- TODO: remove colon-->
<!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">
<!ENTITY torsettings.firewall.checkbox "该计算机的防火墙仅允许特定端口的互联网连接">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "允许的端口:">
<!ENTITY torsettings.useBridges.checkbox "我所在的国家对 Tor 进行了审查">
<!ENTITY torsettings.useBridges.default "选择内置网桥">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "正在连接 Tor 网络,可能需几分钟,请稍等。">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor 浏览器将你和世界数千名志愿者支持的 Tor 网络相连" >
+<!ENTITY torPreferences.learnMore "了解更多">
+<!ENTITY torPreferences.bridges "网桥">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "正在请求新网桥&#x2026;">
+<!ENTITY torPreferences.provideBridge "添加网桥">
+<!ENTITY torPreferences.advanced "高级">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "正在请求网桥">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "正在连接到BridgeDB,请等待。">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "请输入验证码以获取网桥。">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "结果并不正确,请重试。">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "查看日志&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/zh-HK/network-settings.dtd b/src/chrome/locale/zh-HK/network-settings.dtd
index 0e6d6af..4e4e359 100644
--- a/src/chrome/locale/zh-HK/network-settings.dtd
+++ b/src/chrome/locale/zh-HK/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "選用">
<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "代理伺服器類型:">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "位址:">
<!ENTITY torsettings.useProxy.address.placeholder "IP位址或主機名稱">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "連接埠:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "用戶名:">
+<!-- TODO: remove colon-->
<!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">
<!ENTITY torsettings.firewall.checkbox "呢部電腦通過某個只容許連接至特定連線埠嘅防火牆">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "容許嘅連接埠:">
<!ENTITY torsettings.useBridges.checkbox "Tor is censored in my country">
<!ENTITY torsettings.useBridges.default "Select a built-in bridge">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "我哋正在建立通往Tor洋蔥路由網絡嘅連線,請稍候, 呢樣可能會需要幾分鐘時間。">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor工具">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Bridges">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Advanced">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
diff --git a/src/chrome/locale/zh-TW/network-settings.dtd b/src/chrome/locale/zh-TW/network-settings.dtd
index 3fff34e..01f2e29 100644
--- a/src/chrome/locale/zh-TW/network-settings.dtd
+++ b/src/chrome/locale/zh-TW/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "選用">
<!ENTITY torsettings.useProxy.checkbox "使用代理服務連線到網際網路">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "代理伺服器類型:">
<!ENTITY torsettings.useProxy.type.placeholder "選擇代理伺服器類型">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "位址:">
<!ENTITY torsettings.useProxy.address.placeholder "IP 位址或主機名稱">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "連接埠:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "使用者名稱:">
+<!-- TODO: remove colon-->
<!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">
<!ENTITY torsettings.firewall.checkbox "這台電腦通過某個只允許連接至特定連接埠的防火牆">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.firewall.allowedPorts "允許的連接埠:">
<!ENTITY torsettings.useBridges.checkbox "我的國家中 Tor 受到審查">
<!ENTITY torsettings.useBridges.default "選擇內建的橋接">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "請耐心等候,我們正在建立 Tor 網路連線。  這個過程可能需要幾分鐘的時間。">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "了解更多">
+<!ENTITY torPreferences.bridges "橋接器">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge&#x2026;">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "進階的">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "解決驗證碼來請求橋接">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "解答不正確。請再試一次。">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs&#x2026;">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
1
0
[tor-launcher/master] Bug 31286: New strings for about:preferences#tor
by gk@torproject.org 11 Oct '19
by gk@torproject.org 11 Oct '19
11 Oct '19
commit 42ece714278aee288f63d3aab1450c9c1badcbac
Author: Richard Pospesel <richard(a)torproject.org>
Date: Wed Oct 9 16:46:45 2019 -0700
Bug 31286: New strings for about:preferences#tor
Adds several new strings for the about:preferences#tor page. Not
quite complete and a few tedious things to do:
- Remove the colon (':') character from several strings
(Username, Password, Port, etc) to match style of existing
fields in about:preferences
- Duplicate some existing strings living in torlauncher.properties
over to network-settings.dtd
---
src/chrome/locale/en-US/network-settings.dtd | 31 ++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/src/chrome/locale/en-US/network-settings.dtd b/src/chrome/locale/en-US/network-settings.dtd
index c6c5687..2c6e5a5 100644
--- a/src/chrome/locale/en-US/network-settings.dtd
+++ b/src/chrome/locale/en-US/network-settings.dtd
@@ -26,17 +26,23 @@
<!ENTITY torsettings.optional "Optional">
<!ENTITY torsettings.useProxy.checkbox "I use a proxy to connect to the Internet">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.type.placeholder "select a proxy type">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.port "Port:">
+<!-- TODO: remove colon-->
<!ENTITY torsettings.useProxy.username "Username:">
+<!-- TODO: remove colon-->
<!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">
+<!-- TODO: remove colon-->
<!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">
@@ -60,3 +66,28 @@
<!-- Progress -->
<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.  This may take several minutes.">
+
+<!-- #31286 about:preferences strings -->
+<!ENTITY torPreferences.categoryTitle "Tor">
+<!ENTITY torPreferences.torSettings "Tor Settings">
+<!ENTITY torPreferences.torSettingsDescription "Tor Browser routes your traffic over the Tor Network, run by thousands of volunteers around the world." >
+<!ENTITY torPreferences.learnMore "Learn More">
+<!ENTITY torPreferences.bridges "Bridges">
+<!ENTITY torPreferences.bridgesDescription "Bridges help you access the Tor Network in places where Tor is blocked. Depending on where you are, one bridge may work better than another.">
+<!ENTITY torPreferences.useBridge "Use a bridge">
+<!-- torlauncher.request_a_new_bridge -->
+<!ENTITY torPreferences.requestNewBridge "Request a New Bridge…">
+<!ENTITY torPreferences.provideBridge "Provide a bridge">
+<!ENTITY torPreferences.advanced "Advanced">
+<!ENTITY torPreferences.advancedDescription "Configure how Tor Browser connects to the internet.">
+<!ENTITY torPreferences.firewallPortsPlaceholder "Comma-separated values">
+<!ENTITY torPreferences.requestBridgeDialogTitle "Request Bridge">
+<!-- torlauncher.contacting_bridgedb=Contacting BridgeDB. Please wait. -->
+<!ENTITY torPreferences.requestBridgeDialogWaitPrompt "Contacting BridgeDB. Please Wait.">
+<!-- torlauncher.captcha_prompt=Solve the CAPTCHA to request a bridge. -->
+<!ENTITY torPreferences.requestBridgeDialogSolvePrompt "Solve the CAPTCHA to request a bridge.">
+<!--torlauncher.bad_captcha_solution=The solution is not correct. Please try again.-->
+<!ENTITY torPreferences.requestBridgeErrorBadSolution "The solution is not correct. Please try again.">
+<!ENTITY torPreferences.viewTorLogs "View the Tor logs.">
+<!ENTITY torPreferences.viewLogs "View Logs…">
+<!ENTITY torPreferences.torLogsDialogTitle "Tor Logs">
1
0
[tor-browser/tor-browser-68.1.0esr-9.0-2] fixup! Bug 23247: Communicating security expectations for .onion
by gk@torproject.org 11 Oct '19
by gk@torproject.org 11 Oct '19
11 Oct '19
commit dece7a15a8703596366c54f4420bd7286c66b10f
Author: Alex Catarineu <acat(a)torproject.org>
Date: Fri Sep 20 12:48:40 2019 +0200
fixup! Bug 23247: Communicating security expectations for .onion
---
browser/base/content/browser-siteIdentity.js | 4 +++
docshell/base/nsDocShell.cpp | 4 ++-
security/manager/ssl/nsSecureBrowserUIImpl.cpp | 46 ++++++++++++++++----------
3 files changed, 36 insertions(+), 18 deletions(-)
diff --git a/browser/base/content/browser-siteIdentity.js b/browser/base/content/browser-siteIdentity.js
index 12d9a29bf512..9da2e289b86d 100644
--- a/browser/base/content/browser-siteIdentity.js
+++ b/browser/base/content/browser-siteIdentity.js
@@ -612,6 +612,10 @@ var gIdentityHandler = {
* built-in (returns false) or imported (returns true).
*/
_hasCustomRoot() {
+ if (!this._secInfo) {
+ return false;
+ }
+
let issuerCert = null;
// Walk the whole chain to get the last cert.
// eslint-disable-next-line no-empty
diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp
index 578a06d61a83..7f3d8a3e0542 100644
--- a/docshell/base/nsDocShell.cpp
+++ b/docshell/base/nsDocShell.cpp
@@ -63,6 +63,7 @@
#include "mozilla/dom/ChildSHistory.h"
#include "mozilla/dom/nsCSPContext.h"
#include "mozilla/dom/LoadURIOptionsBinding.h"
+#include "mozilla/dom/nsMixedContentBlocker.h"
#include "mozilla/net/ReferrerPolicy.h"
#include "mozilla/net/UrlClassifierFeatureFactory.h"
@@ -5583,7 +5584,8 @@ nsDocShell::GetAllowMixedContentAndConnectionData(
// aRootHasSecureConnection should be false.
nsCOMPtr<nsIURI> rootUri = rootPrincipal->GetURI();
if (nsContentUtils::IsSystemPrincipal(rootPrincipal) || !rootUri ||
- !SchemeIsHTTPS(rootUri)) {
+ (!SchemeIsHTTPS(rootUri) &&
+ !nsMixedContentBlocker::IsPotentiallyTrustworthyOnion(rootUri))) {
*aRootHasSecureConnection = false;
}
diff --git a/security/manager/ssl/nsSecureBrowserUIImpl.cpp b/security/manager/ssl/nsSecureBrowserUIImpl.cpp
index 2aba013650f0..ea1dfca20b6b 100644
--- a/security/manager/ssl/nsSecureBrowserUIImpl.cpp
+++ b/security/manager/ssl/nsSecureBrowserUIImpl.cpp
@@ -9,6 +9,7 @@
#include "mozilla/Logging.h"
#include "mozilla/Unused.h"
#include "mozilla/dom/Document.h"
+#include "mozilla/dom/nsMixedContentBlocker.h"
#include "nsContentUtils.h"
#include "nsIChannel.h"
#include "nsDocShell.h"
@@ -246,8 +247,8 @@ static nsresult URICanBeConsideredSecure(
return rv;
}
- nsAutoCString host;
- bool isOnion = NS_SUCCEEDED(innermostURI->GetHost(host)) && StringEndsWith(host, NS_LITERAL_CSTRING(".onion"));
+ bool isOnion =
+ nsMixedContentBlocker::IsPotentiallyTrustworthyOnion(innermostURI);
canBeConsideredSecure = isHttps || isOnion;
@@ -314,24 +315,35 @@ nsresult nsSecureBrowserUIImpl::UpdateStateAndSecurityInfo(nsIChannel* channel,
if (NS_FAILED(rv)) {
return rv;
}
- // If the security state is STATE_IS_INSECURE, the TLS handshake never
- // completed. Don't set any further state.
- if (mState == STATE_IS_INSECURE) {
- return NS_OK;
+ // Skip setting some state if mState == STATE_IS_INSECURE (TLS handshake
+ // never completed). But do not return in that case, since a
+ // STATE_IS_INSECURE can still be changed later to STATE_IS_SECURE if it's
+ // routed over tor (.onion).
+ if (mState != STATE_IS_INSECURE) {
+ mTopLevelSecurityInfo = securityInfo;
+ MOZ_LOG(gSecureBrowserUILog, LogLevel::Debug,
+ (" set mTopLevelSecurityInfo"));
+ bool isEV;
+ rv = mTopLevelSecurityInfo->GetIsExtendedValidation(&isEV);
+ if (NS_FAILED(rv)) {
+ return rv;
+ }
+ if (isEV) {
+ MOZ_LOG(gSecureBrowserUILog, LogLevel::Debug, (" is EV"));
+ mState |= STATE_IDENTITY_EV_TOPLEVEL;
+ }
}
+ }
- mTopLevelSecurityInfo = securityInfo;
- MOZ_LOG(gSecureBrowserUILog, LogLevel::Debug,
- (" set mTopLevelSecurityInfo"));
- bool isEV;
- rv = mTopLevelSecurityInfo->GetIsExtendedValidation(&isEV);
- if (NS_FAILED(rv)) {
- return rv;
- }
- if (isEV) {
- MOZ_LOG(gSecureBrowserUILog, LogLevel::Debug, (" is EV"));
- mState |= STATE_IDENTITY_EV_TOPLEVEL;
+ // any protocol routed over tor is secure
+ if ((mState & STATE_IS_SECURE) == 0) {
+ if (nsMixedContentBlocker::IsPotentiallyTrustworthyOnion(uri)) {
+ MOZ_LOG(gSecureBrowserUILog, LogLevel::Debug, (" URI is onion"));
+ mState = STATE_IS_SECURE;
}
+ }
+
+ if (mState != STATE_IS_INSECURE) {
// Proactively check for mixed content in case GetState() is never called
// (this can happen when loading from the BF cache).
CheckForMixedContent();
1
0
[tor-browser-build/master] Bug 30460: Update TOPL Project to Use Android Toolchain (Firefox 68)
by gk@torproject.org 11 Oct '19
by gk@torproject.org 11 Oct '19
11 Oct '19
commit 7fc43b5e228232caede87b571777e4a0448780d4
Author: sisbell <shane.isbell(a)gmail.com>
Date: Fri Oct 11 13:33:08 2019 -0700
Bug 30460: Update TOPL Project to Use Android Toolchain (Firefox 68)
---
projects/tor-onion-proxy-library/build | 2 ++
1 file changed, 2 insertions(+)
diff --git a/projects/tor-onion-proxy-library/build b/projects/tor-onion-proxy-library/build
index 41cc815..0b949a3 100644
--- a/projects/tor-onion-proxy-library/build
+++ b/projects/tor-onion-proxy-library/build
@@ -17,6 +17,8 @@ tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
# Patch projects
cd /var/tmp/build/[% project %]-[% c('version') %]
+# Gradle patch provided so that when generating a gradle dependency list, the
+# build will pull down the correct android tool versions
patch -p1 < $rootdir/gradle.patch
patch -p1 < $rootdir/canceldormant.patch
1
0
[tor-browser/tor-browser-68.1.0esr-9.0-2] fixup! Bug 26690: Port padlock states for .onion services to mobile
by gk@torproject.org 11 Oct '19
by gk@torproject.org 11 Oct '19
11 Oct '19
commit 89acb810aa0f622316b43812bb07cb56eb9c9377
Author: Alex Catarineu <acat(a)torproject.org>
Date: Mon Sep 30 13:10:29 2019 +0200
fixup! Bug 26690: Port padlock states for .onion services to mobile
---
mobile/android/chrome/content/browser.js | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/mobile/android/chrome/content/browser.js b/mobile/android/chrome/content/browser.js
index fc66e8b4f23e..b1921562e53d 100644
--- a/mobile/android/chrome/content/browser.js
+++ b/mobile/android/chrome/content/browser.js
@@ -6770,6 +6770,12 @@ var IdentityHandler = {
*/
getIdentityData: function() {
let result = {};
+
+ // Even if the connection is secure, it may not have a certificate
+ if (!this._lastSecInfo) {
+ return result;
+ }
+
let cert = this._lastSecInfo.serverCert;
// Human readable name of Subject
@@ -6933,7 +6939,7 @@ var IdentityHandler = {
result.host = this.getEffectiveHost();
result.isOnionHost = this.isOnionHost();
- result.hasCert = !!this._lastStatus;
+ result.hasCert = !!this._lastSecInfo;
// Don't show identity data for pages with an unknown identity or if any
// mixed content is loaded (mixed display content is loaded by default).
1
0
[tor-browser/tor-browser-68.1.0esr-9.0-2] Bug 13543: Spoof smooth and powerEfficient for Media Capabilities
by gk@torproject.org 11 Oct '19
by gk@torproject.org 11 Oct '19
11 Oct '19
commit 990e3caf34672b64f30db79f585903b8ce4f88d6
Author: Alex Catarineu <acat(a)torproject.org>
Date: Thu Oct 10 15:08:12 2019 +0200
Bug 13543: Spoof smooth and powerEfficient for Media Capabilities
---
dom/media/mediacapabilities/MediaCapabilities.cpp | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/dom/media/mediacapabilities/MediaCapabilities.cpp b/dom/media/mediacapabilities/MediaCapabilities.cpp
index cef653fd686a..148e2136ed2a 100644
--- a/dom/media/mediacapabilities/MediaCapabilities.cpp
+++ b/dom/media/mediacapabilities/MediaCapabilities.cpp
@@ -282,6 +282,11 @@ already_AddRefed<Promise> MediaCapabilities::DecodingInfo(
if (aValue.IsReject()) {
p = CapabilitiesPromise::CreateAndReject(
std::move(aValue.RejectValue()), __func__);
+ } else if (nsContentUtils::
+ ShouldResistFingerprinting()) {
+ p = CapabilitiesPromise::CreateAndResolve(
+ MediaCapabilitiesInfo(true, true, true),
+ __func__);
} else {
MOZ_ASSERT(config->IsVideo());
nsAutoCString reason;
1
0
[tor-browser/tor-browser-68.1.0esr-9.0-2] Bug 31607: App menu items stop working on macOS
by gk@torproject.org 11 Oct '19
by gk@torproject.org 11 Oct '19
11 Oct '19
commit 1da04ce775a4994924a2c8154fb1f76c663a5eff
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Thu Oct 3 10:53:43 2019 -0400
Bug 31607: App menu items stop working on macOS
Avoid re-creating the hidden window, since this causes the nsMenuBarX
object that is associated with the app menu to be freed (which in
turn causes all of the app menu items to stop working).
More detail: There should only be one hidden window.
XREMain::XRE_mainRun() contains an explicit call to create the
hidden window and that is the normal path by which it is created.
However, when Tor Launcher's wizard/progress window is opened during
startup, a hidden window is created earlier as a side effect of
calls to nsAppShellService::GetHiddenWindow(). Then, when
XREMain::XRE_mainRun() creates its hidden window, the original one
is freed which also causes the app menu's nsMenuBarX object which
is associated with that window to be destroyed. When that happens,
the menuGroupOwner property within each Cocoa menu items's MenuItemInfo
object is cleared. This breaks the link that is necessary for
NativeMenuItemTarget's menuItemHit method to dispatch a menu item
event.
---
xpfe/appshell/nsAppShellService.cpp | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/xpfe/appshell/nsAppShellService.cpp b/xpfe/appshell/nsAppShellService.cpp
index b09534c8841d..cb76f1ab45d5 100644
--- a/xpfe/appshell/nsAppShellService.cpp
+++ b/xpfe/appshell/nsAppShellService.cpp
@@ -85,6 +85,10 @@ NS_IMPL_ISUPPORTS(nsAppShellService, nsIAppShellService, nsIObserver)
NS_IMETHODIMP
nsAppShellService::CreateHiddenWindow() {
+ if (mHiddenWindow) {
+ return NS_OK;
+ }
+
return CreateHiddenWindowHelper(false);
}
1
0
11 Oct '19
commit 9a16e4bad1453e530a1308db7450b2e617bd5b58
Author: emma peel <emmapeel(a)torproject.org>
Date: Fri Oct 11 11:59:27 2019 +0000
Bug 32041: Replace = with real hamburguer icon ≡
---
chrome/locale/en-US/browserOnboarding.properties | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/chrome/locale/en-US/browserOnboarding.properties b/chrome/locale/en-US/browserOnboarding.properties
index 7acfe2eb..8068b6c8 100644
--- a/chrome/locale/en-US/browserOnboarding.properties
+++ b/chrome/locale/en-US/browserOnboarding.properties
@@ -51,7 +51,7 @@ onboarding.tour-tor-update.prefix-updated=Updated
onboarding.tour-tor-toolbar=Toolbar
onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
onboarding.tour-tor-toolbar-update-9.0.next-button=Go to Tor Network
1
0
[tor-browser-build/master] Bug 30665: Get Firefox 68 ESR Working with latest android toolchain
by gk@torproject.org 11 Oct '19
by gk@torproject.org 11 Oct '19
11 Oct '19
commit a6a151402cef2a1e5ea6b3fbfc7aa6a90d9de507
Author: sisbell <shane.isbell(a)gmail.com>
Date: Wed Oct 9 12:24:16 2019 -0700
Bug 30665: Get Firefox 68 ESR Working with latest android toolchain
---
projects/firefox/1527534.patch | 139 -------------------------
projects/firefox/android-packages.patch | 10 --
projects/firefox/android-remove-emulator.patch | 23 ----
projects/firefox/build | 10 +-
projects/firefox/config | 6 --
5 files changed, 3 insertions(+), 185 deletions(-)
diff --git a/projects/firefox/1527534.patch b/projects/firefox/1527534.patch
deleted file mode 100644
index ad8720c..0000000
--- a/projects/firefox/1527534.patch
+++ /dev/null
@@ -1,139 +0,0 @@
-From dcd5a0e59bef209aa8301a427b749830876cdada Mon Sep 17 00:00:00 2001
-From: Jeff Gilbert <jgilbert(a)mozilla.com>
-Date: Tue, 19 Feb 2019 15:43:39 -0800
-Subject: [PATCH] Bug 1527534 - Reuse LoadApitraceLibrary. r=lsalzman a=lizzard
-
-Differential Revision: https://phabricator.services.mozilla.com/D20418
-
-diff --git a/gfx/gl/GLContextProviderEGL.cpp b/gfx/gl/GLContextProviderEGL.cpp
-index d91d03aee6a9..f4d8c1f80176 100644
---- a/gfx/gl/GLContextProviderEGL.cpp
-+++ b/gfx/gl/GLContextProviderEGL.cpp
-@@ -265,11 +265,8 @@ GLContextEGL::~GLContextEGL() {
- }
-
- bool GLContextEGL::Init() {
--#if defined(ANDROID)
-- // We can't use LoadApitraceLibrary here because the GLContext
-- // expects its own handle to the GL library
-- if (!OpenLibrary(APITRACE_LIB))
--#endif
-+ mLibrary = LoadApitraceLibrary();
-+ if (!mLibrary) {
- if (!OpenLibrary(GLES2_LIB)) {
- #if defined(XP_UNIX)
- if (!OpenLibrary(GLES2_LIB2)) {
-@@ -278,6 +275,7 @@ bool GLContextEGL::Init() {
- }
- #endif
- }
-+ }
-
- SetupLookupFunction();
- if (!InitWithPrefix("gl", true)) return false;
-diff --git a/gfx/gl/GLLibraryEGL.cpp b/gfx/gl/GLLibraryEGL.cpp
-index fe4bd9811949..ef693e283968 100644
---- a/gfx/gl/GLLibraryEGL.cpp
-+++ b/gfx/gl/GLLibraryEGL.cpp
-@@ -63,9 +63,18 @@ static const char* sEGLExtensionNames[] = {
- "EGL_ANGLE_device_creation_d3d11",
- };
-
--#if defined(ANDROID)
-+PRLibrary* LoadApitraceLibrary() {
-+ const char* path = nullptr;
-+
-+#ifdef ANDROID
-+ // We only need to explicitly dlopen egltrace
-+ // on android as we can use LD_PRELOAD or other tricks
-+ // on other platforms. We look for it in /data/local
-+ // as that's writeable by all users.
-+ path = "/data/local/tmp/egltrace.so";
-+#endif
-+ if (!path) return nullptr;
-
--static PRLibrary* LoadApitraceLibrary() {
- // Initialization of gfx prefs here is only needed during the unit tests...
- gfxPrefs::GetSingleton();
- if (!gfxPrefs::UseApitrace()) {
-@@ -73,7 +82,6 @@ static PRLibrary* LoadApitraceLibrary() {
- }
-
- static PRLibrary* sApitraceLibrary = nullptr;
--
- if (sApitraceLibrary) return sApitraceLibrary;
-
- nsAutoCString logFile;
-@@ -87,20 +95,19 @@ static PRLibrary* LoadApitraceLibrary() {
- nsAutoCString logPath;
- logPath.AppendPrintf("%s/%s", getenv("GRE_HOME"), logFile.get());
-
-+#ifndef XP_WIN // Windows is missing setenv and forbids PR_LoadLibrary.
- // apitrace uses the TRACE_FILE environment variable to determine where
- // to log trace output to
- printf_stderr("Logging GL tracing output to %s", logPath.get());
- setenv("TRACE_FILE", logPath.get(), false);
-
-- printf_stderr("Attempting load of %s\n", APITRACE_LIB);
--
-- sApitraceLibrary = PR_LoadLibrary(APITRACE_LIB);
-+ printf_stderr("Attempting load of %s\n", path);
-+ sApitraceLibrary = PR_LoadLibrary(path);
-+#endif
-
- return sApitraceLibrary;
- }
-
--#endif // ANDROID
--
- #ifdef XP_WIN
- // see the comment in GLLibraryEGL::EnsureInitialized() for the rationale here.
- static PRLibrary* LoadLibraryForEGLOnWindows(const nsAString& filename) {
-diff --git a/gfx/gl/GLLibraryEGL.h b/gfx/gl/GLLibraryEGL.h
-index 069a2f0908d7..3f200bf76b3f 100644
---- a/gfx/gl/GLLibraryEGL.h
-+++ b/gfx/gl/GLLibraryEGL.h
-@@ -18,18 +18,6 @@
- #include <bitset>
- #include <vector>
-
--#ifdef ANDROID
--// We only need to explicitly dlopen egltrace
--// on android as we can use LD_PRELOAD or other tricks
--// on other platforms. We look for it in /data/local
--// as that's writeable by all users
--//
--// This should really go in GLLibraryEGL.cpp but we currently reference
--// APITRACE_LIB in GLContextProviderEGL.cpp. Further refactoring
--// will come in subsequent patches on Bug 732865
--#define APITRACE_LIB "/data/local/tmp/egltrace.so"
--#endif
--
- #if defined(MOZ_X11)
- #define EGL_DEFAULT_DISPLAY ((EGLNativeDisplayType)mozilla::DefaultXDisplay())
- #else
-@@ -49,6 +37,7 @@ class DataSourceSurface;
- namespace gl {
-
- class GLContext;
-+PRLibrary* LoadApitraceLibrary();
-
- void BeforeEGLCall(const char* funcName);
- void AfterEGLCall(const char* funcName);
-diff --git a/gfx/thebes/gfxPrefs.h b/gfx/thebes/gfxPrefs.h
-index b2e094672b59..fae5bec1e78e 100644
---- a/gfx/thebes/gfxPrefs.h
-+++ b/gfx/thebes/gfxPrefs.h
-@@ -433,9 +433,7 @@ class gfxPrefs final {
- SmoothScrollMSDPhysicsRegularSpringConstant, int32_t, 1000);
-
- DECL_GFX_PREF(Once, "gfx.android.rgb16.force", AndroidRGB16Force, bool, false);
--#if defined(ANDROID)
- DECL_GFX_PREF(Once, "gfx.apitrace.enabled", UseApitrace, bool, false);
--#endif
- #if defined(RELEASE_OR_BETA)
- // "Skip" means this is locked to the default value in beta and release.
- DECL_GFX_PREF(Skip, "gfx.blocklist.all", BlocklistAll, int32_t, 0);
---
-2.20.1
-
diff --git a/projects/firefox/android-packages.patch b/projects/firefox/android-packages.patch
deleted file mode 100644
index 3c70b41..0000000
--- a/projects/firefox/android-packages.patch
+++ /dev/null
@@ -1,10 +0,0 @@
-diff --git a/python/mozboot/mozboot/android-packages.txt b/python/mozboot/mozboot/android-packages.txt
-index ac947a72f410..1a9aa21cb5d8 100644
---- a/python/mozboot/mozboot/android-packages.txt
-+++ b/python/mozboot/mozboot/android-packages.txt
-@@ -1,5 +1,3 @@
- platform-tools
- build-tools;27.0.3
- platforms;android-28
--emulator
--docs
diff --git a/projects/firefox/android-remove-emulator.patch b/projects/firefox/android-remove-emulator.patch
deleted file mode 100644
index 9499983..0000000
--- a/projects/firefox/android-remove-emulator.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-diff --git a/build/moz.configure/android-sdk.configure b/build/moz.configure/android-sdk.configure
-index a8ecc617850d..0a58597e2646 100644
---- a/build/moz.configure/android-sdk.configure
-+++ b/build/moz.configure/android-sdk.configure
-@@ -87,10 +87,6 @@ def android_platform_tools(sdk_root):
- tools)
-
-
--@depends(android_sdk_root)
--def android_emulator_path(sdk_root):
-- return [os.path.join(sdk_root, 'emulator')]
--
-
- @template
- def check_android_tools(tool, tool_dir):
-@@ -108,7 +104,6 @@ def check_android_tools(tool, tool_dir):
-
- check_android_tools('zipalign', android_build_tools)
- check_android_tools('adb', android_platform_tools)
--check_android_tools('emulator', android_emulator_path)
-
- set_config('ANDROID_SDK_ROOT', android_sdk_root)
- set_config('ANDROID_TOOLS', android_tools)
diff --git a/projects/firefox/build b/projects/firefox/build
index 7903bd3..456aa07 100644
--- a/projects/firefox/build
+++ b/projects/firefox/build
@@ -56,10 +56,6 @@ mv -f $rootdir/[% c('input_files_by_name/mozconfig') %] .mozconfig
export ASAN_OPTIONS="detect_leaks=0"
[% END -%]
-[% IF c("var/android-armv7") -%]
- cp /var/tmp/dist/android-toolchain/android-ndk/arm/lib64/libclang.so.6 /var/tmp/dist/android-toolchain/android-ndk/arm/lib64/libclang.so
-[% END -%]
-
[% IF c("var/android") %]
gradle_repo=/var/tmp/dist/gradle-dependencies
export GRADLE_MAVEN_REPOSITORIES="file://$gradle_repo"
@@ -71,9 +67,9 @@ mv -f $rootdir/[% c('input_files_by_name/mozconfig') %] .mozconfig
# Move Android library dependencies so they will be included in the apk during the build
cp $rootdir/[% c('input_files_by_name/topl') %]/* mobile/android/app
cp $rootdir/[% c('input_files_by_name/tor-android-service') %]/* mobile/android/app
- # Apply patches
- patch -p1 < $rootdir/android-packages.patch
- patch -p1 < $rootdir/android-remove-emulator.patch
+ # Move emulator to location that firefox build expects
+ mkdir /var/tmp/dist/android-toolchain/android-sdk-linux/emulator
+ cp /var/tmp/dist/android-toolchain/android-sdk-linux/tools/emulator /var/tmp/dist/android-toolchain/android-sdk-linux/emulator
# Prepare building the multi-locale .apk including our own strings
mkdir -p /var/tmp/dist/locales
diff --git a/projects/firefox/config b/projects/firefox/config
index 9da579a..63d2652 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -179,15 +179,9 @@ input_files:
- project: tor-onion-proxy-library
name: topl
enable: '[% c("var/android") %]'
- - filename: android-packages.patch
- enable: '[% c("var/android") %]'
- - filename: android-remove-emulator.patch
- enable: '[% c("var/android") %]'
- project: firefox-locale-bundle
name: firefox-locale-bundle
enable: '[% c("var/android") %]'
- project: tba-translation
name: tba-translation
enable: '[% c("var/android") %]'
- - filename: 1527534.patch
- enable: '[% c("var/android") %]'
1
0
commit a116493b811c499dd4ff9cf8cec18db458b4b738
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Oct 11 06:51:48 2019 +0000
Add missing item to Changelog
---
projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt | 1 +
1 file changed, 1 insertion(+)
diff --git a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
index 3499f94..519e228 100644
--- a/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
+++ b/projects/tor-browser/Bundle-Data/Docs/ChangeLog.txt
@@ -116,6 +116,7 @@ Tor Browser 9.0a6 -- September 4 2019
* Android
* Bug 31010: Rebase mobile patches for Fennec 68
* Bug 31010: Don't use addTrustedTab() on mobile
+ * Bug 30607: Support Tor Browser running on Android Q
* Build System:
* All Platforms:
* Bug 30585: Provide standalone clang 8 project across all platforms
1
0
[tor-browser-spec/master] Update notes based on GeKo's comments.
by mikeperry@torproject.org 11 Oct '19
by mikeperry@torproject.org 11 Oct '19
11 Oct '19
commit d25eeb661b9d4975a1a7868f07d333b5332d39dd
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Thu Oct 10 19:13:10 2019 -0500
Update notes based on GeKo's comments.
---
audits/FF68_NETWORK_AUDIT | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/audits/FF68_NETWORK_AUDIT b/audits/FF68_NETWORK_AUDIT
index f8965cb..93b0c9a 100644
--- a/audits/FF68_NETWORK_AUDIT
+++ b/audits/FF68_NETWORK_AUDIT
@@ -155,8 +155,9 @@ _SOCKET
+ Looks benign and also not new
UDPSocket
- - XXX: devtools debugger discovery still uses it
+ - devtools debugger discovery still uses it
- ./devtools/shared/discovery/discovery.js
+ + Disabled via pref in #18546
+ webrtc moved code
+ dom.udpsocket.enabled still false
- fallback multicastDNS uses it (not new)
@@ -167,14 +168,15 @@ TCPSocket
SocketTransport
+ IOactivityMonitor, NetworkActivityMonitor? (old)
- - XXX: presentation control service? I think this is old but moved
+ - presentation control service? I think this is old but moved
- dom/presentation/PresentationTCPSessionTransport.cpp
- - App to app service..
+ + Patched
- Dashboard
- netwerk/base/Dashboard.cpp
+ Only examine opened sockets and cached DNS
- - XXX: Roku control (old)
+ - Roku control (old)
- ./toolkit/modules/secondscreen/RokuApp.jsm
+ + patched
- NetworkConnectivityService?? This looks new
- ./netwerk/base/NetworkConnectivityService.cpp
+ Uses DNS service and nsIChannels.. Proxy safe
@@ -228,7 +230,7 @@ Android Java calls
+ ch.boye.httpclientandroidlib.impl.client.* (look for execute() calls)
+ BaseResource.java (is this proxied? Who calls this?)
+ Lots of consumers..
- - XXX: Patch going back in: https://bugs.torproject.org/31934
+ + Patch going back in: https://bugs.torproject.org/31934
+ leanplum (disabled)
+ Adjust SDK uses execute directly
+ https://bugs.torproject.org/25906 disabled
1
0
11 Oct '19
commit 8edeebec646e37161b78fabda6ab51f794df7fdb
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Thu Oct 10 19:02:02 2019 -0500
Add Firefox 68 network audit notes
---
audits/FF68_NETWORK_AUDIT | 311 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 311 insertions(+)
diff --git a/audits/FF68_NETWORK_AUDIT b/audits/FF68_NETWORK_AUDIT
new file mode 100644
index 0000000..f8965cb
--- /dev/null
+++ b/audits/FF68_NETWORK_AUDIT
@@ -0,0 +1,311 @@
+Things to grep for in general when investigating changes:
+
+=============== Native DNS Portion =============
+
+PR_GetHostByName
+PR_GetIPNodeByName
+PR_GetAddrInfoByName
+PR_StringToNetAddr (itself is good as it passes AI_NUMERICHOST to getaddrinfo. No resolution.)
+
+MDNS
+TRR (DNS Trusted Recursive Resolver)
+
+Direct Paths to DNS resolution:
+nsDNSService::Resolve
+nsDNSService::AsyncResolve
+nsHostResolver::ResolveHost
+
+============ Misc Socket Portion ==============
+
+SOCK_
+SOCKET_
+_SOCKET
+UDPSocket
+TCPSocket
+ PR_NewTCPSocket
+ AsyncTCPSocket
+
+Misc PR_Socket
+
+=========== Misc XPCOM Portion ================
+
+Misc XPCOM (including commands for pre-diff review approach)
+ *SocketProvider
+ grep -R udp-socket .
+ grep -R tcp-socket .
+ grep for tcpsocket
+ grep -R "NS_" | grep SOCKET | grep "_C"
+ grep -R "@mozilla.org/network/" . | grep socket | grep -v udp-socket
+
+============ Rust Portion ================
+
+Rust
+ - XXX: What do we grep for here? Or do we rely on Ritter's compile-time tool?
+ - Check for new sendmsg and recvmsg usage
+
+============ Android Portion =============
+
+Android Java calls
+ - URLConnection
+ - XXX: getInputStream? other methods?
+ - HttpURLConnection
+ - UrlConnectionDownloader
+ - ch.boye.httpclientandroidlib.impl.client.* (look for execute() calls)
+ - grep -n openConnection\( mobile/android/thirdparty/
+ - java.net
+ - java.net.URL -- has SEVERAL proxy bypass URL fetching methods :/
+ - javax.net
+ - ch.boye.httpclientandroidlib.conn.* (esp ssl)
+ - ch.boye.httpclientandroidlib.impl.conn.* (esp ssl)
+ - Sudden appearance of thirdparty libs:
+ - OkHttp
+ - Retrofit
+ - Glide
+ - com.amitshekhar.android
+ - IntentHelper
+ - openUriExternal (can come from GeckoAppShell too)
+ - getHandlersForMimeType
+ - getHandlersForURL
+ - getHandlersForIntent
+ - android.content.Intent - too common; instead find launch methods:
+ - startActivity
+ - startActivities
+ - sendBroadcast
+ - sendOrderedBroadcast
+ - startService
+ - bindService
+ - android.app.PendingIntent
+ - android.app.DownloadManager
+ - ActivityHandlerHelper.startIntentAndCatch
+
+
+
+============ Regression/Prior Vuln Review =========
+
+Review proxy bypass bugs; check for new vectors to look for:
+ - https://trac.torproject.org/projects/tor/query?keywords=~tbb-proxy
+
+-------------------------------------------------------------------------------
+I followed the diff approach by doing `git diff esr60 esr68` and then
+going over all the changes containing the above mentioned potentially dangerous
+calls and features.
+
+Direct Paths to DNS resolution:
+ + PR_GetHostByName
+ + No new cals in diff
+PR_GetIPNodeByName
+ + No new calls in diff
+PR_GetAddrInfoByName
+ + Edited calls in diff, but no change
+PR_StringToNetAddr (itself is good as it passes AI_NUMERICHOST to getaddrinfo. No resolution.)
+ + One change in NSS unit tests ("127.0.0.1" to higher level call)
+
+MDNS:
+ + No substantive changes
+
+nsDNSService:
+ - nsDNSServiceDiscovery appears to support fallback JS mDNS option
+ + nsDNSServiceDiscovery itself is not new..
+ + nsDNSService has an mProxyType now
+ - nsDNSService::AsyncResolveInternal()?
+ + Patch blocks this (XXX: Maybe should move to PreprocessHostName)
+ + nsDNSAsyncRequest
+ - nHostResolver::ResolveHost
+ + not used outside dnsservice
+ + nsDNSService::ResolveInternal()
+ + ResolveHost() with type now...
+ + Patched
+ + AsyncResolve, AsyncResolveNative, AsyncResolveByType
+ + AsyncResolveInternal()
+ + Patched
+ + Resolve()
+ + ResolveNative
+ + ResolveInternal()
+ + Patched
+ + What about our dns service patch? where did that go?
+ + https://gitweb.torproject.org/tor-browser.git/commit/?h=tor-browser-68.1.0e…
+ + https://gitweb.torproject.org/tor-browser.git/commit/?h=tor-browser-60.8.0e…
+nsHostResolver:
+ + Only used by DNS service
+
+
+SOCK_
+ + libvpx has unit tests that use sockets
+ + many changes due to moved webrtc code..
+ + All disabled and not compiled in
+ + Lots of python unittests
+ + Sctp code has sockets.. Is this used?
+ + by webrtc, which we disable
+ - rust/cloudabi has some...
+ + recordreplay has some but they are AF_UNIX
+
+SOCKET_
+ + Again, lots due to moved WebRTC code
+ + Some android sockets in "LeanPlum" android lib
+ + leanplum is disabled
+ + Curl is in the tree now? lol
+ + Some sandboxing constants
+
+_SOCKET
+ - media/audioipc in rust?
+ - mio in rust?
+ + is media/mtransport/nr_socket_prsock.cpp off with webrtc?
+ + looks like yes
+ - IOActivityMonitor?
+ + Looks benign and also not new
+
+UDPSocket
+ - XXX: devtools debugger discovery still uses it
+ - ./devtools/shared/discovery/discovery.js
+ + webrtc moved code
+ + dom.udpsocket.enabled still false
+ - fallback multicastDNS uses it (not new)
+TCPSocket
+ + devtools adbsocket uses, but to localhost
+ + mtransport uses, but disabled for webrtc
+ + Tests use
+
+SocketTransport
+ + IOactivityMonitor, NetworkActivityMonitor? (old)
+ - XXX: presentation control service? I think this is old but moved
+ - dom/presentation/PresentationTCPSessionTransport.cpp
+ - App to app service..
+ - Dashboard
+ - netwerk/base/Dashboard.cpp
+ + Only examine opened sockets and cached DNS
+ - XXX: Roku control (old)
+ - ./toolkit/modules/secondscreen/RokuApp.jsm
+ - NetworkConnectivityService?? This looks new
+ - ./netwerk/base/NetworkConnectivityService.cpp
+ + Uses DNS service and nsIChannels.. Proxy safe
+ - TCPFastOpen (old, but flagged before)
+ - ./netwerk/base/TCPFastOpenLayer.cpp
+ - AttachTCPFastOpenIOLayer
+ + Appears to attach to nsSocketTransport such that it would only fast
+ open to the socks port..
+ - TCPFastOpenConnect
+ + Only used via nsSocketTransport
+
+Extra:
+ PR_Socket()
+ + None
+ PR_Connect()?
+ + Minor changes
+
+
+Misc XPCOM (including commands for pre-diff review approach)
+ + *SocketProvider
+ + Only minor changes
+ grep -R udp-socket .
+ + minor changes
+ grep -R tcp-socket .
+ + docstring only
+ grep for tcpsocket
+ + adb uses for 127.0.0.1 connection
+ + webrtc
+ grep -R "NS_" | grep SOCKET | grep "_C"
+ + indent and thread check changes; removed code
+ grep -R "@mozilla.org/network/" . | grep socket | grep -v udp-socket
+ + minor changes to spdy and unittests
+
+Rust
+ + Check for new sendmsg and recvmsg usage
+ - XXX: only in mio, audioipc..
+ - XXX: ask tjr to re-run tool?
+
+Android Java calls
+ - URLConnection (and HttpURLConnection)
+ + updater code moved; still looks ok
+ + BitmapConnection extends in mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoAppShell.java
+ + Some DRM thing
+ + Crashreporter
+ + leanplum (disabled)
+ + DefaultHttpDataSource (used only by exoplayer/HLS, which is disabled)
+ + tests
+ + grep -n openConnection\( mobile/android/thirdparty/
+ + leanplum (disabled)
+ + UrlConnectionDownloader in mobile/android/thirdparty/com/squareup/picasso/
+ + ch.boye.httpclientandroidlib.impl.client.* (look for execute() calls)
+ + BaseResource.java (is this proxied? Who calls this?)
+ + Lots of consumers..
+ - XXX: Patch going back in: https://bugs.torproject.org/31934
+ + leanplum (disabled)
+ + Adjust SDK uses execute directly
+ + https://bugs.torproject.org/25906 disabled
+ + java.net
+ + mobile/android/geckoview/src/thirdparty/java/com/google/android/exoplayer2/upstream/UdpDataSource.java
+ + Not used anywhere
+ + also: https://gitweb.torproject.org/tor-browser.git/commit/mobile/android/geckovi…
+ + also https://gitweb.torproject.org/tor-browser.git/commit/mobile/android/moz.con…
+ - java.net.URL
+ - XXX: GeckoApplication.downloadImageForSetImage uses URL.openStream()
+ - XXX: GeckoActionProvider.downloadImageForIntent uses java.net.URL.openStream()
+ - XXX: GeckAppShell has many wrappers to create inputstreams from URLConnections
+ - Do these always have to be opened/connected first?
+ - XXX: GeckoMediaDrmBridgeV21.java - uses android.media.MediaDrm which seems to fetch stuff??
+ - XXX: BitmapUtils.decodeUrl uses openStream for non-jar urls
+ - XXX: GeckoJarReader - tons of use.. Can this be used on remote jars?
+ - XXX: AbstractCommunicator.openConnectionAndSetHeaders() - uses url.openConnection()
+ - XXX: AbstractCommunicator.sendData() - uses url.getOutputStream().. maybe ok?
+ + javax.net
+ + TLSSocketFactory from sync
+ + not used
+ + ch.boye.httpclientandroidlib.conn.* (esp ssl)
+ + Not used
+ + ch.boye.httpclientandroidlib.impl.conn.* (esp ssl)
+ + Not used
+ - IntentHelper
+ + openUriExternal prompts if private browsing mode enabled
+ - XXX: Do we enable this? Can users turn it off?
+ - XXX: ./mobile/android/base/java/org/mozilla/gecko/activitystream/homepanel/menu/ActivityStreamContextMenu.java
+ - Uses intents to direct fetch URL
+ - XXX: Sets "show in private browsing mode" prompt to false
+ - XXX: ./mobile/android/base/java/org/mozilla/gecko/BrowserApp.java
+ - Also does telemetry via IntentHelper.openURIExternal
+ - XXX: Delegates to BrowserAppDelegate list in onNewIntent()... What's in this
+ list?
+ - XXX: ./mobile/android/base/java/org/mozilla/gecko/ChromeCastDisplay.java
+ - XXX: Looks like it might launch external service?
+ - XXX: ./mobile/android/base/java/org/mozilla/gecko/home/HomeFragment.java
+ - getHandlersFor*
+ - HelperApps.jsm
+ + browser.js uses prompt
+ + HelperAppDialog.js
+ - android.content.Intent? OMG everywhere :(
+ - startActivity
+ - XXX: ActivityHandlerHelper - Good candidate to patch for external
+ activities
+ - XXX: BrowserApp.onUrlOpenWithRefferer - Might be able to launch other
+ apps if OPEN_WITH_INTENT flag is set?
+ - XXX: CustomTabsActivity.java - Several methods
+ - XXX: WebAppActivity.onLoadRequest
+ - XXX: BasicGeckoViewPrompt.onFilePrompt()
+ - XXX: GeckoViewActivity.onExternalResponse()
+ + startActivities
+ + not used
+ + sendBroadcast
+ + Some wifi scanning/GPS stuff but is local broadcast..
+ + sendOrderedBroadcast
+ + not used
+ + startService
+ + all use seems targeted to sub-components
+ - bindService
+ - XXX: SurfaceAllocator - no idea what is happening here :/
+ - XXX: RemoteManager - no idea what is happening here :/
+- android.app.PendingIntent
+ - XXX: ChromeCastDisplay.java - probably want to make sure this is disabled?
+ - It uses RemotePresentationService
+ - XXX: CustomTabsActivity.performPendingIntent - again, hard to tell what is
+ happening here :/
+- android.app.DownloadManager
+ - XXX: BrowserApp.java uses it
+ - XXX: DownloadsIntegration.java uses it, but has a check for useSystemDownloadManager()
++ ActivityHandlerHelper.startIntentAndCatch
+ + Used only by other wrappers already covered
+
+
+
+TRR:
+ - assuming disabled by pref; deferring audit
+
+
1
0
[tor-browser-spec/master] Add a sketch for how we've done the network audits so far.
by mikeperry@torproject.org 11 Oct '19
by mikeperry@torproject.org 11 Oct '19
11 Oct '19
commit caf16ac6759033b770b557c606fff09c5b7d9bf2
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Thu Oct 10 19:01:25 2019 -0500
Add a sketch for how we've done the network audits so far.
---
audits/NETWORK_AUDIT_RUBRIC | 88 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 88 insertions(+)
diff --git a/audits/NETWORK_AUDIT_RUBRIC b/audits/NETWORK_AUDIT_RUBRIC
new file mode 100644
index 0000000..89ec61c
--- /dev/null
+++ b/audits/NETWORK_AUDIT_RUBRIC
@@ -0,0 +1,88 @@
+`git diff esrA esrB` and then go over all the changes containing the
+above mentioned potentially dangerous calls and features. Grep the diff for
+the following strings and examine surrounding usage.
+
+=============== Native DNS Portion =============
+
+PR_GetHostByName
+PR_GetIPNodeByName
+PR_GetAddrInfoByName
+PR_StringToNetAddr (itself is good as it passes AI_NUMERICHOST to getaddrinfo. No resolution.)
+
+MDNS
+TRR (DNS Trusted Recursive Resolver)
+
+Direct Paths to DNS resolution:
+nsDNSService::Resolve
+nsDNSService::AsyncResolve
+nsHostResolver::ResolveHost
+
+============ Misc Socket Portion ==============
+
+SOCK_
+SOCKET_
+_SOCKET
+UDPSocket
+TCPSocket
+ PR_NewTCPSocket
+ AsyncTCPSocket
+
+Misc PR_Socket
+
+=========== Misc XPCOM Portion ================
+
+Misc XPCOM (including commands for pre-diff review approach)
+ *SocketProvider
+ grep -R udp-socket .
+ grep -R tcp-socket .
+ grep for tcpsocket
+ grep -R "NS_" | grep SOCKET | grep "_C"
+ grep -R "@mozilla.org/network/" . | grep socket | grep -v udp-socket
+
+============ Rust Portion ================
+
+Rust
+ - XXX: What do we grep for here? Or do we rely on Ritter's compile-time tool?
+ - Check for new sendmsg and recvmsg usage
+
+============ Android Portion =============
+
+Android Java calls
+ - URLConnection
+ - XXX: getInputStream? other methods?
+ - HttpURLConnection
+ - UrlConnectionDownloader
+ - ch.boye.httpclientandroidlib.impl.client.* (look for execute() calls)
+ - grep -n openConnection\( mobile/android/thirdparty/
+ - java.net.URL -- has SEVERAL proxy bypass URL fetching methods :/
+ - java.net
+ - javax.net
+ - ch.boye.httpclientandroidlib.conn.* (esp ssl)
+ - ch.boye.httpclientandroidlib.impl.conn.* (esp ssl)
+ - Sudden appearance of thirdparty libs:
+ - OkHttp
+ - Retrofit
+ - Glide
+ - com.amitshekhar.android
+ - IntentHelper
+ - openUriExternal (can come from GeckoAppShell too)
+ - getHandlersForMimeType
+ - getHandlersForURL
+ - getHandlersForIntent
+ - android.content.Intent - too common; instead find launch methods:
+ - startActivity
+ - startActivities
+ - sendBroadcast
+ - sendOrderedBroadcast
+ - startService
+ - bindService
+ - android.app.PendingIntent
+ - android.app.DownloadManager
+ - ActivityHandlerHelper.startIntentAndCatch
+
+============ Regression/Prior Vuln Review =========
+
+Review proxy bypass bugs; check for new vectors to look for:
+ - https://trac.torproject.org/projects/tor/query?keywords=~tbb-proxy
+ - Look for new features like these. Especially external app launch vectors
+
1
0
[tor-browser/tor-browser-68.1.0esr-9.0-2] Update Torbutton to latest code
by gk@torproject.org 10 Oct '19
by gk@torproject.org 10 Oct '19
10 Oct '19
commit 3e10c70290f8a292f074ca767610ff52af695715
Author: Georg Koppen <gk(a)torproject.org>
Date: Thu Oct 10 20:56:19 2019 +0000
Update Torbutton to latest code
---
toolkit/torproject/torbutton | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/toolkit/torproject/torbutton b/toolkit/torproject/torbutton
index 3509fb9c4e9d..e54639aab0c6 160000
--- a/toolkit/torproject/torbutton
+++ b/toolkit/torproject/torbutton
@@ -1 +1 @@
-Subproject commit 3509fb9c4e9db216066a0d102f37d9e3d1434ef0
+Subproject commit e54639aab0c60274c14809cd9129b534bb79f92c
1
0
[tor-browser/tor-browser-68.1.0esr-9.0-2] Bug 31768: Introduce toolbar and network settings changes in onboarding
by gk@torproject.org 10 Oct '19
by gk@torproject.org 10 Oct '19
10 Oct '19
commit 6126f44deb98e91efb4fb6a13dd7eb4c2c46d8e1
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Wed Oct 9 16:54:54 2019 -0400
Bug 31768: Introduce toolbar and network settings changes in onboarding
Update the "Tor Network" onboarding page to include a note that
settings can now be accessed via the application preferences and
add an "Adjust Your Tor Network Settings" action button which opens
about:preferences#tor.
Replace the Tor Browser 8.5 "update" onboarding tour with a 9.0 one
that includes the revised "Tor Network" page and a revised "Toolbar"
page. The latter explains that Torbutton's toolbar item has been
removed ("Goodbye Onion Button") and explains how to access the
New Identity feature using the hamburger menu and new toolbar item.
---
browser/app/profile/000-tor-browser.js | 6 +-
browser/components/uitour/UITour.jsm | 7 +++
browser/extensions/onboarding/api.js | 5 +-
.../extensions/onboarding/content/Onboarding.jsm | 70 +++++++++++----------
.../onboarding/content/img/figure_tor-network.png | Bin 27931 -> 11982 bytes
.../content/img/figure_tor-toolbar-layout.png | Bin 10569 -> 13269 bytes
.../onboarding/content/onboarding-tour-agent.js | 6 ++
.../extensions/onboarding/content/onboarding.css | 4 ++
8 files changed, 60 insertions(+), 38 deletions(-)
diff --git a/browser/app/profile/000-tor-browser.js b/browser/app/profile/000-tor-browser.js
index 49f5b6a37000..c146a83e26fe 100644
--- a/browser/app/profile/000-tor-browser.js
+++ b/browser/app/profile/000-tor-browser.js
@@ -347,9 +347,9 @@ pref("browser.download.panel.shown", true);
pref("dom.securecontext.whitelist_onions", true);
// Onboarding.
-pref("browser.onboarding.tourset-version", 3);
-pref("browser.onboarding.newtour", "welcome,privacy,tor-network,circuit-display,security,expect-differences,onion-services");
-pref("browser.onboarding.updatetour", "toolbar-update-8.5,security-update-8.5");
+pref("browser.onboarding.tourset-version", 4);
+pref("browser.onboarding.newtour", "welcome,privacy,tor-network-9.0,circuit-display,security,expect-differences,onion-services");
+pref("browser.onboarding.updatetour", "toolbar-update-9.0,tor-network-9.0");
pref("browser.onboarding.skip-tour-button.hide", true);
// prefs to disable jump-list entries in the taskbar on Windows (see bug #12885)
diff --git a/browser/components/uitour/UITour.jsm b/browser/components/uitour/UITour.jsm
index 2a4c81d69374..3753e55a81a1 100644
--- a/browser/components/uitour/UITour.jsm
+++ b/browser/components/uitour/UITour.jsm
@@ -72,11 +72,15 @@ const TOR_BROWSER_PAGE_ACTIONS_ALLOWED = new Set([
"showInfo", // restricted to TOR_BROWSER_TARGETS_ALLOWED
"showMenu", // restricted to TOR_BROWSER_MENUS_ALLOWED
"hideMenu", // restricted to TOR_BROWSER_MENUS_ALLOWED
+ "showHighlight", // restricted to TOR_BROWSER_TARGETS_ALLOWED
+ "hideHighlight", // restricted to TOR_BROWSER_TARGETS_ALLOWED
+ "openPreferences",
"closeTab",
"torBrowserOpenSecurityLevelPanel",
]);
const TOR_BROWSER_TARGETS_ALLOWED = new Set([
+ "torBrowser-newIdentityButton",
"torBrowser-circuitDisplay",
"torBrowser-circuitDisplay-diagram",
"torBrowser-circuitDisplay-newCircuitButton",
@@ -136,6 +140,9 @@ var UITour = {
torBrowserCircuitDisplayTarget("circuit-display-nodes")],
["torBrowser-circuitDisplay-newCircuitButton",
torBrowserCircuitDisplayTarget("circuit-reload-button")],
+ ["torBrowser-newIdentityButton", {
+ query: "#new-identity-button",
+ }],
[
"accountStatus",
diff --git a/browser/extensions/onboarding/api.js b/browser/extensions/onboarding/api.js
index d11e525b9f8c..29b6f68a7914 100644
--- a/browser/extensions/onboarding/api.js
+++ b/browser/extensions/onboarding/api.js
@@ -39,13 +39,12 @@ const PREF_WHITELIST = [
// Tor Browser tours:
"onboarding-tour-tor-welcome",
"onboarding-tour-tor-privacy",
- "onboarding-tour-tor-network",
+ "onboarding-tour-tor-network-9-0",
"onboarding-tour-tor-circuit-display",
"onboarding-tour-tor-security",
"onboarding-tour-tor-expect-differences",
"onboarding-tour-tor-onion-services",
- "onboarding-tour-tor-toolbar-update-8-5",
- "onboarding-tour-tor-security-update-8-5",
+ "onboarding-tour-tor-toolbar-update-9-0",
#if 0
// Firefox tours. To reduce conflicts when rebasing against newer Firefox
// code, we use the preprocessor to omit this code block.
diff --git a/browser/extensions/onboarding/content/Onboarding.jsm b/browser/extensions/onboarding/content/Onboarding.jsm
index 6d4dbfa35b40..4d991acf869d 100644
--- a/browser/extensions/onboarding/content/Onboarding.jsm
+++ b/browser/extensions/onboarding/content/Onboarding.jsm
@@ -119,19 +119,41 @@ var onboardingTourset = {
return div;
},
},
- "tor-network": {
- id: "onboarding-tour-tor-network",
+ // In Tor Browser 9.0, we replaced the Tor Network panel with an updated one.
+ "tor-network-9.0": {
+ id: "onboarding-tour-tor-network-9-0",
tourNameId: "onboarding.tour-tor-network",
- instantComplete: true,
+ highlightId: "onboarding.tour-tor-update.prefix-new",
getPage(win) {
let div = win.document.createElement("div");
- createOnboardingTourDescription(div,
+ let desc = createOnboardingTourDescription(div,
"onboarding.tour-tor-network.title", "onboarding.tour-tor-network.description");
+ let additionalDesc = win.document.createElement("p");
+ additionalDesc.className = "onboarding-tour-description-para2";
+ additionalDesc.setAttribute("data-l10n-id",
+ "onboarding.tour-tor-network.description-para2");
+ desc.appendChild(additionalDesc);
+
createOnboardingTourContent(div, "resource://onboarding/img/figure_tor-network.png");
- createOnboardingTourButton(div,
- "onboarding-tour-tor-network-button", "onboarding.tour-tor-network.button");
+ let btnContainer = createOnboardingTourButton(div,
+ "onboarding-tour-tor-network-action-button", "onboarding.tour-tor-network.action-button");
+ btnContainer.className = "onboarding-tour-tor-action-button-container";
+ // The next button (right side) is a "Done" button if we are displaying
+ // the tour to users who updated their browser; otherwise, it is a
+ // button that takes the user to the next onboarding page.
+ let nextBtnID, nextBtnL10nID;
+ if (this._tourType === "update") {
+ // Using the onion services IDs here seems like a mistake, but it
+ // provides the functionality and translated string ("Done") we need.
+ nextBtnID = "onboarding-tour-tor-onion-services-next-button";
+ nextBtnL10nID = "onboarding.tour-tor-onion-services.next-button";
+ } else {
+ nextBtnID = "onboarding-tour-tor-network-button";
+ nextBtnL10nID = "onboarding.tour-tor-network.button";
+ }
+ createOnboardingTourButton(div, nextBtnID, nextBtnL10nID);
return div;
},
},
@@ -156,7 +178,6 @@ var onboardingTourset = {
"security": {
id: "onboarding-tour-tor-security",
tourNameId: "onboarding.tour-tor-security",
- highlightId: "onboarding.tour-tor-update.prefix-new",
getPage(win) {
let div = win.document.createElement("div");
@@ -215,42 +236,27 @@ var onboardingTourset = {
},
},
// Tour items for users who have updated their Tor Browser:
- "toolbar-update-8.5": {
- id: "onboarding-tour-tor-toolbar-update-8-5",
+ "toolbar-update-9.0": {
+ id: "onboarding-tour-tor-toolbar-update-9-0",
tourNameId: "onboarding.tour-tor-toolbar",
highlightId: "onboarding.tour-tor-update.prefix-updated",
- instantComplete: true,
getPage(win) {
let div = win.document.createElement("div");
let desc = createOnboardingTourDescription(div,
- "onboarding.tour-tor-toolbar-update-8.5.title", "onboarding.tour-tor-toolbar-update-8.5.description");
+ "onboarding.tour-tor-toolbar-update-9.0.title", "onboarding.tour-tor-toolbar-update-9.0.description");
+ let additionalDesc = win.document.createElement("p");
+ additionalDesc.className = "onboarding-tour-description-para2";
+ additionalDesc.setAttribute("data-l10n-id",
+ "onboarding.tour-tor-toolbar-update-9.0.description-para2");
+ desc.appendChild(additionalDesc);
createOnboardingTourContent(div, "resource://onboarding/img/figure_tor-toolbar-layout.png");
- createOnboardingTourButton(div,
- "onboarding-tour-tor-toolbar-next-button", "onboarding.tour-tor-toolbar-update-8.5.next-button");
-
- return div;
- },
- },
- "security-update-8.5": {
- id: "onboarding-tour-tor-security-update-8-5",
- tourNameId: "onboarding.tour-tor-security",
- highlightId: "onboarding.tour-tor-update.prefix-new",
- getPage(win) {
- let div = win.document.createElement("div");
-
- let desc = createOnboardingTourDescription(div,
- "onboarding.tour-tor-security-update-8.5.title", "onboarding.tour-tor-security-update-8.5.description");
-
- createOnboardingTourContent(div, "resource://onboarding/img/figure_tor-security-level.png");
let btnContainer = createOnboardingTourButton(div,
- "onboarding-tour-tor-security-button", "onboarding.tour-tor-security-level.button");
+ "onboarding-tour-tor-toolbar-update-9-0-button", "onboarding.tour-tor-toolbar-update-9.0.button");
btnContainer.className = "onboarding-tour-tor-action-button-container";
- // It is confusing to use the two onion-services IDs below, but they
- // provide the functionality and translated string ("Done") that we need.
createOnboardingTourButton(div,
- "onboarding-tour-tor-onion-services-next-button", "onboarding.tour-tor-onion-services.next-button");
+ "onboarding-tour-tor-toolbar-next-button", "onboarding.tour-tor-toolbar-update-9.0.next-button");
return div;
},
diff --git a/browser/extensions/onboarding/content/img/figure_tor-network.png b/browser/extensions/onboarding/content/img/figure_tor-network.png
index fe0fa9408daa..87829397ab2a 100644
Binary files a/browser/extensions/onboarding/content/img/figure_tor-network.png and b/browser/extensions/onboarding/content/img/figure_tor-network.png differ
diff --git a/browser/extensions/onboarding/content/img/figure_tor-toolbar-layout.png b/browser/extensions/onboarding/content/img/figure_tor-toolbar-layout.png
index 624ef6514d39..6d8651e58c17 100644
Binary files a/browser/extensions/onboarding/content/img/figure_tor-toolbar-layout.png and b/browser/extensions/onboarding/content/img/figure_tor-toolbar-layout.png differ
diff --git a/browser/extensions/onboarding/content/onboarding-tour-agent.js b/browser/extensions/onboarding/content/onboarding-tour-agent.js
index a08320d0535a..7cdb10063f28 100644
--- a/browser/extensions/onboarding/content/onboarding-tour-agent.js
+++ b/browser/extensions/onboarding/content/onboarding-tour-agent.js
@@ -21,6 +21,12 @@ let onClick = evt => {
case "onboarding-tour-tor-security-button":
Mozilla.UITour.torBrowserOpenSecurityLevelPanel();
break;
+ case "onboarding-tour-tor-toolbar-update-9-0-button":
+ Mozilla.UITour.showHighlight("torBrowser-newIdentityButton", "zoom");
+ break;
+ case "onboarding-tour-tor-network-action-button":
+ Mozilla.UITour.openPreferences("tor");
+ break;
#if 0
// Firefox onboarding actions. To reduce conflicts when rebasing against
// newer Firefox code, we use the preprocessor to omit this code block.
diff --git a/browser/extensions/onboarding/content/onboarding.css b/browser/extensions/onboarding/content/onboarding.css
index f71ec1d13789..eb214de5e254 100644
--- a/browser/extensions/onboarding/content/onboarding.css
+++ b/browser/extensions/onboarding/content/onboarding.css
@@ -377,6 +377,10 @@
color: #420c5d;
}
+.onboarding-tour-description-para2 {
+ margin-top: 16px;
+}
+
.onboarding-tour-description-suffix {
margin-top: 6px;
font-size: 13px;
1
0
[torbutton/master] Bug 31910: Replace meek_lite with meek in circuit display
by gk@torproject.org 10 Oct '19
by gk@torproject.org 10 Oct '19
10 Oct '19
commit e54639aab0c60274c14809cd9129b534bb79f92c
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Thu Oct 10 09:21:46 2019 -0400
Bug 31910: Replace meek_lite with meek in circuit display
---
chrome/content/tor-circuit-display.js | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/chrome/content/tor-circuit-display.js b/chrome/content/tor-circuit-display.js
index d21b0770..f75bd781 100644
--- a/chrome/content/tor-circuit-display.js
+++ b/chrome/content/tor-circuit-display.js
@@ -290,8 +290,13 @@ let updateCircuitDisplay = function () {
for (let i = 0; i < nodeData.length; ++i) {
let relayText;
if (nodeData[i].type === "bridge") {
- relayText = uiString("tor_bridge") +
- ((nodeData[i].bridgeType !== "vanilla") ? `: ${nodeData[i].bridgeType}` : "");
+ relayText = uiString("tor_bridge");
+ let bridgeType = nodeData[i].bridgeType;
+ if (bridgeType === "meek_lite") {
+ relayText += ": meek";
+ } else if (bridgeType !== "vanilla") {
+ relayText += ": " + bridgeType;
+ }
} else {
relayText = localizedCountryNameFromCode(nodeData[i].countryCode);
}
1
0
[tor-browser/tor-browser-68.1.0esr-9.0-2] fixup! TB4: Tor Browser's Firefox preference overrides.
by gk@torproject.org 10 Oct '19
by gk@torproject.org 10 Oct '19
10 Oct '19
commit 293608f16682a977f22527bd74a449cd04d0fcd3
Author: Georg Koppen <gk(a)torproject.org>
Date: Wed Oct 9 09:43:30 2019 +0000
fixup! TB4: Tor Browser's Firefox preference overrides.
---
browser/app/profile/000-tor-browser.js | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/browser/app/profile/000-tor-browser.js b/browser/app/profile/000-tor-browser.js
index 84e35f570181..49f5b6a37000 100644
--- a/browser/app/profile/000-tor-browser.js
+++ b/browser/app/profile/000-tor-browser.js
@@ -328,8 +328,10 @@ pref("security.family_safety.mode", 0);
// Enforce SHA1 deprecation, see: bug 18042.
pref("security.pki.sha1_enforcement_level", 2);
-// Disable the language pack signing check for now, see: bug 26465
+// Disable the language pack signing check for now on macOS, see #31942
+#ifdef XP_MACOSX
pref("extensions.langpacks.signatures.required", false);
+#endif
// Avoid report TLS errors to Mozilla. We might want to repurpose this feature
// one day to help detecting bad relays (which is bug 19119). For now we just
1
0
[tor-browser/tor-browser-68.1.0esr-9.0-2] Bug 29013: Enable stack protection for Firefox on Windows
by boklm@torproject.org 10 Oct '19
by boklm@torproject.org 10 Oct '19
10 Oct '19
commit 4b8a33af9610111d87dc5a901d06bcc20f1cc7b0
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Oct 1 07:46:13 2019 +0000
Bug 29013: Enable stack protection for Firefox on Windows
---
build/moz.configure/toolchain.configure | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/build/moz.configure/toolchain.configure b/build/moz.configure/toolchain.configure
index 68364075f006..3bcf403bceec 100755
--- a/build/moz.configure/toolchain.configure
+++ b/build/moz.configure/toolchain.configure
@@ -1676,12 +1676,10 @@ def security_hardening_cflags(hardening_flag, asan, optimize, c_compiler, target
# Enable only if hardening is not disabled and ASAN is
# not on as ASAN will catch the crashes for us
if compiler_is_gccish and not asan:
- # mingw-clang cross-compile toolchain has bugs with stack protector
- if target.os != 'WINNT' or c_compiler == 'gcc':
- flags.append("-fstack-protector-strong")
- ldflags.append("-fstack-protector-strong")
- js_flags.append("-fstack-protector-strong")
- js_ldflags.append("-fstack-protector-strong")
+ flags.append("-fstack-protector-strong")
+ ldflags.append("-fstack-protector-strong")
+ js_flags.append("-fstack-protector-strong")
+ js_ldflags.append("-fstack-protector-strong")
# ASLR ------------------------------------------------
# ASLR (dynamicbase) is enabled by default in clang-cl; but the
1
0
[tor-browser-build/master] Bug 29013: Enable stack protection support for Firefox on Windows
by boklm@torproject.org 10 Oct '19
by boklm@torproject.org 10 Oct '19
10 Oct '19
commit 562fe8f1df0de8912c9eaf7ff8c3b4d989d4aa01
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Oct 1 07:42:38 2019 +0000
Bug 29013: Enable stack protection support for Firefox on Windows
---
projects/firefox/build | 3 +++
projects/firefox/config | 3 +++
projects/mingw-w64/build | 4 +++-
3 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/projects/firefox/build b/projects/firefox/build
index ac63c84..7903bd3 100644
--- a/projects/firefox/build
+++ b/projects/firefox/build
@@ -15,6 +15,9 @@ mkdir -p [% dest_dir _ '/' _ c('filename') %]
mkdir -p $HOME
WINEROOT=$HOME/.wine/drive_c
wine wineboot -i
+ # Setting up stack protector support
+ tar -C /var/tmp/dist -xf [% c('input_files_by_name/mingw-w64') %]
+ cp /var/tmp/dist/mingw-w64/gcclibs/{libssp.a,libssp_nonshared.a} /var/tmp/dist/mingw-w64-clang/[% c("arch") %]-w64-mingw32/lib/
[% END -%]
tar -C /var/tmp/dist -xf [% c('input_files_by_name/rust') %]
diff --git a/projects/firefox/config b/projects/firefox/config
index 3391a5a..9da579a 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -159,6 +159,9 @@ input_files:
- project: fxc2
name: fxc2
enable: '[% c("var/windows") %]'
+ - name: mingw-w64
+ project: mingw-w64
+ enable: '[% c("var/windows") %]'
- filename: abicheck.cc
enable: '[% c("var/linux") %]'
- filename: start-firefox
diff --git a/projects/mingw-w64/build b/projects/mingw-w64/build
index 111205c..9e504ba 100644
--- a/projects/mingw-w64/build
+++ b/projects/mingw-w64/build
@@ -56,7 +56,9 @@ cd /var/tmp/build/gcc
make -j[% c("buildconf/num_procs") %]
make install
mkdir -p $distdir/gcclibs
-cp [% c("arch") %]-w64-mingw32/libssp/.libs/libssp-0.dll $distdir/gcclibs
+# We compile libssp both for being used dynamically (in tor) and statically (in
+# firefox).
+cp [% c("arch") %]-w64-mingw32/libssp/.libs/libssp* $distdir/gcclibs
cp [% c("arch") %]-w64-mingw32/libgcc/shlib/[% c("var/libgcc_dll") %] $distdir/gcclibs
cd /var/tmp/dist
1
0
[tor-browser-build/master] Merge remote-tracking branch 'gk/bug_29013_v5'
by boklm@torproject.org 10 Oct '19
by boklm@torproject.org 10 Oct '19
10 Oct '19
commit effde40cc5643080d45670d889a2fd81a6d39c67
Merge: 5d8507d 562fe8f
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Thu Oct 10 16:41:17 2019 +0200
Merge remote-tracking branch 'gk/bug_29013_v5'
projects/firefox/build | 3 +++
projects/firefox/config | 3 +++
projects/mingw-w64/build | 4 +++-
3 files changed, 9 insertions(+), 1 deletion(-)
1
0
10 Oct '19
commit 46cf3aab51f20f638f0225ad4692792eb3b25dd4
Author: Georg Koppen <gk(a)torproject.org>
Date: Thu Oct 10 14:15:42 2019 +0000
fixup! Bug 31747: Add onboarding.properties
Treat onboarding.properties specially
---
import-translations.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/import-translations.sh b/import-translations.sh
index 9d7ad452..4e5f29c1 100755
--- a/import-translations.sh
+++ b/import-translations.sh
@@ -42,7 +42,7 @@ do
fi
done
- if [ $IS_FILE_IN_MAP -eq 0 ];
+ if [ $IS_FILE_IN_MAP -eq 0 -a $DEST_FILE != "onboarding.properties" ];
then
echo "Please add $DEST_FILE to FILEMAP." 1>&2
FILES_ARE_MISSING=1
1
0
commit b9b4f14eda0f0661f2362bbc703078b0061a16da
Author: Georg Koppen <gk(a)torproject.org>
Date: Thu Oct 10 14:18:29 2019 +0000
Translation updates
---
chrome/locale/ar/browserOnboarding.properties | 13 +++++-----
chrome/locale/bn-BD/browserOnboarding.properties | 13 +++++-----
chrome/locale/ca/browserOnboarding.properties | 13 +++++-----
chrome/locale/cs/browserOnboarding.properties | 13 +++++-----
chrome/locale/da/browserOnboarding.properties | 13 +++++-----
chrome/locale/de/browserOnboarding.properties | 13 +++++-----
chrome/locale/el/browserOnboarding.properties | 13 +++++-----
chrome/locale/es-AR/browserOnboarding.properties | 13 +++++-----
chrome/locale/es-ES/browserOnboarding.properties | 13 +++++-----
chrome/locale/eu/browserOnboarding.properties | 13 +++++-----
chrome/locale/fa/browserOnboarding.properties | 13 +++++-----
chrome/locale/fr/browserOnboarding.properties | 13 +++++-----
chrome/locale/ga-IE/browserOnboarding.properties | 13 +++++-----
chrome/locale/he/browserOnboarding.properties | 13 +++++-----
chrome/locale/hu/browserOnboarding.properties | 13 +++++-----
chrome/locale/id/browserOnboarding.properties | 13 +++++-----
chrome/locale/is/browserOnboarding.properties | 13 +++++-----
chrome/locale/it/browserOnboarding.properties | 13 +++++-----
chrome/locale/ja/browserOnboarding.properties | 33 ++++++++++++------------
chrome/locale/ja/torbutton.dtd | 12 ++++-----
chrome/locale/ka/browserOnboarding.properties | 13 +++++-----
chrome/locale/ko/browserOnboarding.properties | 13 +++++-----
chrome/locale/mk/aboutTBUpdate.dtd | 2 +-
chrome/locale/mk/browserOnboarding.properties | 13 +++++-----
chrome/locale/mk/torbutton.properties | 2 +-
chrome/locale/nb-NO/browserOnboarding.properties | 13 +++++-----
chrome/locale/nl/aboutDialog.dtd | 2 +-
chrome/locale/nl/aboutTBUpdate.dtd | 4 +--
chrome/locale/nl/aboutTor.dtd | 12 ++++-----
chrome/locale/nl/brand.dtd | 12 ++++-----
chrome/locale/nl/brand.properties | 4 +--
chrome/locale/nl/browserOnboarding.properties | 13 +++++-----
chrome/locale/nl/torbutton.dtd | 14 +++++-----
chrome/locale/nl/torbutton.properties | 2 +-
chrome/locale/pl/browserOnboarding.properties | 13 +++++-----
chrome/locale/pt-BR/browserOnboarding.properties | 13 +++++-----
chrome/locale/ro/browserOnboarding.properties | 13 +++++-----
chrome/locale/ru/browserOnboarding.properties | 13 +++++-----
chrome/locale/sv-SE/browserOnboarding.properties | 13 +++++-----
chrome/locale/tr/brand.dtd | 2 +-
chrome/locale/tr/browserOnboarding.properties | 13 +++++-----
chrome/locale/vi/browserOnboarding.properties | 13 +++++-----
chrome/locale/zh-CN/browserOnboarding.properties | 13 +++++-----
chrome/locale/zh-TW/browserOnboarding.properties | 13 +++++-----
44 files changed, 275 insertions(+), 242 deletions(-)
diff --git a/chrome/locale/ar/browserOnboarding.properties b/chrome/locale/ar/browserOnboarding.properties
index 111de734..33aaf5d2 100644
--- a/chrome/locale/ar/browserOnboarding.properties
+++ b/chrome/locale/ar/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=اذهب الى شبكة تور
onboarding.tour-tor-network=شبكة تور
onboarding.tour-tor-network.title=اﻹنتقال لشبكه لا مركزيه
onboarding.tour-tor-network.description=متصفح تور (Tor Browser) يصلك بشبكه تور التي يتم تشغيلها بواسطة الاف المتطوعين حول العالم. على عكس الشبكات الوهميه الخاصه "VPN" لا يوجد نقطة قصور مركزيه او نقطة واحده يجب ان تثق بها للتمتع بخصوصيتك على اﻹنترنت.
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=الذهاب الى عرض الدائرة
onboarding.tour-tor-circuit-display=عرض الدائرة
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=جديد
onboarding.tour-tor-update.prefix-updated=تحديث
onboarding.tour-tor-toolbar=شريط الأدوات
-onboarding.tour-tor-toolbar-update-8.5.title=نسق شريط الأدوات
-onboarding.tour-tor-toolbar-update-8.5.description=قمنا بتحسين تصميم شريط أدوات المتصفح. نقلنا أيقونة زر Tor الى بعد مربع URL، وأضفنا أيقونة درجة الأمان إلى جانبها.
-onboarding.tour-tor-toolbar-update-8.5.next-button=الانتقال إلى الأمان
-
-onboarding.tour-tor-security-update-8.5.title=تجربة درجة الأمان
-onboarding.tour-tor-security-update-8.5.description=قمنا بتحسين كيف ترى وتضبط درجة الأمان. استبدلنا شريط تمرير الأمان بأيقونة على شريط الأدوات تجعل من درجة الأمان المفعلة حاليا ظاهرة على الدوام. إضغط عليها لرؤية تفاصيل حول درجة أمانك الحالية أو لتغيير إعدادات الأمان الخاصة بك.
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=اذهب الى شبكة تور
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=التالي
diff --git a/chrome/locale/bn-BD/browserOnboarding.properties b/chrome/locale/bn-BD/browserOnboarding.properties
index abbc040a..1b6aa316 100644
--- a/chrome/locale/bn-BD/browserOnboarding.properties
+++ b/chrome/locale/bn-BD/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=টর নেটওয়ার্কে য
onboarding.tour-tor-network=টর নেটওয়ার্ক
onboarding.tour-tor-network.title=একটি বিকেন্দ্রীকরণের নেটওয়ার্ক পরিভ্রমণ করে ।
onboarding.tour-tor-network.description=টর ব্রাউজার আপনাকে বিশ্বের হাজার হাজার স্বেচ্ছাসেবকদের দ্বারা পরিচালিত টর নেটওয়ার্কে সংযুক্ত করে। একটি ভিপিএন এর থেকে ভিন্ন, ইন্টারনেটের উপভোগ করার জন্য আপনার কোনও ব্যর্থতা বা কেন্দ্রীয় সত্তাকে বিশ্বাস করতে হবে।
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=সার্কিট ডিসপ্লে-তে যান
onboarding.tour-tor-circuit-display=সার্কিট ডিসপ্লে
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=New
onboarding.tour-tor-update.prefix-updated=Updated
onboarding.tour-tor-toolbar=Toolbar
-onboarding.tour-tor-toolbar-update-8.5.title=Toolbar layout
-onboarding.tour-tor-toolbar-update-8.5.description=We improved the browser toolbar layout. We moved the Torbutton icon after the URL bar, and we added a security level icon next to it.
-onboarding.tour-tor-toolbar-update-8.5.next-button=Go to Security
-
-onboarding.tour-tor-security-update-8.5.title=Security level experience
-onboarding.tour-tor-security-update-8.5.description=We improved how you see and set your security level. We replaced the security slider with a toolbar icon that makes your current level visible at all times. Click it to view details about your current level or to change your security settings.
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=টর নেটওয়ার্কে যান
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=পরবর্তী
diff --git a/chrome/locale/ca/browserOnboarding.properties b/chrome/locale/ca/browserOnboarding.properties
index ac01415b..247260b3 100644
--- a/chrome/locale/ca/browserOnboarding.properties
+++ b/chrome/locale/ca/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=Aneu a la xarxa Tor
onboarding.tour-tor-network=Xarxa Tor
onboarding.tour-tor-network.title=Viatja per una xarxa descentralitzada.
onboarding.tour-tor-network.description=El navegador Tor us connecta a la xarxa Tor gestionada per milers de voluntaris de tot el món. A diferència d'una VPN, no hi ha cap punt de fracàs o entitat centralitzada que necessiteu confiar per gaudir d'Internet en privat.
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=Vés a la pantalla de circuits
onboarding.tour-tor-circuit-display=Pantalla de circuits
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=Nou
onboarding.tour-tor-update.prefix-updated=Actualitzat
onboarding.tour-tor-toolbar=Barra d'eines
-onboarding.tour-tor-toolbar-update-8.5.title=Disposició de la barra d'eines
-onboarding.tour-tor-toolbar-update-8.5.description=Hem millorat la disposició de la barra d'eines del navegador. Hem mogut la icona de botó Tor després de la barra d'URL i hem afegit un icona de nivell de seguretat al seu costat.
-onboarding.tour-tor-toolbar-update-8.5.next-button=Vés a la seguretat
-
-onboarding.tour-tor-security-update-8.5.title=Experiència de nivell de seguretat
-onboarding.tour-tor-security-update-8.5.description=Hem millorat com veieu i definiu el nivell de seguretat. Hem substituït el lliscador de seguretat per una icona de la barra d'eines que fa visible el vostre nivell actual. Feu-hi clic per a mostrar els detalls sobre el nivell actual o per a canviar la configuració de seguretat.
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=Aneu a la Xarxa Tor
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=Següent
diff --git a/chrome/locale/cs/browserOnboarding.properties b/chrome/locale/cs/browserOnboarding.properties
index c8b4241a..8f6d6e86 100644
--- a/chrome/locale/cs/browserOnboarding.properties
+++ b/chrome/locale/cs/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=Přejít na síť Tor
onboarding.tour-tor-network=Síť Tor
onboarding.tour-tor-network.title=Používejte decentralizovanou síť.
onboarding.tour-tor-network.description=Prohlížeč Tor se k internetu připojuje skrze síť Tor sestavenou díky tisícům dobrovolníků po celém světě. Na rozdíl od VPN nemá síť Tor žádný centrální prvek, kterému musíte do rukou svěřit své soukromí.
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=Zobrazit okruhy
onboarding.tour-tor-circuit-display=Zobrazení okruhů
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=Nove
onboarding.tour-tor-update.prefix-updated=Aktualizováno
onboarding.tour-tor-toolbar=Panel nástrojů
-onboarding.tour-tor-toolbar-update-8.5.title=Rozvržení panelu nástrojů
-onboarding.tour-tor-toolbar-update-8.5.description=Vylepšili jsme rozvržení panelu nástrojů prohlížeče. Přesunuli jsme ikonu Torbutton za adresní řádek a přidali jsme ikonu úrovně zabezpečení vedle ní.
-onboarding.tour-tor-toolbar-update-8.5.next-button=Přejít na Zabezpečení
-
-onboarding.tour-tor-security-update-8.5.title=Prožitek z nastavení úrovně zabezpečení
-onboarding.tour-tor-security-update-8.5.description=Vylepšili jsme jak vidíte a jak nastavíte úroveň zabezpečení. Vyměnili jsme posuvník zabezpečení za ikonu na panelu nástrojů, aby současná úroveň byla vždy viditelná. Klikněte na ni pro podrobnosti o vaši současné úrovni nebo pro změnu vašeho současného nastavení.
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=Přejít na síť Tor
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=Další
diff --git a/chrome/locale/da/browserOnboarding.properties b/chrome/locale/da/browserOnboarding.properties
index 6c1e1f30..3993caf5 100644
--- a/chrome/locale/da/browserOnboarding.properties
+++ b/chrome/locale/da/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=Gå til Tor-netværk
onboarding.tour-tor-network=Tor-netværk
onboarding.tour-tor-network.title=Rejs på et decentraliseret netværk.
onboarding.tour-tor-network.description=Tor Browser opretter forbindelse for dig til Tor-netværket, som køres af tusindvis af frivillige verden over. I modsætning til en VPN, er der ikke ét punkt som kan få det til at fejle, eller centraliseret indgang som du skal have tillid til for at bruge internettet privat.
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Juster dine Tor-netværksindstillinger
onboarding.tour-tor-network.button=Gå til kredsløb-visning
onboarding.tour-tor-circuit-display=Kredsløb-visning
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=Ny
onboarding.tour-tor-update.prefix-updated=Opdateret
onboarding.tour-tor-toolbar=Værktøjslinje
-onboarding.tour-tor-toolbar-update-8.5.title=Værktøjslinjens layout
-onboarding.tour-tor-toolbar-update-8.5.description=Vi forbedrede layoutet af browserens værktøjslinje. Vi flyttede Torbutton-ikonet efter URL-linjen, og vi tilføjede et sikkerhedsniveauikon ved siden af det.
-onboarding.tour-tor-toolbar-update-8.5.next-button=Gå til sikkerhed
-
-onboarding.tour-tor-security-update-8.5.title=Oplevelse med sikkerhedsniveau
-onboarding.tour-tor-security-update-8.5.description=Vi forbedrede måden hvorpå du ser og indstiller dit sikkerhedsniveau. Vi erstattede sikkerhedsskyderen med et værktøjslinjeikon som gør at dit sikkerhedsniveau altid er synligt. Klik for at at vise detaljer om dit nuværende sikkerhedsniveau eller skift dine sikkerhedsindstillinger.
+onboarding.tour-tor-toolbar-update-9.0.title=Farvel Onion-knap.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=Forespørg en ny identitet
+onboarding.tour-tor-toolbar-update-9.0.next-button=Gå til Tor-netværk
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=Næste
diff --git a/chrome/locale/de/browserOnboarding.properties b/chrome/locale/de/browserOnboarding.properties
index 3cc32e55..b6750198 100644
--- a/chrome/locale/de/browserOnboarding.properties
+++ b/chrome/locale/de/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=Öffne Tor-Netzwerk
onboarding.tour-tor-network=Tor-Netzwerk
onboarding.tour-tor-network.title=Bereise ein dezentrales Netzwerk.
onboarding.tour-tor-network.description=Der Tor Browser verbindet sich mit dem Tor-Netzwerk, das von tausenden Freiwilligen betrieben wird. Anders als bei einem VPN gibt es keinen zentralen Punkt, dem vertraut werden muss, um das Internet privat zu nutzen.
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=Kanal-Ansicht öffnen
onboarding.tour-tor-circuit-display=Kanal-Ansicht
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=Neu
onboarding.tour-tor-update.prefix-updated=Aktualisiert
onboarding.tour-tor-toolbar=Symbolleiste
-onboarding.tour-tor-toolbar-update-8.5.title=Layout der Symbolleiste
-onboarding.tour-tor-toolbar-update-8.5.description=Wir haben das Layout der Browser-Symbolleiste verbessert. Wir haben das Torbutton-Symbol hinter die URL-Leiste verschoben und daneben ein Sicherheitsstufe-Symbol hinzugefügt.
-onboarding.tour-tor-toolbar-update-8.5.next-button=Gehe zu Sicherheit
-
-onboarding.tour-tor-security-update-8.5.title=Erfahrung auf Sicherheitsstufe
-onboarding.tour-tor-security-update-8.5.description=Wir haben verbessert, wie du deine Sicherheitsstufe siehst und einstellst. Wir haben den Sicherheitsschieberegler durch ein Symbol in der Symbolleiste ersetzt, das deine aktuelle Stufe jederzeit sichtbar macht. Klick darauf, um Details zu deiner aktuellen Stufe anzuzeigen oder deine Sicherheitseinstellungen zu ändern.
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=Öffne Tor-Netzwerk
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=Weiter
diff --git a/chrome/locale/el/browserOnboarding.properties b/chrome/locale/el/browserOnboarding.properties
index a60f2e6b..1f061edc 100644
--- a/chrome/locale/el/browserOnboarding.properties
+++ b/chrome/locale/el/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=Πάμε στο Δίκτυο Tor
onboarding.tour-tor-network=Δίκτυο Tor
onboarding.tour-tor-network.title=Ας ταξιδέψουμε σε ένα αποκεντρωμένο δίκτυο.
onboarding.tour-tor-network.description=Ο Tor Browser σας συνδέει στο δίκτυο Tor, που λειτουργεί χάρη σε χιλιάδες εθελοντές από όλο τον κόσμο. Σε αντίθεση με ένα VPN, δεν υπάρχει κανένα σημείο αποτυχίας ή κεντρική οντότητα που πρέπει να εμπιστευτείτε για να απολαύσετε το διαδίκτυο ιδιωτικά.
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=Πάμε στην προεπισκόπηση κυκλώματος
onboarding.tour-tor-circuit-display=Προεπισκόπηση κυκλώματος
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=Νέο
onboarding.tour-tor-update.prefix-updated=Αναβαθμίστηκε
onboarding.tour-tor-toolbar=Γραμμή εργαλείων
-onboarding.tour-tor-toolbar-update-8.5.title=Διαμόρφωση γραμμής εργαλείων
-onboarding.tour-tor-toolbar-update-8.5.description=Βελτιώσαμε τη διαμόρφωση της γραμμής εργαλείων. Μετακινήσαμε το εικονίδιο του Torbutton μετά τη μπάρα διευθύνσεων, και προσθέσαμε ενα εικονίδιο για το επίπεδο ασφαλείας δίπλα του.
-onboarding.tour-tor-toolbar-update-8.5.next-button=Πηγαίνετε στην Ασφάλεια
-
-onboarding.tour-tor-security-update-8.5.title=Εμπειρία επιπέδου ασφαλείας
-onboarding.tour-tor-security-update-8.5.description=Βελτιώσαμε το πως βλέπετε και ρυθμίζετε το επίπεδο ασφαλείας σας. Αντικαταστήσαμε τη μπάρα ασφαλείας με ένα εικονίδιο στη γραμμή εργαλείων, το οποίο δείχνει ανά πάσα στιγμή το τρέχων επίπεδο ασφαλείας. Πατήστε το για να δείτε λεπτομέρειες για το τρέχων επίπεδο ή για να αλλάξετε τις ρυθμίσεις ασφαλείας.
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=Πηγαίντε στο Δίκτυο Tor
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=Επόμενο
diff --git a/chrome/locale/es-AR/browserOnboarding.properties b/chrome/locale/es-AR/browserOnboarding.properties
index 85e9cd8e..cc8931f8 100644
--- a/chrome/locale/es-AR/browserOnboarding.properties
+++ b/chrome/locale/es-AR/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=Ir a la red de Tor
onboarding.tour-tor-network=Red de Tor
onboarding.tour-tor-network.title=Viajá por una red descentralizada.
onboarding.tour-tor-network.description=El Navegador Tor te conecta a la red Tor, formada por miles de voluntarios alrededor del mundo. A diferencia de una RPV, no hay un único punto de falla o entidad central en la cual necesités confiar de manera de disfrutar de internet privadamente.
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=Ir a visualización de Circuito
onboarding.tour-tor-circuit-display=Visualización de Circuito
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=Nuevo
onboarding.tour-tor-update.prefix-updated=Actualizado
onboarding.tour-tor-toolbar=Barra de herramientas
-onboarding.tour-tor-toolbar-update-8.5.title=Disposición de la barra de herramientas
-onboarding.tour-tor-toolbar-update-8.5.description=Mejoramos la disposición de la barra de herramientas del navegador. Movimos el icono Torbutton después de la barra URL, y añadimos un icono de nivel de seguridad a su lado.
-onboarding.tour-tor-toolbar-update-8.5.next-button=Ir a Seguridad
-
-onboarding.tour-tor-security-update-8.5.title=Experiencia de nivel de seguridad
-onboarding.tour-tor-security-update-8.5.description=Mejoramos la manera de cómo vés y ajustás tu nivel de seguridad. Reemplazamos la regla deslizante de seguridad con un icono de la barra de herramientas que hace que el nivel actual esté siempre visible. Cliqueá para ver detalles acerca de tu nivel actual o cambiar tus ajustes de seguridad.
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=Ir a la red Tor
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=Siguiente
diff --git a/chrome/locale/es-ES/browserOnboarding.properties b/chrome/locale/es-ES/browserOnboarding.properties
index 3dcbebd8..12bdca5d 100644
--- a/chrome/locale/es-ES/browserOnboarding.properties
+++ b/chrome/locale/es-ES/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=Ir a la red Tor
onboarding.tour-tor-network=Red Tor
onboarding.tour-tor-network.title=Viaja por la red descentralizada.
onboarding.tour-tor-network.description=Tor Browser te conecta con la Red Tor, mantenida por miles de voluntarios alrededor del mundo.\nA diferencia de una VPN, no hay un punto de falla o entidad centralizada en la que necesites confiar para disfrutar de Internet de forma privada.
+onboarding.tour-tor-network.description-para2=NUEVO: la configuración de red de Tor, incluyendo la capacidad de solicitar puentes donde Tor está bloqueado, ahora se puede encontrar en Preferencias.
+onboarding.tour-tor-network.action-button=Ajusta la configuración de red de Tor
onboarding.tour-tor-network.button=Ir a la visualización del circuito
onboarding.tour-tor-circuit-display=Visualización del circuito
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=Nuevo
onboarding.tour-tor-update.prefix-updated=Actualizado
onboarding.tour-tor-toolbar=Barra de herramientas
-onboarding.tour-tor-toolbar-update-8.5.title=Composición de la barra de herramientas
-onboarding.tour-tor-toolbar-update-8.5.description=Hemos mejorado el diseño de la barra de herramientas del navegador. Hemos movido el icono de Torbutton tras la barra de URL, y al lado, hemos agregado un icono de nivel de seguridad.
-onboarding.tour-tor-toolbar-update-8.5.next-button=Ir a Seguridad
-
-onboarding.tour-tor-security-update-8.5.title=Experiencia del nivel de seguridad
-onboarding.tour-tor-security-update-8.5.description=Hemos mejorado cómo ves y estableces tu nivel de seguridad. Hemos reemplazado el control deslizante de seguridad con un icono de barra de herramientas que hace visible en todo momento tu nivel actual de seguridad. Haz clic para ver los detalles de tu nivel actual o para cambiar la configuración de seguridad.
+onboarding.tour-tor-toolbar-update-9.0.title=Botón de Adios de Onion
+onboarding.tour-tor-toolbar-update-9.0.description=Queremos que tu experiencia con Tor sea completa con el navegador Tor.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=Es por eso que ahora, en lugar de usar el botón de cebolla, se puede ver el Circuito Tor a través de [i] en la barra de URL y solicitar una Nueva Identidad usando el botón de la barra de herramientas o el [=] menú.
+onboarding.tour-tor-toolbar-update-9.0.button=Cómo solicitar una nueva identidad
+onboarding.tour-tor-toolbar-update-9.0.next-button=Ir a la red Tor
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=Siguiente
diff --git a/chrome/locale/eu/browserOnboarding.properties b/chrome/locale/eu/browserOnboarding.properties
index 0e6f7467..35289c49 100644
--- a/chrome/locale/eu/browserOnboarding.properties
+++ b/chrome/locale/eu/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=Joan Tor sarera
onboarding.tour-tor-network=Tor sarea
onboarding.tour-tor-network.title=Bidaiatu sare deszentralizatu batean.
onboarding.tour-tor-network.description=Tor Browser connects you to the Tor network run by thousands of volunteers around the world. Unlike a VPN, there’s no one point of failure or centralized entity you need to trust in order to enjoy the internet privately.
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=Go to Circuit Display
onboarding.tour-tor-circuit-display=Zirkuitua Bistaratu
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=Berria
onboarding.tour-tor-update.prefix-updated=Eguneratua
onboarding.tour-tor-toolbar=Tresna-barra
-onboarding.tour-tor-toolbar-update-8.5.title=Tresna-barraren diseinua
-onboarding.tour-tor-toolbar-update-8.5.description=We improved the browser toolbar layout. We moved the Torbutton icon after the URL bar, and we added a security level icon next to it.
-onboarding.tour-tor-toolbar-update-8.5.next-button=Joan segurtasunera
-
-onboarding.tour-tor-security-update-8.5.title=Security level experience
-onboarding.tour-tor-security-update-8.5.description=We improved how you see and set your security level. We replaced the security slider with a toolbar icon that makes your current level visible at all times. Click it to view details about your current level or to change your security settings.
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=Joan Tor sarera
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=Hurrengoa
diff --git a/chrome/locale/fa/browserOnboarding.properties b/chrome/locale/fa/browserOnboarding.properties
index 7607ec10..8926015e 100644
--- a/chrome/locale/fa/browserOnboarding.properties
+++ b/chrome/locale/fa/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=برو به شبکه تور
onboarding.tour-tor-network=شبکه تور
onboarding.tour-tor-network.title=در یک شبکه توضیع شده سفر کنید.
onboarding.tour-tor-network.description=مرورگر تور شما را به شبکه تور متصل میکند که توسط هزاران داوطلب از گوشه گوشه ی جهان برپا شده است. برخلاف وی پی ان در اینجا هیچ نقطه آسیب پذیر مرکزی که باعث خرابی سیستم بشود یا نیاز باشد که به آن اعتماد کنید تا از وب به طور شخصی لذت ببرید وجود ندارد.
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=به نمایش جریان بروید
onboarding.tour-tor-circuit-display=نمایش جریان
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=جدید
onboarding.tour-tor-update.prefix-updated=بهروزرسانی شد
onboarding.tour-tor-toolbar=نوار ابزار
-onboarding.tour-tor-toolbar-update-8.5.title=طرح بندی نوار ابزار
-onboarding.tour-tor-toolbar-update-8.5.description=ما طرح نوار ابزار مرورگر را بهبود بخشیدیم. نماد دکمهتور را بعد از نوار آدرس اینترنتی منتقل کردیم و یک نماد سطح امنیت در کنار آن اضافه کردیم.
-onboarding.tour-tor-toolbar-update-8.5.next-button=برو به امنیت
-
-onboarding.tour-tor-security-update-8.5.title=تجربه سطح امنیت
-onboarding.tour-tor-security-update-8.5.description=ما بهبود یافتهایم و شما سطح امنیت خود را میتوانید تنظیم کنید. نوار لغزنده امنیت را با یک نماد نوار ابزار جایگزین کردیم که سطح فعلی شما را در همه زمانها قابل مشاهده است. برای مشاهده اطلاعات بیشتر در مورد سطح فعلی خود و یا تغییر تنظیمات امنیت خود، روی آن کلیک کنید.
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=برو به شبکه تور
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=بعدی
diff --git a/chrome/locale/fr/browserOnboarding.properties b/chrome/locale/fr/browserOnboarding.properties
index 00c0822d..01065625 100644
--- a/chrome/locale/fr/browserOnboarding.properties
+++ b/chrome/locale/fr/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=Poursuivre vers Réseau Tor
onboarding.tour-tor-network=Réseau Tor
onboarding.tour-tor-network.title=Naviguez sur un réseau décentralisé.
onboarding.tour-tor-network.description=Le Navigateur Tor vous connecte au réseau Tor exploité par des milliers de bénévoles dans le monde entier. Contrairement à un RPV, il n’y a pas de point de défaillance unique ou d’entité centralisée auxquels vous devez faire confiance pour profiter d’Internet en toute confidentialité.
+onboarding.tour-tor-network.description-para2=NOUVEAU : paramètres du réseau Tor, dont la possibilité de demander des ponts où Tor est bloqué, se trouvent maintenant dans Préférences.
+onboarding.tour-tor-network.action-button=Réglez vos paramètres du réseau Tor
onboarding.tour-tor-network.button=Poursuivre vers Affichage des circuits
onboarding.tour-tor-circuit-display=Affichage des circuits
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=Nouveau
onboarding.tour-tor-update.prefix-updated=Mis à jour
onboarding.tour-tor-toolbar=Barre d’outils
-onboarding.tour-tor-toolbar-update-8.5.title=Disposition de la barre d’outils
-onboarding.tour-tor-toolbar-update-8.5.description=Nous avons amélioré la disposition de la barre d’outils. Nous avons déplacé l’icône du BoutonTor après la barre d’URL et nous ajouté une icône de niveau de sécurité à côté d’elle.
-onboarding.tour-tor-toolbar-update-8.5.next-button=Aller vers Sécurité
-
-onboarding.tour-tor-security-update-8.5.title=Expérience du niveau de sécurité
-onboarding.tour-tor-security-update-8.5.description=Nous avons amélioré la manière dont vous voyez et définissez le niveau de sécurité. Nous avons remplacé le curseur de sécurité par une icône de la barre d’outils qui rend le niveau actuel visible en tout temps. Cliquez dessus pour visualiser votre niveau actuel et pour changer vos paramètres de sécurité.
+onboarding.tour-tor-toolbar-update-9.0.title=Au revoir le bouton oignon.
+onboarding.tour-tor-toolbar-update-9.0.description=Nous voulons que votre expérience d’utilisation de Tor soit entièrement intégrée au Navigateur Tor.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=Poursuivre vers Réseau Tor
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=Suivant
diff --git a/chrome/locale/ga-IE/browserOnboarding.properties b/chrome/locale/ga-IE/browserOnboarding.properties
index ddbe9de8..6ec36431 100644
--- a/chrome/locale/ga-IE/browserOnboarding.properties
+++ b/chrome/locale/ga-IE/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=Téigh go Líonra Tor
onboarding.tour-tor-network=Líonra Tor
onboarding.tour-tor-network.title=Taisteal ar líonra díláraithe.
onboarding.tour-tor-network.description=Ceanglaíonn Brabhsálaí Tor le líonra Tor thú, líonra faoi stiúir na mílte oibrí deonach timpeall an domhain. I gcodarsnacht le VPN, níl éalang aonair ann agus ní gá duit muinín a chur in eagraíocht láraithe chun taitneamh a bhaint as an Idirlíon go príobháideach.
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=Téigh go dtí Taispeántas an Chiorcaid
onboarding.tour-tor-circuit-display=Taispeántas an Chiorcaid
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=Nua
onboarding.tour-tor-update.prefix-updated=Nuashonraithe
onboarding.tour-tor-toolbar=Barra Uirlisí
-onboarding.tour-tor-toolbar-update-8.5.title=Leagan amach an bharra uirlisí
-onboarding.tour-tor-toolbar-update-8.5.description=Chuireamar feabhas ar leagan amach an bharra uirlisí. Chuireamar deilbhín an chnaipe Tor tar éis an bharra suímh, agus chuireamar deilbhín a léiríonn an leibhéal slándála in aice leis.
-onboarding.tour-tor-toolbar-update-8.5.next-button=Socruithe Slándála
-
-onboarding.tour-tor-security-update-8.5.title=Eispéireas leibhéil slándála
-onboarding.tour-tor-security-update-8.5.description=Chuireamar feabhas ar an gcaoi a n-athraíonn tú an leibhéal slándála. Chuireamar deilbhín nua sa mbarra uirlisí in áit an tsleamhnáin slándála sa chaoi go mbeidh an leibhéal slándála infheicthe i gcónaí. Cliceáil an deilbhín chun mionsonraí slándála a fháil, nó chun na socruithe slándála a athrú.
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=Téigh go Líonra Tor
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=Ar Aghaidh
diff --git a/chrome/locale/he/browserOnboarding.properties b/chrome/locale/he/browserOnboarding.properties
index f330f9c5..3da89d1a 100644
--- a/chrome/locale/he/browserOnboarding.properties
+++ b/chrome/locale/he/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=לך אל רשת Tor
onboarding.tour-tor-network=רשת Tor
onboarding.tour-tor-network.title=טייל ברשת מבוזרת.
onboarding.tour-tor-network.description=דפדפן Tor מחבר אותך אל רשת Tor המופעלת ע"י אלפי מתנדבים ברחבי העולם. בשונה מאשר VPN, אין נקודת כשל בודדת או כניסה ממורכזת שאתה צריך לסמוך עליה על מנת ליהנות מהאינטרנט באופן פרטי.
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=לך אל תצוגת מעגל
onboarding.tour-tor-circuit-display=תצוגת מעגל
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=חדש
onboarding.tour-tor-update.prefix-updated=מעודכן
onboarding.tour-tor-toolbar=סרגל כלים
-onboarding.tour-tor-toolbar-update-8.5.title=פריסת סרגל כלים
-onboarding.tour-tor-toolbar-update-8.5.description=שיפרנו את פריסת סרגל הכלים של הדפדפן. הזזנו את צלמית Torbutton אחרי שורת הכתובת, והוספנו צלמית רמת אבטחה לידה.
-onboarding.tour-tor-toolbar-update-8.5.next-button=לך אל אבטחה
-
-onboarding.tour-tor-security-update-8.5.title=חוויה של רמת אבטחה
-onboarding.tour-tor-security-update-8.5.description=שיפרנו את הדרך שבה אתה רואה ומגדיר את רמת האבטחה שלך. החלפנו את מחוון האבטחה בצלמית סרגל כלים שהופכת את הרמה הנוכחית שלך לגלויה כל הזמן. לחץ עליה כדי לראות פרטים אודות הרמה הנוכחית שלך או כדי לשנות את הגדרות האבטחה שלך.
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=לך אל רשת Tor
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=הבא
diff --git a/chrome/locale/hu/browserOnboarding.properties b/chrome/locale/hu/browserOnboarding.properties
index 4b3beb62..3eafe389 100644
--- a/chrome/locale/hu/browserOnboarding.properties
+++ b/chrome/locale/hu/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=Irány a Tor Hálózat
onboarding.tour-tor-network=Tor Hálózat
onboarding.tour-tor-network.title=Utazzon egy decentralizált hálózaton.
onboarding.tour-tor-network.description=A Tor Böngésző összeköti Önt és a Tor hálózatát önkéntesek ezreivel a világon. A VPN-nel ellentétben nincs egypontos hibalehetőség vagy központosított entitás amiben bíznia kell, ahhoz, hogy az internetet privát használja.
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=Ugrás az Áramkör megjelenítéshez
onboarding.tour-tor-circuit-display=Áramkör megjelenítő
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=Új
onboarding.tour-tor-update.prefix-updated=Frissített
onboarding.tour-tor-toolbar=Toolbar
-onboarding.tour-tor-toolbar-update-8.5.title=Toolbar layout
-onboarding.tour-tor-toolbar-update-8.5.description=We improved the browser toolbar layout. We moved the Torbutton icon after the URL bar, and we added a security level icon next to it.
-onboarding.tour-tor-toolbar-update-8.5.next-button=Go to Security
-
-onboarding.tour-tor-security-update-8.5.title=Security level experience
-onboarding.tour-tor-security-update-8.5.description=We improved how you see and set your security level. We replaced the security slider with a toolbar icon that makes your current level visible at all times. Click it to view details about your current level or to change your security settings.
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=Irány a Tor Hálózat
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=Következő
diff --git a/chrome/locale/id/browserOnboarding.properties b/chrome/locale/id/browserOnboarding.properties
index 585064f0..217ad01c 100644
--- a/chrome/locale/id/browserOnboarding.properties
+++ b/chrome/locale/id/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=Pergi ke Jaringan Tor
onboarding.tour-tor-network=Jaringan Tor
onboarding.tour-tor-network.title=Mengelilingi jaringan yang terdesentralisasi.
onboarding.tour-tor-network.description=Tor Browser menghubungkan Anda ke jaringan Tor yang dijalankan oleh ribuan relawan di seluruh dunia. Tidak seperti VPN, tidak ada satu titik kesalahan atau entitas sentral yang perlu anda percaya untuk menikmati internet secara privat.
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=Pergi ke Tampilan Sirkuit
onboarding.tour-tor-circuit-display=Tampilan Sirkuit
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=Baru
onboarding.tour-tor-update.prefix-updated=Telah terupdate
onboarding.tour-tor-toolbar=Toolbar
-onboarding.tour-tor-toolbar-update-8.5.title=Tata letak toolbar
-onboarding.tour-tor-toolbar-update-8.5.description=Kami meningkatkan tata letak toolbar peramban. Kami memindahkan ikon Torbutton setelah baris URL, dan kami menambahkan sebuah ikon level keamanan di sebelahnya.
-onboarding.tour-tor-toolbar-update-8.5.next-button=Pergi ke Keamanan
-
-onboarding.tour-tor-security-update-8.5.title=Pengalaman tingkat keamanan
-onboarding.tour-tor-security-update-8.5.description=Kami meningkatkan cara bagaimana Anda melihat dan mengatur level keamanan Anda. Kami mengganti slider keamanan dengan sebuah ikon toolbar yang membuat level Anda saat ini terlihat setiap saat. Klik untuk melihat detil tentang level Anda saat ini atau untuk mengganti pengaturan keamanan Anda.
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=Pergi ke Jaringan Tor
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=Selanjutnya
diff --git a/chrome/locale/is/browserOnboarding.properties b/chrome/locale/is/browserOnboarding.properties
index c9d16373..81980cb1 100644
--- a/chrome/locale/is/browserOnboarding.properties
+++ b/chrome/locale/is/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=Fara á Tor-netið
onboarding.tour-tor-network=Tor-netið
onboarding.tour-tor-network.title=Farðu um ómiðstýrt netkerfi.
onboarding.tour-tor-network.description=Tor-vafrinn tengir þig við Tor-netið sem rekið er af þúsundum sjálfboðaliða um víða veröld. Ólíkt VPN, þá er enginn einn punktur sem getur brugðist eða miðlægt fyrirbæri sem þú þarft að treysta til að geta notað netið án afskipta annarra.
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=Fara í birtingu rása
onboarding.tour-tor-circuit-display=Birting rása
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=Nýtt
onboarding.tour-tor-update.prefix-updated=Uppfært
onboarding.tour-tor-toolbar=Verkfærastika
-onboarding.tour-tor-toolbar-update-8.5.title=Framsetning verkfærastiku
-onboarding.tour-tor-toolbar-update-8.5.description=Við bættum framsetningu verkfærastiku vafrans. Við færðum tákn Tor-hnappsins aftur fyrir slóðastikuna og settum tákn fyrir öryggisstig við hliðina.
-onboarding.tour-tor-toolbar-update-8.5.next-button=Fara í Öryggi
-
-onboarding.tour-tor-security-update-8.5.title=Skynjun öryggisstigs
-onboarding.tour-tor-security-update-8.5.description=Við bættum hvernig þú sérð og stillir öryggisstig þitt. Við skiptum öryggisstillingasleðanum út fyrir táknmynd á verkfærastikunni sem gefur í sífellu til kynna öryggisstigið. Smelltu á þetta tákn til að sjá nánari upplýsingar um öryggisstigið eða til að breyta öryggisstillingum þínum.
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=Fara á Tor-netið
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=Næsta
diff --git a/chrome/locale/it/browserOnboarding.properties b/chrome/locale/it/browserOnboarding.properties
index 71570b4b..b24127ce 100644
--- a/chrome/locale/it/browserOnboarding.properties
+++ b/chrome/locale/it/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=Vai alla rete Tor
onboarding.tour-tor-network=Rete Tor
onboarding.tour-tor-network.title=Percorri una rete decentralizzata.
onboarding.tour-tor-network.description=Tor Browser ti connette alla rete Tor gestita da migliaia di volontari in tutto il mondo. Diversamente dalle VPN, non c'è nessun punto di fallimento o entità centralizzata di cui ti devi fidare per goderti internet privatamente.
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=Visualizza il circuito
onboarding.tour-tor-circuit-display=Visualizzazione circuito
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=Nuovo
onboarding.tour-tor-update.prefix-updated=Aggiornato
onboarding.tour-tor-toolbar=Barra degli strumenti
-onboarding.tour-tor-toolbar-update-8.5.title=Disposizione brarra degli strumenti
-onboarding.tour-tor-toolbar-update-8.5.description=Abbiamo migliorato il layout della barra degli strumenti del browser. Abbiamo spostato l'icona Torbutton dopo la barra degli URL e abbiamo aggiunto un'icona del livello di sicurezza accanto ad essa.
-onboarding.tour-tor-toolbar-update-8.5.next-button=Vai in Sicurezza
-
-onboarding.tour-tor-security-update-8.5.title=Esperienza livello di sicurezza
-onboarding.tour-tor-security-update-8.5.description=Abbiamo migliorato come visualizzi ed imposti il tuo livello di sicurezza. Abbiamo rimpiazzato la slider di sicurezza con un icona nella barra degli strumenti che rende visibile sempre il tuo livello di sicurezza. Cliccala per visualizzare i dettagli sul tuo attuale livello o per cambiare le tue impostazioni di sicurezza.
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=Vai alla rete Tor
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=Successivo
diff --git a/chrome/locale/ja/browserOnboarding.properties b/chrome/locale/ja/browserOnboarding.properties
index 2044835c..64f1baea 100644
--- a/chrome/locale/ja/browserOnboarding.properties
+++ b/chrome/locale/ja/browserOnboarding.properties
@@ -5,7 +5,7 @@
onboarding.tour-tor-welcome=ようこそ
onboarding.tour-tor-welcome.title=準備が整いました。
onboarding.tour-tor-welcome.description=Tor Browser は、ウェブブラウジング中に、最高水準のプライバシーとセキュリティを提供します。あなたは現在、トラッキング、監視、および検閲から保護されています。このクイックのオンボードは方法を提示します。
-onboarding.tour-tor-welcome.next-button=プライバシー設定へ
+onboarding.tour-tor-welcome.next-button=プライバシーへ
onboarding.tour-tor-privacy=プライバシー
onboarding.tour-tor-privacy.title=トラッカーとスヌーパーを追い払う。
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=Tor ネットワークへ
onboarding.tour-tor-network=Tor ネットワーク
onboarding.tour-tor-network.title=分散型ネットワークを旅する。
onboarding.tour-tor-network.description=Tor Browser は、世界中の何千人ものボランティアによって運営されている Tor ネットワークにあなたを接続します。 VPN とは異なり、インターネットをプライベートに楽しむために信頼する必要があるのは、1つの障害点や1つの存在ではありません。
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=サーキットディスプレイへ
onboarding.tour-tor-circuit-display=サーキットディスプレイ
@@ -34,32 +36,31 @@ onboarding.tour-tor-expect-differences=体験のヒント。
onboarding.tour-tor-expect-differences.title=いくつかの違いを理解する。
onboarding.tour-tor-expect-differences.description=Tor によって提供されるすべてのセキュリティとプライバシー機能を使用すると、インターネットをブラウジングした時の、あなたの体験は少し変化する場合があります。読み込みは少し遅くなるかもしれないし、あなたのセキュリティレベルによっては、いくつかの要素が動作しないか、読み込まれないかもしれません。また、あなたはロボットではなく、人間であることを証明するように求められることがあるかもしれません。
onboarding.tour-tor-expect-differences.button=よくある質問を見る
-onboarding.tour-tor-expect-differences.next-button=オニオンサービスへ
+onboarding.tour-tor-expect-differences.next-button=Onion サービスへ
onboarding.tour-tor-onion-services=Onion サービス
onboarding.tour-tor-onion-services.title=更なる保護。
-onboarding.tour-tor-onion-services.description=Onion サービスは、検閲に対する追加のセーフガードを含む、提供者と訪問者への余分な保護を提供する .onion で終わるサイトです。Onion サービスでは、誰でもコンテンツやサービスを匿名で提供できます。下のボタンから DuckDuckGo Onion サイトにアクセスしてみてください。
+onboarding.tour-tor-onion-services.description=Onion サービスは、検閲に対する追加のセーフガードを含む、公開者と訪問者への更なる保護を提供する .onion で終わるサイトです。Onion サービスでは、誰でもコンテンツやサービスを匿名で提供できます。下のボタンから DuckDuckGo Onion サイトにアクセスしてみてください。
onboarding.tour-tor-onion-services.button=Onion サイトを訪問
-onboarding.tour-tor-onion-services.next-button=完了しました
+onboarding.tour-tor-onion-services.next-button=完了
onboarding.overlay-icon-tooltip-updated2=最新情報\n%S に
-onboarding.tour-tor-update.prefix-new=新規
-onboarding.tour-tor-update.prefix-updated=更新しました
+onboarding.tour-tor-update.prefix-new=新機能
+onboarding.tour-tor-update.prefix-updated=更新
onboarding.tour-tor-toolbar=ツールバー
-onboarding.tour-tor-toolbar-update-8.5.title=ツールバーレイアウト
-onboarding.tour-tor-toolbar-update-8.5.description=ブラウザーツールバーレイアウトを改善しました。Torbuttonアイコンをアドレスバーの右に動いた、そしてその隣にセキュリティレベルアイコンも追加しました。
-onboarding.tour-tor-toolbar-update-8.5.next-button=セキュリティへ
-
-onboarding.tour-tor-security-update-8.5.title=セキュリティレベル体験
-onboarding.tour-tor-security-update-8.5.description=表示されるセキュリティレベル情報そして設定インターフェイスは改善されました。セキュリティスライダーを今のレベルを常に表示するツールバーアイコンに変更しました。クリックするとレベルについての詳細は表示され、あるいはセキュリティ設定を変更する。
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=Tor ネットワークへ
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=次へ
-onboarding.tor-circuit-display.done=完了しました
-onboarding.tor-circuit-display.one-of-three=3の1
-onboarding.tor-circuit-display.two-of-three=3の2
-onboarding.tor-circuit-display.three-of-three=3の3
+onboarding.tor-circuit-display.done=完了
+onboarding.tor-circuit-display.one-of-three=1/3
+onboarding.tor-circuit-display.two-of-three=2/3
+onboarding.tor-circuit-display.three-of-three=3/3
onboarding.tor-circuit-display.intro.title=サーキットはどのように機能しますか?
onboarding.tor-circuit-display.intro.msg=サーキットは無作為に割り付けられるリレー、Torトラフィックを送信するように設定される世界中のPC、で構成されます。サーキットはプライベートにネットを閲覧できる、そしてオニオンサービスと接続できるようにします。
diff --git a/chrome/locale/ja/torbutton.dtd b/chrome/locale/ja/torbutton.dtd
index 1894af5d..0cf2f19e 100644
--- a/chrome/locale/ja/torbutton.dtd
+++ b/chrome/locale/ja/torbutton.dtd
@@ -1,10 +1,10 @@
<!ENTITY torbutton.context_menu.new_identity "新しい識別子">
<!ENTITY torbutton.context_menu.new_identity_key "I">
-<!ENTITY torbutton.context_menu.new_circuit "このサイト用の新しい Tor サーキット">
+<!ENTITY torbutton.context_menu.new_circuit "このサイトに新しい サーキットを使う">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
<!ENTITY torbutton.context_menu.networksettings "Tor ネットワークの設定…">
<!ENTITY torbutton.context_menu.networksettings.key "N">
-<!ENTITY torbutton.context_menu.downloadUpdate "Tor Browser のアップデートを確認">
+<!ENTITY torbutton.context_menu.downloadUpdate "Tor Browser の更新を確認...">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
<!ENTITY torbutton.context_menu.cookieProtections "Cookie の防御">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
@@ -32,11 +32,11 @@
<!ENTITY torbutton.prefs.sec_safest_description "静的なサイトと基本的なサービスに必要な機能だけを許可します。この変更は画像、メディア、スクリプトに影響します。">
<!ENTITY torbutton.prefs.sec_safest_list_label "「最も安全」設定では:">
<!ENTITY torbutton.prefs.sec_learn_more_label "詳細情報">
-<!ENTITY torbutton.prefs.sec_js_on_https_sites_only "HTTPS非対応のサイトで JavaScript が無効化されます。">
+<!ENTITY torbutton.prefs.sec_js_on_https_sites_only "HTTPS 非対応のサイトで JavaScript が無効化されます。">
<!ENTITY torbutton.prefs.sec_js_disabled "すべてのサイトで JavaScript が無効化されます。">
<!ENTITY torbutton.prefs.sec_limit_typography "いくつかのフォントと数学記号が無効化されます。">
-<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "いくつかのアイコン、数学記号および画像が無効化されます。">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "オーディオ、ビデオ(HTML5メディア)、WebGLはクリックすると再生されます。">
+<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "いくつかのフォント、アイコン、数学記号および画像が無効化されます。">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "オーディオ、ビデオ (HTML5 メディア)、WebGL はクリックすると再生されます。">
<!ENTITY torbutton.prefs.sec_custom_warning "カスタム">
<!ENTITY torbutton.prefs.sec_overview "セキュリティと匿名性を攻撃するために利用される可能性のあるウェブ機能を無効化します。">
<!ENTITY torbutton.prefs.sec_standard_tooltip "セキュリティレベル:標準">
@@ -46,4 +46,4 @@
<!ENTITY torbutton.prefs.sec_restore_defaults "デフォルトにもどす">
<!ENTITY torbutton.prefs.sec_advanced_security_settings "詳細セキュリティ設定…">
<!ENTITY torbutton.circuit_display.title "Tor サーキット">
-<!ENTITY torbutton.circuit_display.new_circuit "このサイトに新しいサーキットを使用する">
+<!ENTITY torbutton.circuit_display.new_circuit "このサイトに新しいサーキットを使う">
diff --git a/chrome/locale/ka/browserOnboarding.properties b/chrome/locale/ka/browserOnboarding.properties
index b976c763..11c88645 100644
--- a/chrome/locale/ka/browserOnboarding.properties
+++ b/chrome/locale/ka/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=იხილეთ Tor-ქსელი
onboarding.tour-tor-network=Tor-ქსელი
onboarding.tour-tor-network.title=ისარგებლეთ დამოუკიდებელი, ერთპიროვნული მმართველობისგან დაცული ქსელით.
onboarding.tour-tor-network.description=Tor-ბრაუზერით უკავშირდებით Tor-ქსელს, რომლის მუშაობასაც უზრუნველყოფს ათასობით მოხალისე, მთელი მსოფლიოს მასშტაბით. განსხვავებით VPN-ისგან, ამ შემთხვევაში არ გიწევთ ცალკეული პირის ან ერთეულის ნდობა და არავისზე ხართ დამოკიდებული, ინტერნეტით ვინაობის გაუმჟღავნებლად სარგებლობისას.
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=იხილეთ წრედის არე
onboarding.tour-tor-circuit-display=წრედის არე
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=ახალი
onboarding.tour-tor-update.prefix-updated=განახლებული
onboarding.tour-tor-toolbar=ხელსაწყოთა ზოლი
-onboarding.tour-tor-toolbar-update-8.5.title=ხელსაწყოთა ზოლის განლაგება
-onboarding.tour-tor-toolbar-update-8.5.description=განახლდა ბრაუზერის ხელსაწყოთა ზოლის განლაგება. Torbutton-ის ნიშანი მისამართების ველის ბოლოში გადავიდა, მის გვერდით კი დაემატა უსაფრთხოების დონის აღმნიშვნელი ხატულა.
-onboarding.tour-tor-toolbar-update-8.5.next-button=იხილეთ უსაფრთხოება
-
-onboarding.tour-tor-security-update-8.5.title=უსაფრთხოების დონის მარტივად შეცვლა
-onboarding.tour-tor-security-update-8.5.description=უსაფრთხოების დონის გაუმჯობესებული მართვა და ხილვადობა. უსაფრთხოების რბია ჩანაცვლებულია ხელსაწყოთა ზოლზე განთავსებული ხატულათი, რომელიც მუდამ თვალთახედვის არეშია. მასზე დაწკაპებით დაწვრილებით იხილავთ მიმდინარე დონეს და შეძლებთ უსაფრთხოების პარამეტრების შეცვლას.
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=იხილეთ Tor-ქსელი
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=შემდეგი
diff --git a/chrome/locale/ko/browserOnboarding.properties b/chrome/locale/ko/browserOnboarding.properties
index bee7f569..732ea8ab 100644
--- a/chrome/locale/ko/browserOnboarding.properties
+++ b/chrome/locale/ko/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=Tor 네트워크 항목으로 가봅니다.
onboarding.tour-tor-network=Tor 네트워크
onboarding.tour-tor-network.title=탈중앙화된 분산 네트워크로 이동합니다.
onboarding.tour-tor-network.description=Tor 브라우저는 전세계 수천명의 자원 봉사자에 의해 운영되는 Tor 네트워크와 당신을 연결합니다. VPN과 다르게, 인터넷을 개인적으로 즐기는 당신이 신뢰해야하는 단일된 장애 지점과 중앙화된 요소는 없습니다.
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=경로표시 항목으로 가봅니다.
onboarding.tour-tor-circuit-display=경로표시
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=새로 이음
onboarding.tour-tor-update.prefix-updated=업데이트됨
onboarding.tour-tor-toolbar=툴바
-onboarding.tour-tor-toolbar-update-8.5.title=툴바 레이아웃
-onboarding.tour-tor-toolbar-update-8.5.description=브라우저 툴바의 레이아웃을 개선했습니다. Torbutton 아이콘을 URL 바 다음으로 이동하고, 그 옆에 보안 수준 아이콘을 추가했습니다.
-onboarding.tour-tor-toolbar-update-8.5.next-button=보안 항목으로 가봅니다.
-
-onboarding.tour-tor-security-update-8.5.title=보안수준 경험
-onboarding.tour-tor-security-update-8.5.description=보안 수준의 표시 방법과 설정 방법을 개선하였습니다. 보안 슬라이더를 현재의 수준이 항상 보이도록 툴바 아이콘으로 대체하였습니다. 현재 보안 수준에 대한 자세한 내용을 표시하거나 보안 설정을 변경하려면 여기를 클릭하십시오.
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=Tor 네트워크 항목으로 가봅니다.
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=다음
diff --git a/chrome/locale/mk/aboutTBUpdate.dtd b/chrome/locale/mk/aboutTBUpdate.dtd
index eb627510..9d8c386a 100644
--- a/chrome/locale/mk/aboutTBUpdate.dtd
+++ b/chrome/locale/mk/aboutTBUpdate.dtd
@@ -1,7 +1,7 @@
<!ENTITY aboutTBUpdate.changelogTitle "Tor Browser Листа на промени">
<!ENTITY aboutTBUpdate.updated "Tor Browser е ажуриран.">
<!ENTITY aboutTBUpdate.linkPrefix "За најнови информации за оваа верзија,">
-<!ENTITY aboutTBUpdate.linkLabel "посетете ја нашата веб страна">
+<!ENTITY aboutTBUpdate.linkLabel " посетете ја нашата веб страна">
<!ENTITY aboutTBUpdate.linkSuffix ".">
<!ENTITY aboutTBUpdate.version "Верзија">
<!ENTITY aboutTBUpdate.releaseDate "Датум на издавање">
diff --git a/chrome/locale/mk/browserOnboarding.properties b/chrome/locale/mk/browserOnboarding.properties
index 2f39b88a..c0247407 100644
--- a/chrome/locale/mk/browserOnboarding.properties
+++ b/chrome/locale/mk/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=Оди на Tor Мрежа
onboarding.tour-tor-network=Tor Мрежа
onboarding.tour-tor-network.title=Патувајте низ децентрализираната мрежа.
onboarding.tour-tor-network.description=Tor Browser ве поврзува на Tor мрежата одржувана од илјадници волонтери низ целиот свет. За разлика од VPN, овде нема место за неуспех или централизиран ентитет на кого треба да му верувате со цел да уживате приватност на Интернет.
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=Оди на Круг екранот
onboarding.tour-tor-circuit-display=Круг екран
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=Ново
onboarding.tour-tor-update.prefix-updated=Ажурирано
onboarding.tour-tor-toolbar=Лента со алатки
-onboarding.tour-tor-toolbar-update-8.5.title=Распоред на лентата со алатки
-onboarding.tour-tor-toolbar-update-8.5.description=Го подобривме распоредот на лентата со алатки на прелистувачот. Ја поместивме иконата Torbutton после URL барот, и додадовме икона за безбеносно ниво до неа.
-onboarding.tour-tor-toolbar-update-8.5.next-button=Оди во Безбедност
-
-onboarding.tour-tor-security-update-8.5.title=Искуство од безбедносно ниво
-onboarding.tour-tor-security-update-8.5.description=Го подобривме начинот на кој го гледате и поставувате вашето ниво на безбедност. Го заменивме лизгачот за безбедност со икона за лента со алатки која го прави моменталното ниво видливо цело време. Кликнете ја за да видете детали за вашето моментално ниво или да ги промените вашите поставки за безбедност.
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=Оди на Tor Мрежа
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=Следно
diff --git a/chrome/locale/mk/torbutton.properties b/chrome/locale/mk/torbutton.properties
index db22bd11..58ea73ec 100644
--- a/chrome/locale/mk/torbutton.properties
+++ b/chrome/locale/mk/torbutton.properties
@@ -29,7 +29,7 @@ torbutton.popup.short_torbrowser = Важна Torbutton информација!\
torbutton.popup.confirm_plugins = Приклучоците како Flash можат да ја повредат вашата приватност и анонимност.\n\nТие можат исто така да го заобиколат Tor и да ја откријат важата локација и IP адресата.\n\nДали сте сигурни дека сакате да ги овозможите приклучоците?\n\n
torbutton.popup.never_ask_again = Не ме прашувај никогаш повеќе
-torbutton.popup.confirm_newnym = Tor Browser ќе ги затвори сите прозорци и табови. Сите веб сесии ќе бидат изгубени.\n\nРестартирајте го Tor Browser сега да го промените вашиот идентитет.\n\n
+torbutton.popup.confirm_newnym = Tor Browser ќе ги затвори сите прозорци и табови. Сите веб сесии ќе бидат изгубени.\n\nРестартирајте го Tor Browser сега за да го промените вашиот идентитет.\n\n
torbutton.maximize_warning = Максимизирањето на Tor Browser дозволува на веб страните да ја утврдат големината на вашиот монитор, што пак може да се користи за ваше следење. Ви препорачуваме да ги оставите прозорците на Tor Browser во нивната оригинална големина.
diff --git a/chrome/locale/nb-NO/browserOnboarding.properties b/chrome/locale/nb-NO/browserOnboarding.properties
index 8ae65912..89bfd8e9 100644
--- a/chrome/locale/nb-NO/browserOnboarding.properties
+++ b/chrome/locale/nb-NO/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=Gå til Tor Nettverk
onboarding.tour-tor-network=Tor Nettverk
onboarding.tour-tor-network.title=Reis et decentralisert nettverk.
onboarding.tour-tor-network.description=Tor Nettleser forbinder deg med Tor-nettet som drives av tusenvis av frivillige rundt om i verden. I motsetning til en VPN er det ingen feilpunkt eller sentralisert enhet du må stole på for å kunne nyte Internettet privat.
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=Gå til Kretsvisning
onboarding.tour-tor-circuit-display=Kretsvisning
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=Ny
onboarding.tour-tor-update.prefix-updated=Oppdatert
onboarding.tour-tor-toolbar=Verktøylinje
-onboarding.tour-tor-toolbar-update-8.5.title=Verktøylinjeoppsett
-onboarding.tour-tor-toolbar-update-8.5.description=Vi forbedret nettleserverktøylinjeoppsettet. Vi flyttet Tor-knappikonet etter URL-linjen, og vi la til et sikkerhetsnivåikon ved siden av.
-onboarding.tour-tor-toolbar-update-8.5.next-button=Gå til Sikkerhet
-
-onboarding.tour-tor-security-update-8.5.title=Sikkerhetsnivåopplevelse
-onboarding.tour-tor-security-update-8.5.description=Vi forbedret måten du ser og velger sikkerhetsnivået ditt. Vi erstattet sikkerhetsglidebryteren med et verktøylinjeikon som gjør ditt nåværende nivå synlig til enhver tid. Klikk på det for å vise detaljer om ditt nåværende nivå eller for å endre sikkerhetsinstillingene.
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=Gå til Tor Nettverk
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=Neste
diff --git a/chrome/locale/nl/aboutDialog.dtd b/chrome/locale/nl/aboutDialog.dtd
index 366b208b..ef3a712a 100644
--- a/chrome/locale/nl/aboutDialog.dtd
+++ b/chrome/locale/nl/aboutDialog.dtd
@@ -16,4 +16,4 @@
<!ENTITY bottomLinks.grow "Help het Tor-netwerk te groeien!">
<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to about:license -->
<!ENTITY bottomLinks.license "Licentie-informatie">
-<!ENTITY tor.TrademarkStatement "‘Tor’ en het ‘Onion-logo’ zijn geregistreerde handelsmerken van het Tor Project, Inc.">
+<!ENTITY tor.TrademarkStatement "‘Tor’ en het ‘Onion-logo’ zijn geregistreerde handelsmerken van Tor Project, Inc.">
diff --git a/chrome/locale/nl/aboutTBUpdate.dtd b/chrome/locale/nl/aboutTBUpdate.dtd
index 6d078b5d..55c4de7a 100644
--- a/chrome/locale/nl/aboutTBUpdate.dtd
+++ b/chrome/locale/nl/aboutTBUpdate.dtd
@@ -1,8 +1,8 @@
-<!ENTITY aboutTBUpdate.changelogTitle "Tor Browser-wijzigingslog">
+<!ENTITY aboutTBUpdate.changelogTitle "Tor Browser-changelog">
<!ENTITY aboutTBUpdate.updated "Tor Browser is bijgewerkt.">
<!ENTITY aboutTBUpdate.linkPrefix "Bezoek ">
<!ENTITY aboutTBUpdate.linkLabel "onze website">
<!ENTITY aboutTBUpdate.linkSuffix " voor de meest actuele informatie over deze release.">
<!ENTITY aboutTBUpdate.version "Versie">
-<!ENTITY aboutTBUpdate.releaseDate "Uitgavedatum">
+<!ENTITY aboutTBUpdate.releaseDate "Datum van uitgave">
<!ENTITY aboutTBUpdate.releaseNotes "Uitgaveopmerkingen">
diff --git a/chrome/locale/nl/aboutTor.dtd b/chrome/locale/nl/aboutTor.dtd
index 68f4c848..3cde0116 100644
--- a/chrome/locale/nl/aboutTor.dtd
+++ b/chrome/locale/nl/aboutTor.dtd
@@ -17,16 +17,16 @@
<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/">
<!ENTITY aboutTor.torbrowser_user_manual_questions.label "Vragen?">
-<!ENTITY aboutTor.torbrowser_user_manual_link.label "Bekijk onze Tor Browser-handleiding »">
+<!ENTITY aboutTor.torbrowser_user_manual_link.label "Bekijk onze Tor-browserhandleiding »">
<!-- The next two entities are used within the browser's Help menu. -->
<!ENTITY aboutTor.torbrowser_user_manual.accesskey "H">
-<!ENTITY aboutTor.torbrowser_user_manual.label "Tor Browser-handleiding">
+<!ENTITY aboutTor.torbrowser_user_manual.label "Tor-browserhandleiding">
-<!ENTITY aboutTor.tor_mission.label "Het Tor Project is een 501(c)(3)-organisatie zonder winstoogmerk gevestigd in de VS die rechten en vrijheden van de mens bevordert door vrije en open-broncode anonimiteits- en privacytechnologieën te ontwikkelen en te implementeren, de onbeperkte beschikbaarheid en het gebruik ervan te steunen, en het begrip ervoor in de wetenschap en bij het algemeen publiek te bevorderen.">
-<!ENTITY aboutTor.getInvolved.label "Meedoen »">
+<!ENTITY aboutTor.tor_mission.label "Het Tor Project is een 501(c)(3)-non-profitorganisatie in de VS die rechten en vrijheden van de mens bevordert door vrije en open source anonimiteits- en privacytechnologieën te ontwikkelen en te implementeren, de onbeperkte beschikbaarheid en het gebruik ervan te steunen, en het begrip ervan in de wetenschap en bij het algemeen publiek te bevorderen.">
+<!ENTITY aboutTor.getInvolved.label "Doe mee »">
<!ENTITY aboutTor.getInvolved.link "https://www.torproject.org/getinvolved/volunteer.html.en">
<!ENTITY aboutTor.newsletter.tagline "Ontvang het laatste nieuws van Tor direct in uw postvak.">
-<!ENTITY aboutTor.newsletter.link_text "Meld u aan voor Tor News.">
+<!ENTITY aboutTor.newsletter.link_text "Meld u aan voor de Tor-nieuwsbrief.">
<!ENTITY aboutTor.donationBanner.line2e "Houd Tor sterk.">
-<!ENTITY aboutTor.donationBanner.buttonA "Nu doneren">
+<!ENTITY aboutTor.donationBanner.buttonA "Doneer nu">
diff --git a/chrome/locale/nl/brand.dtd b/chrome/locale/nl/brand.dtd
index ec04e8c6..73e63522 100644
--- a/chrome/locale/nl/brand.dtd
+++ b/chrome/locale/nl/brand.dtd
@@ -2,14 +2,14 @@
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<!ENTITY brandShorterName "Tor Browser">
-<!ENTITY brandShortName "Tor Browser">
-<!ENTITY brandFullName "Tor Browser">
-<!ENTITY vendorShortName "Tor Project">
-<!ENTITY trademarkInfo.part1 "‘Tor’ en het ‘Onion-logo’ zijn geregistreerde handelsmerken van het Tor Project, Inc.">
+<!ENTITY brandShorterName "Tor-browser">
+<!ENTITY brandShortName "Tor-browser">
+<!ENTITY brandFullName "Tor-browser">
+<!ENTITY vendorShortName "Tor-project">
+<!ENTITY trademarkInfo.part1 "‘Tor’ en het ‘Onion-logo’ zijn geregistreerde handelsmerken van Tor Project, Inc.">
<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
-<!ENTITY plugins.installed.find "Klik om geïnstalleerde systeemplug-ins te laden">
+<!ENTITY plugins.installed.find "Klik om de geïnstalleerde systeemplug-ins te laden">
<!ENTITY plugins.installed.enable "Plug-ins inschakelen">
<!ENTITY plugins.installed.disable "Plug-ins uitschakelen">
<!ENTITY plugins.installed.disable.tip "Klik om het laden van systeemplug-ins te voorkomen">
diff --git a/chrome/locale/nl/brand.properties b/chrome/locale/nl/brand.properties
index ac15d1c3..b2584493 100644
--- a/chrome/locale/nl/brand.properties
+++ b/chrome/locale/nl/brand.properties
@@ -8,9 +8,9 @@ brandFullName=Tor-browser
vendorShortName=Tor-project
homePageSingleStartMain=Firefox Start, een snelle startpagina met ingebouwde zoekfunctie
-homePageImport=Importeer je startpagina uit %S
+homePageImport=Importeer uw startpagina uit %S
homePageMigrationPageTitle=Startpaginakeuze
-homePageMigrationDescription=Selecteer de startpagina die u wilt gebruiken:
+homePageMigrationDescription=Kies de startpagina die u wilt gebruiken:
syncBrandShortName=Synchronisatie
diff --git a/chrome/locale/nl/browserOnboarding.properties b/chrome/locale/nl/browserOnboarding.properties
index f524f6a5..84ab0176 100644
--- a/chrome/locale/nl/browserOnboarding.properties
+++ b/chrome/locale/nl/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=Naar Tor-netwerk
onboarding.tour-tor-network=Tor-netwerk
onboarding.tour-tor-network.title=Reis over een gedecentraliseerd netwerk.
onboarding.tour-tor-network.description=Tor Browser verbindt u met het Tor-netwerk, mogelijk gemaakt door duizenden vrijwilligers over de hele wereld. Anders dan bij een VPN is er geen sprake van één zwakke plek of centrale autoriteit die u moet vertrouwen om privé van het internet gebruik te maken.
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=Naar Circuit-venster
onboarding.tour-tor-circuit-display=Circuit-venster
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=Nieuw
onboarding.tour-tor-update.prefix-updated=Bijgewerkt
onboarding.tour-tor-toolbar=Werkbalk
-onboarding.tour-tor-toolbar-update-8.5.title=Werkbalkindeling
-onboarding.tour-tor-toolbar-update-8.5.description=We hebben de indeling van de browserwerkbalk verbeterd. Het Torbutton-pictogram is nu achter de URL-balk geplaatst, en daarnaast is een pictogram voor het beveiligingsniveau toegevoegd.
-onboarding.tour-tor-toolbar-update-8.5.next-button=Naar Beveiliging
-
-onboarding.tour-tor-security-update-8.5.title=Beveiligingsniveau-ervaring
-onboarding.tour-tor-security-update-8.5.description=We hebben de manier waarop u uw beveiligingsniveau ziet en instelt verbeterd. De schuifregelaar is vervangen door een werkbalkpictogram dat uw huidige niveau altijd zichtbaar maakt. Klik hierop om details over uw huidige niveau te zien of om uw beveiligingsinstellingen te wijzigen.
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=Naar Tor-netwerk
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=Volgende
diff --git a/chrome/locale/nl/torbutton.dtd b/chrome/locale/nl/torbutton.dtd
index a84bf230..c833d78f 100644
--- a/chrome/locale/nl/torbutton.dtd
+++ b/chrome/locale/nl/torbutton.dtd
@@ -4,12 +4,12 @@
<!ENTITY torbutton.context_menu.new_circuit_key "C">
<!ENTITY torbutton.context_menu.networksettings "Tor-netwerkinstellingen…">
<!ENTITY torbutton.context_menu.networksettings.key "N">
-<!ENTITY torbutton.context_menu.downloadUpdate "Controleer op updates voor de Tor-browser...">
+<!ENTITY torbutton.context_menu.downloadUpdate "Controleren op Tor Browser-update…">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
<!ENTITY torbutton.context_menu.cookieProtections "Cookiebeschermingen…">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
-<!ENTITY torbutton.button.tooltip "Klik hier om Tor-knop te initialiseren">
-<!ENTITY torbutton.prefs.security_settings "Tor-browser Beveiligingsinstellingen">
+<!ENTITY torbutton.button.tooltip "Klik om Torbutton te initialiseren">
+<!ENTITY torbutton.prefs.security_settings "Tor Browser-beveiligingsinstellingen">
<!ENTITY torbutton.cookiedialog.title "Cookiebeschermingen beheren">
<!ENTITY torbutton.cookiedialog.lockCol "Beschermd">
<!ENTITY torbutton.cookiedialog.domainCol "Host">
@@ -22,7 +22,7 @@
<!ENTITY torbutton.cookiedialog.saveAllCookies "Nieuwe cookies beschermen">
<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "Nieuwe cookies niet beschermen">
<!ENTITY torbutton.prefs.sec_caption "Beveiligingsniveau">
-<!ENTITY torbutton.prefs.sec_caption_tooltip "De beveiligingsschuifbalk laat je toe sommige functies uit te schakelen die je browser mogelijk blootstellen aan beveiligingsrisico's.">
+<!ENTITY torbutton.prefs.sec_caption_tooltip "Via de beveiligingsschuifbalk kunt u bepaalde browserfuncties uitschakelen die uw browser kwetsbaarder maken voor hackpogingen.">
<!ENTITY torbutton.prefs.sec_standard_label "Standaard">
<!ENTITY torbutton.prefs.sec_standard_description "Alle Tor Browser- en websitefuncties zijn ingeschakeld.">
<!ENTITY torbutton.prefs.sec_safer_label "Veiliger">
@@ -31,9 +31,9 @@
<!ENTITY torbutton.prefs.sec_safest_label "Veiligste">
<!ENTITY torbutton.prefs.sec_safest_description "Alleen websitefuncties toestaan die voor statische websites en basisservices zijn vereist. Deze wijzigingen zijn van invloed op afbeeldingen, media en scripts.">
<!ENTITY torbutton.prefs.sec_safest_list_label "Op de veiligste instelling:">
-<!ENTITY torbutton.prefs.sec_learn_more_label "Leer Meer">
-<!ENTITY torbutton.prefs.sec_js_on_https_sites_only "JavaScript zijn uitgeschakeld op non-HTTP sites.">
-<!ENTITY torbutton.prefs.sec_js_disabled "Javascript zijn standaard uitgeschakeld op alle sites.">
+<!ENTITY torbutton.prefs.sec_learn_more_label "Meer info">
+<!ENTITY torbutton.prefs.sec_js_on_https_sites_only "JavaScript is uitgeschakeld op niet-HTTPS-websites.">
+<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is standaard uitgeschakeld op alle websites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Sommige lettertypen en wiskundige symbolen zijn uitgeschakeld.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Sommige lettertypen, pictogrammen, wiskundige symbolen en afbeeldingen zijn uitgeschakeld.">
<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio en video (HTML5-media) en WebGL zijn klikken-voor-afspelen.">
diff --git a/chrome/locale/nl/torbutton.properties b/chrome/locale/nl/torbutton.properties
index 3c9528a9..48989545 100644
--- a/chrome/locale/nl/torbutton.properties
+++ b/chrome/locale/nl/torbutton.properties
@@ -7,7 +7,7 @@ torbutton.circuit_display.tor_bridge = Bridge
torbutton.circuit_display.unknown_country = Onbekend land
torbutton.circuit_display.guard = Bewaking
torbutton.circuit_display.guard_note = Uw [Guard]-node mag niet worden gewijzigd.
-torbutton.circuit_display.learn_more = Lees meer
+torbutton.circuit_display.learn_more = Meer info
torbutton.content_sizer.margin_tooltip = Tor Browser voegt deze rand toe om de afmetingen van het venster minder uit de toon te laten vallen. Dit maakt het moeilijker om u online te volgen.
torbutton.panel.tooltip.disabled = Hier klikken om Tor in te schakelen
torbutton.panel.tooltip.enabled = Hier klikken om Tor uit te schakelen
diff --git a/chrome/locale/pl/browserOnboarding.properties b/chrome/locale/pl/browserOnboarding.properties
index 75d83f49..e0591437 100644
--- a/chrome/locale/pl/browserOnboarding.properties
+++ b/chrome/locale/pl/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=Przejdź do Sieci Tor
onboarding.tour-tor-network=Sieć Tor
onboarding.tour-tor-network.title=Podrózuj po zdecentralizowanej sieci.
onboarding.tour-tor-network.description=Tor Browser łączy się z Siecią Tor prowadzoną przez tysiące wolontariuszy na całym świecie. Inaczej niż w VPN, nie ma jednego punktu niepowodzenia lub scentralizowanej encji której musisz ufać aby korzystać z internetu w prywatności.
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=Przejdź do wyświetlacza obwodu
onboarding.tour-tor-circuit-display=Wyświetlacz Obwodu
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=Nowe
onboarding.tour-tor-update.prefix-updated=Zaktualizowano
onboarding.tour-tor-toolbar=Pasek narzędzi
-onboarding.tour-tor-toolbar-update-8.5.title=Układ paska narzędzi
-onboarding.tour-tor-toolbar-update-8.5.description=Poprawiliśmy układ paska narzędzi przeglądarki. Przenieśliśmy ikonę Torbutton umieszczając ją po pasku adresu, a obok dodaliśmy ikonę poziomu bezpieczeństwa.
-onboarding.tour-tor-toolbar-update-8.5.next-button=Przejdź do Bezpieczeństwo
-
-onboarding.tour-tor-security-update-8.5.title=Poziom bezpieczeństwa
-onboarding.tour-tor-security-update-8.5.description=Udoskonaliliśmy sposób wyświetlania i ustawiania poziomu bezpieczeństwa. Zastąpiliśmy suwak bezpieczeństwa ikoną paska narzędzi, dzięki czemu Twój bieżący poziom jest zawsze widoczny. Kliknij go, aby wyświetlić szczegółowe informacje na temat bieżącego poziomu lub aby zmienić ustawienia zabezpieczeń.
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=Przejdź do Sieci Tor
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=Dalej
diff --git a/chrome/locale/pt-BR/browserOnboarding.properties b/chrome/locale/pt-BR/browserOnboarding.properties
index f21d083f..11f2240e 100644
--- a/chrome/locale/pt-BR/browserOnboarding.properties
+++ b/chrome/locale/pt-BR/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=Vá para a Rede Tor.
onboarding.tour-tor-network=Rede Tor
onboarding.tour-tor-network.title=Viaje por uma rede descentralizada.
onboarding.tour-tor-network.description=O Tor Browser conecta você à rede Tor, composta por milhares de voluntários ao redor do mundo. Diferente de uma VPN, não há uma entidade ou ponto de falha central em que você precisa confiar para desfrutar da internet com privacidade.
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=Vá para a Exibição de Circuitos
onboarding.tour-tor-circuit-display=Exibição de Circuitos
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=Novo
onboarding.tour-tor-update.prefix-updated=Atualizado
onboarding.tour-tor-toolbar=Barra de ferramentas
-onboarding.tour-tor-toolbar-update-8.5.title=Layout da barra de ferramentas
-onboarding.tour-tor-toolbar-update-8.5.description=Melhoramos o layout da barra de ferramentas do navegador. Movemos o ícone do Torbutton após a barra de URL e adicionamos um ícone de nível de segurança ao lado dele.
-onboarding.tour-tor-toolbar-update-8.5.next-button=Vá para segurança
-
-onboarding.tour-tor-security-update-8.5.title=Experiência de nível de segurança
-onboarding.tour-tor-security-update-8.5.description=Melhoramos a maneira de ver e definir seu nível de segurança. Substituímos o controle deslizante de segurança por um ícone da barra de ferramentas que torna seu nível atual visível o tempo todo. Clique para ver os detalhes do seu nível atual ou para alterar suas configurações de segurança.
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=Vá para a Rede Tor.
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=Próximo
diff --git a/chrome/locale/ro/browserOnboarding.properties b/chrome/locale/ro/browserOnboarding.properties
index 102d2c51..c76a29e0 100644
--- a/chrome/locale/ro/browserOnboarding.properties
+++ b/chrome/locale/ro/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=Sari la Rețeaua Tor
onboarding.tour-tor-network=Rețea Tor
onboarding.tour-tor-network.title=Navighează într-o rețea descentralizată
onboarding.tour-tor-network.description=Navigatorul Tor Browser te conectează la rețeaua Tor, menținută de mii de voluntari din întreaga lume. Spre deosebire de o rețea VPN, nu există un punct ce poate eșua sau o entitate centralizată căreia trebuie să ii acorzi încrederea pentru a te bucura de Internet în mod total privat.
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=Sari la Afișaj Circuit
onboarding.tour-tor-circuit-display=Afișaj Circuit
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=Nou
onboarding.tour-tor-update.prefix-updated=Actualizat
onboarding.tour-tor-toolbar=Bara cu instrumente
-onboarding.tour-tor-toolbar-update-8.5.title=Aspectul barei cu instrumente
-onboarding.tour-tor-toolbar-update-8.5.description=Am îmbunătățit aspectul barei de instrumente a browserului. Am mutat pictograma Torbutton după bara de adrese URL și am adăugat o pictogramă de nivel de securitate alături de aceasta.
-onboarding.tour-tor-toolbar-update-8.5.next-button=Accesați pagina de Securitate
-
-onboarding.tour-tor-security-update-8.5.title=Experiență pentru nivelul de securitate
-onboarding.tour-tor-security-update-8.5.description=Am îmbunătățit modul în care vedeți și setați nivelul de securitate. Am înlocuit glisorul de securitate cu o pictogramă a barei de instrumente care face vizibil nivelul dvs. curent în orice moment. Faceți clic pe acesta pentru a vedea detalii despre nivelul dvs. actual sau pentru a vă modifica setările de securitate.
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=Sari la Rețeaua Tor
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=Înaintează
diff --git a/chrome/locale/ru/browserOnboarding.properties b/chrome/locale/ru/browserOnboarding.properties
index 456fce75..45cb0a8d 100644
--- a/chrome/locale/ru/browserOnboarding.properties
+++ b/chrome/locale/ru/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=Перейти в Сеть Tor
onboarding.tour-tor-network=Сеть Tor
onboarding.tour-tor-network.title=Перемещайтесь по децентрализованной сети.
onboarding.tour-tor-network.description=Tor Browser подключает вас к сети Tor, которую поддерживают волонтеры со всего мира. В отличие от VPN здесь нет какого-то одного узла, отказ которого вызовет сбой всей системы, или централизованного сервиса, которому придется довериться, чтобы приватно использовать интернет.
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=Посмотреть цепочку
onboarding.tour-tor-circuit-display=Просмотр цепочки
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=Создать
onboarding.tour-tor-update.prefix-updated=Обновленный
onboarding.tour-tor-toolbar=Панель инструментов
-onboarding.tour-tor-toolbar-update-8.5.title=Расположение Панели инструментов
-onboarding.tour-tor-toolbar-update-8.5.description=Мы улучшили панель инструментов браузера. Мы переместили иконку кнопки Tor после строки URL и добавили иконку уровня безопасности рядом с ним.
-onboarding.tour-tor-toolbar-update-8.5.next-button=Перейти к безопасности
-
-onboarding.tour-tor-security-update-8.5.title=Уровень безопасности
-onboarding.tour-tor-security-update-8.5.description=Мы улучшили вам вид и выбор вашего уровня безопасности. Мы заменили ползунок безопасности значком на панели инструментов, который постоянно отображает текущий уровень. Нажмите на нее, чтобы просмотреть подробную информацию о вашем текущем уровне или изменить настройки безопасности.
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=Перейти в Сеть Tor
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=Вперёд
diff --git a/chrome/locale/sv-SE/browserOnboarding.properties b/chrome/locale/sv-SE/browserOnboarding.properties
index 5da6b093..06b41901 100644
--- a/chrome/locale/sv-SE/browserOnboarding.properties
+++ b/chrome/locale/sv-SE/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=Gå till Tor-nätverket
onboarding.tour-tor-network=Tor-nätverk
onboarding.tour-tor-network.title=Res ett decentraliserat nätverk.
onboarding.tour-tor-network.description=Tor Browser ansluter dig till Tor-nätverket som drivs av tusentals volontärer runt om i världen. Till skillnad från en VPN, det finns ingen punkt av misslyckande eller centraliserad enhet du behöver lita på för att njuta av internet privat.
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=Gå till kretsvisning
onboarding.tour-tor-circuit-display=Kretsvisning
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=Ny
onboarding.tour-tor-update.prefix-updated=Uppdaterad
onboarding.tour-tor-toolbar=Verktygsfält
-onboarding.tour-tor-toolbar-update-8.5.title=Verktygsradens layout
-onboarding.tour-tor-toolbar-update-8.5.description=Vi förbättrade webbläsarens verktygsfältslayout. Vi flyttade Torbutton-ikonen efter webbadressfältet, och vi lade till en säkerhetsnivåikon bredvid den.
-onboarding.tour-tor-toolbar-update-8.5.next-button=Gå till Säkerhet
-
-onboarding.tour-tor-security-update-8.5.title=Säkerhetsnivå erfarenhet
-onboarding.tour-tor-security-update-8.5.description=Vi förbättrade hur du ser och ställer in din säkerhetsnivå. Vi ersatte säkerhetsreglaget med en ikon i verktygsfältet som gör din nuvarande nivå synlig hela tiden. Klicka på den för att visa information om din nuvarande nivå eller för att ändra dina säkerhetsinställningar.
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=Gå till Tor-nätverket
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=Nästa
diff --git a/chrome/locale/tr/brand.dtd b/chrome/locale/tr/brand.dtd
index dd472dc4..1255df2f 100644
--- a/chrome/locale/tr/brand.dtd
+++ b/chrome/locale/tr/brand.dtd
@@ -6,7 +6,7 @@
<!ENTITY brandShortName "Tor Browser">
<!ENTITY brandFullName "Tor Browser">
<!ENTITY vendorShortName "Tor Projesi">
-<!ENTITY trademarkInfo.part1 "'Tor' ve 'Onion Logo' Tor Project, Inc. tarafından tescillenmiş markalardır.">
+<!ENTITY trademarkInfo.part1 "'Tor' ve 'Onion Logo' Tor Project, Inc. tarafından tescil edilmiş markalardır.">
<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
<!ENTITY plugins.installed.find "Kurulmuş sistem uygulama eklerini yüklemek için tıklayın">
diff --git a/chrome/locale/tr/browserOnboarding.properties b/chrome/locale/tr/browserOnboarding.properties
index b89ec1fb..0b50cf36 100644
--- a/chrome/locale/tr/browserOnboarding.properties
+++ b/chrome/locale/tr/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=Tor Ağına Geç
onboarding.tour-tor-network=Tor Ağı
onboarding.tour-tor-network.title=Tek merkezden yönetilmeyen bir ağda gezinin.
onboarding.tour-tor-network.description=Tor Browser sizi tüm dünyada binlerce gönüllü tarafından işletilen Tor Ağına bağlar. VPN bağlantısının aksine güvenlik açığı oluşturacak bir nokta ya da İnternet üzerinde kişisel gizliliğinizi koruyarak gezinmeniz için güvenmeniz gereken merkezi bir kuruluş yoktur.
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=Devre Görünümüne Geç
onboarding.tour-tor-circuit-display=Devre Görünümü
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=Yeni
onboarding.tour-tor-update.prefix-updated=Güncellendi
onboarding.tour-tor-toolbar=Araç Çubuğu
-onboarding.tour-tor-toolbar-update-8.5.title=Araç çubuğu görünümü
-onboarding.tour-tor-toolbar-update-8.5.description=Web tarayıcı araç çubuğu görünümünü geliştirdik. Torbutton simgesini adres çubuğunun yanına taşıdık ve yanına bir güvenlik düzeyi simgesi ekledik.
-onboarding.tour-tor-toolbar-update-8.5.next-button=Güvenliğe Git
-
-onboarding.tour-tor-security-update-8.5.title=Güvenlik düzeyi deneyimi
-onboarding.tour-tor-security-update-8.5.description=Güvenlik düzeyi görünümünü ve ayarlama şeklini değiştirdik. Güvenlik düzeyi ayarını bir araç çubuğu simgesi ile değiştirdik. Böylece her an geçerli güvenlik düzeyinin görülebilmesini sağladık. Bu simgeye tıklayarak geçerli güvenlik düzeyinin ayrıntılarını görebilir ya da değiştirebilirsiniz.
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=Tor Ağına Geç
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=Sonraki
diff --git a/chrome/locale/vi/browserOnboarding.properties b/chrome/locale/vi/browserOnboarding.properties
index 616e8694..e9508e20 100644
--- a/chrome/locale/vi/browserOnboarding.properties
+++ b/chrome/locale/vi/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=Đi đến mạng Tor
onboarding.tour-tor-network=Mạng Tor
onboarding.tour-tor-network.title=Travel a decentralized network.
onboarding.tour-tor-network.description=Tor Browser connects you to the Tor network run by thousands of volunteers around the world. Unlike a VPN, there’s no one point of failure or centralized entity you need to trust in order to enjoy the internet privately.
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=Go to Circuit Display
onboarding.tour-tor-circuit-display=Circuit Display
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=Mới
onboarding.tour-tor-update.prefix-updated=Updated
onboarding.tour-tor-toolbar=Toolbar
-onboarding.tour-tor-toolbar-update-8.5.title=Toolbar layout
-onboarding.tour-tor-toolbar-update-8.5.description=We improved the browser toolbar layout. We moved the Torbutton icon after the URL bar, and we added a security level icon next to it.
-onboarding.tour-tor-toolbar-update-8.5.next-button=Go to Security
-
-onboarding.tour-tor-security-update-8.5.title=Security level experience
-onboarding.tour-tor-security-update-8.5.description=We improved how you see and set your security level. We replaced the security slider with a toolbar icon that makes your current level visible at all times. Click it to view details about your current level or to change your security settings.
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=Đi đến mạng Tor
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=Kế tiếp
diff --git a/chrome/locale/zh-CN/browserOnboarding.properties b/chrome/locale/zh-CN/browserOnboarding.properties
index f56822a8..83aa1571 100644
--- a/chrome/locale/zh-CN/browserOnboarding.properties
+++ b/chrome/locale/zh-CN/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=前往“Tor 网络”
onboarding.tour-tor-network=Tor 网络
onboarding.tour-tor-network.title=通过非中心化的网络进行浏览。
onboarding.tour-tor-network.description=Tor 浏览器将你和世界数千名志愿者支持的 Tor 网络相连。和 VPN 不同的是,这里不会有单点故障,也不需要你为了私密浏览信任某一个中心化的实体。
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=前往 ’显示链路'
onboarding.tour-tor-circuit-display=显示链路
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=新建
onboarding.tour-tor-update.prefix-updated=已更新
onboarding.tour-tor-toolbar=工具栏
-onboarding.tour-tor-toolbar-update-8.5.title=工具栏布局
-onboarding.tour-tor-toolbar-update-8.5.description=我们改进了浏览器的工具栏布局。我们把 Tor 按钮图标移动到了地址栏的后面。我们在它旁边还加了一个安全级别图标。
-onboarding.tour-tor-toolbar-update-8.5.next-button=前往“安全”
-
-onboarding.tour-tor-security-update-8.5.title=安全级别体验
-onboarding.tour-tor-security-update-8.5.description=我们改进了您浏览、设置安全级别的方式。我们用工具栏图标代替了安全调轨,让目前的级别永远可视。点击该图标,您即可查看目前的安全级别,或者改变您的安全设置。
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=前往“Tor 网络”
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=下一步
diff --git a/chrome/locale/zh-TW/browserOnboarding.properties b/chrome/locale/zh-TW/browserOnboarding.properties
index f3728fb6..5cd92164 100644
--- a/chrome/locale/zh-TW/browserOnboarding.properties
+++ b/chrome/locale/zh-TW/browserOnboarding.properties
@@ -15,6 +15,8 @@ onboarding.tour-tor-privacy.button=前往 Tor 網路
onboarding.tour-tor-network=Tor 網路
onboarding.tour-tor-network.title=在去中心化的網路旅行。
onboarding.tour-tor-network.description=Tor Browser 將您和世界上數千名志願者支持的 Tor 網路相連。和 VPN 不同的是,這裡不會有單點故障,也不需要你為了私密瀏覽信任某一個中心化的實體。
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=前往迴路顯示
onboarding.tour-tor-circuit-display=迴路顯示
@@ -47,12 +49,11 @@ onboarding.tour-tor-update.prefix-new=新增
onboarding.tour-tor-update.prefix-updated=已更新
onboarding.tour-tor-toolbar=工具列
-onboarding.tour-tor-toolbar-update-8.5.title=工具列版面配置
-onboarding.tour-tor-toolbar-update-8.5.description=我們改進了瀏覽器的工具列版面配置。我們把 Torbutton 圖示移動到網址列的後面,並且在它旁邊加了一個安全等級圖示。
-onboarding.tour-tor-toolbar-update-8.5.next-button=前往安全性
-
-onboarding.tour-tor-security-update-8.5.title=安全等級體驗
-onboarding.tour-tor-security-update-8.5.description=我們改進了您檢視與設定安全等級的方式。我們用工具列圖示取代了安全等級調整棒,讓目前的等級永遠可見。點擊該圖示,您即可檢視目前的安全等級,或者變更您的安全設定。
+onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [=] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=前往 Tor 網路
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=下一個
1
0