tbb-commits
Threads by month
- ----- 2025 -----
- 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
- 18685 discussions
commit 398eba8d5e2bf22afe41dbdd97044598ffbc2dd8
Author: Georg Koppen <gk(a)torproject.org>
Date: Mon Mar 23 09:20:01 2015 +0000
Bug 9387: Security slider 1.0
---
src/chrome/content/torbutton.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index 3db2dd7..69efb5f 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -2243,7 +2243,7 @@ var torbutton_sec_mh_bool_prefs = {
var torbutton_sec_h_bool_prefs = {
"noscript.forbidFonts" : true,
"noscript.global" : false,
- // XXX: pref for disabling SVG is missing
+ "svg.in-content.enabled" : false
};
function torbutton_update_security_slider() {
1
0
commit 4711e77ebda8c4fdbbb24110bf49d1b95d65d7c3
Author: David Fifield <david(a)bamsoftware.com>
Date: Sat Mar 21 15:41:13 2015 -0700
Upgrade go to 1.4.2.
https://golang.org/doc/go1.4
https://golang.org/doc/devel/release.html#go1.4
---
gitian/versions | 4 ++--
gitian/versions.alpha | 4 ++--
gitian/versions.beta | 4 ++--
gitian/versions.nightly | 4 ++--
4 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/gitian/versions b/gitian/versions
index 7ad0edb..4b0c9a4 100755
--- a/gitian/versions
+++ b/gitian/versions
@@ -48,7 +48,7 @@ SETUPTOOLS_VER=1.4
LXML_VER=3.3.5
PARSLEY_VER=1.2
HTTPSE_VER=4.0.1
-GO_VER=1.3.3
+GO_VER=1.4.2
## File names for the source packages
OPENSSL_PACKAGE=openssl-${OPENSSL_VER}.tar.gz
@@ -93,7 +93,7 @@ M2CRYPTO_HASH=25b94498505c2d800ee465db0cc1aff097b1615adc3ac042a1c85ceca264fc0a
PY2EXE_HASH=610a8800de3d973ed5ed4ac505ab42ad058add18a68609ac09e6cf3598ef056c
SETUPTOOLS_HASH=75d288687066ed124311d6ca5f40ffa92a0e81adcd7fff318c6e84082713cf39
PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
-GO_HASH=1bb6fde89cfe8b9756a875af55d994cce0994861227b5dc0f268c143d91cd5ff
+GO_HASH=299a6fd8f8adfdce15bc06bde926e7b252ae8e24dd5b16b7d8791ed79e7b5e9b
GCC_HASH=d334781a124ada6f38e63b545e2a3b8c2183049515a1abab6d513f109f1d717e
## Non-git package URLs
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index c22890b..2e6cd80 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -53,7 +53,7 @@ SETUPTOOLS_VER=1.4
LXML_VER=3.3.5
PARSLEY_VER=1.2
HTTPSE_VER=5.0development.2
-GO_VER=1.3.3
+GO_VER=1.4.2
## File names for the source packages
OPENSSL_PACKAGE=openssl-${OPENSSL_VER}.tar.gz
@@ -99,7 +99,7 @@ M2CRYPTO_HASH=25b94498505c2d800ee465db0cc1aff097b1615adc3ac042a1c85ceca264fc0a
PY2EXE_HASH=610a8800de3d973ed5ed4ac505ab42ad058add18a68609ac09e6cf3598ef056c
SETUPTOOLS_HASH=75d288687066ed124311d6ca5f40ffa92a0e81adcd7fff318c6e84082713cf39
PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
-GO_HASH=1bb6fde89cfe8b9756a875af55d994cce0994861227b5dc0f268c143d91cd5ff
+GO_HASH=299a6fd8f8adfdce15bc06bde926e7b252ae8e24dd5b16b7d8791ed79e7b5e9b
GCC_HASH=d334781a124ada6f38e63b545e2a3b8c2183049515a1abab6d513f109f1d717e
GONET_HASH=1812fec55256e1a6fe546111cc658520b80972f38826c94ec11ef24315d32353
diff --git a/gitian/versions.beta b/gitian/versions.beta
index 19d117e..efb4bfb 100755
--- a/gitian/versions.beta
+++ b/gitian/versions.beta
@@ -47,7 +47,7 @@ SETUPTOOLS_VER=1.4
LXML_VER=3.3.5
PARSLEY_VER=1.2
HTTPSE_VER=3.5.1
-GO_VER=1.3.3
+GO_VER=1.4.2
## File names for the source packages
OPENSSL_PACKAGE=openssl-${OPENSSL_VER}.tar.gz
@@ -94,7 +94,7 @@ M2CRYPTO_HASH=25b94498505c2d800ee465db0cc1aff097b1615adc3ac042a1c85ceca264fc0a
PY2EXE_HASH=610a8800de3d973ed5ed4ac505ab42ad058add18a68609ac09e6cf3598ef056c
SETUPTOOLS_HASH=75d288687066ed124311d6ca5f40ffa92a0e81adcd7fff318c6e84082713cf39
PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
-GO_HASH=1bb6fde89cfe8b9756a875af55d994cce0994861227b5dc0f268c143d91cd5ff
+GO_HASH=299a6fd8f8adfdce15bc06bde926e7b252ae8e24dd5b16b7d8791ed79e7b5e9b
## Non-git package URLs
OPENSSL_URL=https://www.openssl.org/source/${OPENSSL_PACKAGE}
diff --git a/gitian/versions.nightly b/gitian/versions.nightly
index 2e4733e..cf0aecf 100755
--- a/gitian/versions.nightly
+++ b/gitian/versions.nightly
@@ -57,7 +57,7 @@ SETUPTOOLS_VER=1.4
LXML_VER=3.3.5
PARSLEY_VER=1.2
HTTPSE_VER=5.0development.2
-GO_VER=1.3.3
+GO_VER=1.4.2
## File names for the source packages
OPENSSL_PACKAGE=openssl-${OPENSSL_VER}.tar.gz
@@ -103,7 +103,7 @@ M2CRYPTO_HASH=25b94498505c2d800ee465db0cc1aff097b1615adc3ac042a1c85ceca264fc0a
PY2EXE_HASH=610a8800de3d973ed5ed4ac505ab42ad058add18a68609ac09e6cf3598ef056c
SETUPTOOLS_HASH=75d288687066ed124311d6ca5f40ffa92a0e81adcd7fff318c6e84082713cf39
PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
-GO_HASH=1bb6fde89cfe8b9756a875af55d994cce0994861227b5dc0f268c143d91cd5ff
+GO_HASH=299a6fd8f8adfdce15bc06bde926e7b252ae8e24dd5b16b7d8791ed79e7b5e9b
GCC_HASH=d334781a124ada6f38e63b545e2a3b8c2183049515a1abab6d513f109f1d717e
GONET_HASH=1812fec55256e1a6fe546111cc658520b80972f38826c94ec11ef24315d32353
1
0

24 Mar '15
commit c0f7fa56c1a63cb5df18a3a4b55333ad6184252a
Author: David Fifield <david(a)bamsoftware.com>
Date: Sat Mar 21 15:37:56 2015 -0700
Use https URLs for golang.org.
---
gitian/versions | 2 +-
gitian/versions.alpha | 2 +-
gitian/versions.beta | 2 +-
gitian/versions.nightly | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/gitian/versions b/gitian/versions
index b97ec8a..7ad0edb 100755
--- a/gitian/versions
+++ b/gitian/versions
@@ -119,4 +119,4 @@ PY2EXE_URL=http://softlayer-dal.dl.sourceforge.net/project/py2exe/py2exe/${…
SETUPTOOLS_URL=https://pypi.python.org/packages/source/s/setuptools/${SETUP…
LXML_URL=https://pypi.python.org/packages/source/l/lxml/${LXML_PACKAGE}
PARSLEY_URL=https://pypi.python.org/packages/source/P/Parsley/${PARSLEY_PAC…
-GO_URL=http://golang.org/dl/${GO_PACKAGE}
+GO_URL=https://golang.org/dl/${GO_PACKAGE}
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index 857b48f..c22890b 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -126,5 +126,5 @@ PY2EXE_URL=http://softlayer-dal.dl.sourceforge.net/project/py2exe/py2exe/${…
SETUPTOOLS_URL=https://pypi.python.org/packages/source/s/setuptools/${SETUP…
LXML_URL=https://pypi.python.org/packages/source/l/lxml/${LXML_PACKAGE}
PARSLEY_URL=https://pypi.python.org/packages/source/P/Parsley/${PARSLEY_PAC…
-GO_URL=http://golang.org/dl/${GO_PACKAGE}
+GO_URL=https://golang.org/dl/${GO_PACKAGE}
GONET_URL=https://people.torproject.org/~yawning/mirrors/sources/${GONET_PA…
diff --git a/gitian/versions.beta b/gitian/versions.beta
index bab8d15..19d117e 100755
--- a/gitian/versions.beta
+++ b/gitian/versions.beta
@@ -119,4 +119,4 @@ PY2EXE_URL=http://softlayer-dal.dl.sourceforge.net/project/py2exe/py2exe/${…
SETUPTOOLS_URL=https://pypi.python.org/packages/source/s/setuptools/${SETUP…
LXML_URL=https://pypi.python.org/packages/source/l/lxml/${LXML_PACKAGE}
PARSLEY_URL=https://pypi.python.org/packages/source/P/Parsley/${PARSLEY_PAC…
-GO_URL=http://golang.org/dl/${GO_PACKAGE}
+GO_URL=https://golang.org/dl/${GO_PACKAGE}
diff --git a/gitian/versions.nightly b/gitian/versions.nightly
index 2c62a88..2e4733e 100755
--- a/gitian/versions.nightly
+++ b/gitian/versions.nightly
@@ -130,5 +130,5 @@ PY2EXE_URL=http://softlayer-dal.dl.sourceforge.net/project/py2exe/py2exe/${…
SETUPTOOLS_URL=https://pypi.python.org/packages/source/s/setuptools/${SETUP…
LXML_URL=https://pypi.python.org/packages/source/l/lxml/${LXML_PACKAGE}
PARSLEY_URL=https://pypi.python.org/packages/source/P/Parsley/${PARSLEY_PAC…
-GO_URL=http://golang.org/dl/${GO_PACKAGE}
+GO_URL=https://golang.org/dl/${GO_PACKAGE}
GONET_URL=https://people.torproject.org/~yawning/mirrors/sources/${GONET_PA…
1
0

[tor-browser-bundle/master] Bug #14937: Hard-code meek and flashproxy node fingerprints
by gk@torproject.org 24 Mar '15
by gk@torproject.org 24 Mar '15
24 Mar '15
commit bb029bff85d1973a08340404be50f7ceee83f59e
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Fri Mar 20 14:51:58 2015 -0700
Bug #14937: Hard-code meek and flashproxy node fingerprints
See discussion in https://trac.torproject.org/projects/tor/ticket/14937?replyto=22#comment:17
and below.
---
Bundle-Data/PTConfigs/bridge_prefs.js | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/Bundle-Data/PTConfigs/bridge_prefs.js b/Bundle-Data/PTConfigs/bridge_prefs.js
index f4a4f41..8e7fd43 100644
--- a/Bundle-Data/PTConfigs/bridge_prefs.js
+++ b/Bundle-Data/PTConfigs/bridge_prefs.js
@@ -8,11 +8,11 @@ pref("extensions.torlauncher.default_bridge.obfs3.3", "obfs3 169.229.59.75:46328
pref("extensions.torlauncher.default_bridge.obfs3.4", "obfs3 109.105.109.163:38980 1E05F577A0EC0213F971D81BF4D86A9E4E8229ED");
pref("extensions.torlauncher.default_bridge.obfs3.5", "obfs3 109.105.109.163:47779 4C331FA9B3D1D6D8FB0D8FBBF0C259C360D97E6A");
-pref("extensions.torlauncher.default_bridge.flashproxy.1", "flashproxy 0.0.1.0:1");
-pref("extensions.torlauncher.default_bridge.flashproxy.2", "flashproxy 0.0.1.0:2");
-pref("extensions.torlauncher.default_bridge.flashproxy.3", "flashproxy 0.0.1.0:3");
-pref("extensions.torlauncher.default_bridge.flashproxy.4", "flashproxy 0.0.1.0:4");
-pref("extensions.torlauncher.default_bridge.flashproxy.5", "flashproxy 0.0.1.0:5");
+pref("extensions.torlauncher.default_bridge.flashproxy.1", "flashproxy 0.0.1.0:1 4D6C0DF6DEC9398A4DEF07084F3CD395A96DD2AD");
+pref("extensions.torlauncher.default_bridge.flashproxy.2", "flashproxy 0.0.1.0:2 4D6C0DF6DEC9398A4DEF07084F3CD395A96DD2AD");
+pref("extensions.torlauncher.default_bridge.flashproxy.3", "flashproxy 0.0.1.0:3 4D6C0DF6DEC9398A4DEF07084F3CD395A96DD2AD");
+pref("extensions.torlauncher.default_bridge.flashproxy.4", "flashproxy 0.0.1.0:4 4D6C0DF6DEC9398A4DEF07084F3CD395A96DD2AD");
+pref("extensions.torlauncher.default_bridge.flashproxy.5", "flashproxy 0.0.1.0:5 4D6C0DF6DEC9398A4DEF07084F3CD395A96DD2AD");
pref("extensions.torlauncher.default_bridge.fte.1", "fte 192.240.101.106:80 B629B0B607C8AC9349B5646C24E9D242184F5B6E");
pref("extensions.torlauncher.default_bridge.fte.2", "fte 50.7.176.114:80 2BD466989944867075E872310EBAD65BC88C8AEF");
@@ -31,6 +31,6 @@ pref("extensions.torlauncher.default_bridge.obfs4.1", "obfs4 178.209.52.110:443
pref("extensions.torlauncher.default_bridge.obfs4.2", "obfs4 83.212.101.3:41213 A09D536DD1752D542E1FBB3C9CE4449D51298239 cert=lPRQ/MXdD1t5SRZ9MquYQNT9m5DV757jtdXdlePmRCudUU9CFUOX1Tm7/meFSyPOsud7Cw iat-mode=0");
pref("extensions.torlauncher.default_bridge.obfs4.3", "obfs4 104.131.108.182:56880 EF577C30B9F788B0E1801CF7E433B3B77792B77A cert=0SFhfDQrKjUJP8Qq6wrwSICEPf3Vl/nJRsYxWbg3QRoSqhl2EB78MPS2lQxbXY4EW1wwXA iat-mode=0");
-pref("extensions.torlauncher.default_bridge.meek-google.1", "meek 0.0.2.0:1 url=https://meek-reflect.appspot.com/ front=www.google.com");
-pref("extensions.torlauncher.default_bridge.meek-amazon.1", "meek 0.0.2.0:2 url=https://d2zfqthxsdq309.cloudfront.net/ front=a0.awsstatic.com");
-pref("extensions.torlauncher.default_bridge.meek-azure.1", "meek 0.0.2.0:3 url=https://az668014.vo.msecnd.net/ front=ajax.aspnetcdn.com");
+pref("extensions.torlauncher.default_bridge.meek-google.1", "meek 0.0.2.0:1 46D4A71197B8FA515A826C6B017C522FE264655B url=https://meek-reflect.appspot.com/ front=www.google.com");
+pref("extensions.torlauncher.default_bridge.meek-amazon.1", "meek 0.0.2.0:2 4EE0CC769EB4B15A872F742EDE27D298A59DCADE url=https://d2zfqthxsdq309.cloudfront.net/ front=a0.awsstatic.com");
+pref("extensions.torlauncher.default_bridge.meek-azure.1", "meek 0.0.2.0:3 A2C13B7DFCAB1CBF3A884B6EB99A98067AB6EF44 url=https://az668014.vo.msecnd.net/ front=ajax.aspnetcdn.com");
1
0

[tor-browser-bundle/master] Merge remote-tracking branch 'arthur/14937'
by gk@torproject.org 24 Mar '15
by gk@torproject.org 24 Mar '15
24 Mar '15
commit 5a9179b065e3015381fc6ea5bf4dccb0b04d3dd6
Merge: 4cce67a bb029bf
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Mar 24 15:43:19 2015 +0000
Merge remote-tracking branch 'arthur/14937'
Bundle-Data/PTConfigs/bridge_prefs.js | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
1
0

[torbutton/master] Bug 14937: Show meek and flashproxy bridges in tor circuit display
by gk@torproject.org 24 Mar '15
by gk@torproject.org 24 Mar '15
24 Mar '15
commit c6321626cf04db74a8c08af19331c686757adc85
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Sat Mar 21 16:32:07 2015 -0700
Bug 14937: Show meek and flashproxy bridges in tor circuit display
---
src/chrome/content/tor-circuit-display.js | 37 ++++++++++++++++-------------
src/modules/tor-control-port.js | 4 +---
2 files changed, 21 insertions(+), 20 deletions(-)
diff --git a/src/chrome/content/tor-circuit-display.js b/src/chrome/content/tor-circuit-display.js
index a4ba919..8997757 100644
--- a/src/chrome/content/tor-circuit-display.js
+++ b/src/chrome/content/tor-circuit-display.js
@@ -47,7 +47,7 @@ let credentialsToNodeDataMap = {},
// __trimQuotes(s)__.
// Removes quotation marks around a quoted string.
-let trimQuotes = s => s ? s.match(/^\"(.*)\"$/)[1] : undefined;
+let trimQuotes = s => s ? s.match(/^"(.*)"$/)[1] : undefined;
// __getBridge(id)__.
// Gets the bridge parameters for a given node ID. If the node
@@ -89,7 +89,8 @@ let nodeDataForID = function* (controller, id) {
if (result.ip) {
// Get the country code for the node's IP address.
try {
- result.countryCode = yield controller.getInfo("ip-to-country/" + result.ip);
+ let countryCode = yield controller.getInfo("ip-to-country/" + result.ip);
+ result.countryCode = countryCode === "??" ? null : countryCode;
} catch (e) { }
}
return result;
@@ -190,22 +191,24 @@ let showCircuitDisplay = function (show) {
let nodeLines = function (nodeData) {
let result = [];
for (let {ip, countryCode, type, bridgeType} of nodeData) {
- let bridge = type === "bridge";
+ let bridge = type === "bridge",
+ country = countryCode ? localizedCountryNameFromCode(countryCode) : null;
result.push(
- // For each relay, show its apparent host country.
- (countryCode ? localizedCountryNameFromCode(countryCode)
- : uiString("unknown_country")) +
- (bridge ?
- // As we have a bridge, don't show the IP address
- // but show the bridge type.
- " (" + uiString("tor_bridge") +
- ((bridgeType !== "vanilla") ? (": " + bridgeType) : "") + ")"
- :
- // As we don't have a bridge, show the IP address
- // of the node. Use unicode escapes to ensure that
- // parentheses behave properly in both left-to-right
- // and right-to-left languages.
- " ‭ (" + (ip || uiString("ip_unknown")) + ")‬"));
+ bridge ?
+ // As we have a bridge, don't show the IP address
+ // but show the bridge type.
+ (uiString("tor_bridge") +
+ ((bridgeType !== "vanilla") ? (": " + bridgeType) : "") +
+ (country ? " (" + country + ")" : ""))
+ :
+ // For each non-bridge relay, show its host country and IP.
+ (country || uiString("unknown_country")) +
+ // As we don't have a bridge, show the IP address
+ // of the node. Use unicode escapes to ensure that
+ // parentheses behave properly in both left-to-right
+ // and right-to-left languages.
+ " ‭ (" + (ip || uiString("ip_unknown")) + ")‬"
+ );
}
return result;
};
diff --git a/src/modules/tor-control-port.js b/src/modules/tor-control-port.js
index a55a0d8..710643e 100644
--- a/src/modules/tor-control-port.js
+++ b/src/modules/tor-control-port.js
@@ -476,11 +476,9 @@ info.bridgeParser = function(bridgeLine) {
// Several bridge types have a similar format:
} else {
result.type = tokens[0];
- if (["fte", "obfs3", "obfs4", "scramblesuit"]
+ if (["flashproxy", "fte", "meek", "obfs3", "obfs4", "scramblesuit"]
.indexOf(result.type) >= 0) {
[result.address, result.ID] = tokens.slice(1);
- } else if (result.type === "meek") {
- // do nothing for now
}
}
return result.type ? result : null;
1
0

24 Mar '15
commit 5ac0bb12aaceb954d124e1e65cd47c37e28fcaa7
Merge: 55d3976 c632162
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Mar 24 15:41:45 2015 +0000
Merge remote-tracking branch 'arthur/14937+7'
src/chrome/content/tor-circuit-display.js | 37 ++++++++++++++++-------------
src/modules/tor-control-port.js | 4 +---
2 files changed, 21 insertions(+), 20 deletions(-)
1
0

[tor-browser-bundle/master] Bug 15437: Use Moritz' new key and new tag
by gk@torproject.org 23 Mar '15
by gk@torproject.org 23 Mar '15
23 Mar '15
commit 4cce67a179e7978908e934069024ac8d832692d0
Author: Georg Koppen <gk(a)torproject.org>
Date: Mon Mar 23 11:54:02 2015 +0000
Bug 15437: Use Moritz' new key and new tag
---
gitian/gpg/tbb-windows-installer.gpg | Bin 15689 -> 53000 bytes
gitian/versions.alpha | 2 +-
gitian/versions.nightly | 2 +-
3 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/gitian/gpg/tbb-windows-installer.gpg b/gitian/gpg/tbb-windows-installer.gpg
index fab3a99..7193ea0 100644
Binary files a/gitian/gpg/tbb-windows-installer.gpg and b/gitian/gpg/tbb-windows-installer.gpg differ
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index da29ced..857b48f 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -13,7 +13,7 @@ TOR_TAG=tor-0.2.6.3-alpha
TORLAUNCHER_TAG=0.2.7.2
TORBUTTON_TAG=1.9.0.0
HTTPSE_TAG=3.5.3 # XXX: HTTPSE_VER is used instead, pending #11630
-NSIS_TAG=v0.2
+NSIS_TAG=v0.3
ZLIB_TAG=v1.2.8
LIBEVENT_TAG=release-2.0.21-stable
MINGW_TAG=e712bb8b106d059914388e6ccd93c584a6416082 # XXX: ???
diff --git a/gitian/versions.nightly b/gitian/versions.nightly
index fba4d87..2c62a88 100755
--- a/gitian/versions.nightly
+++ b/gitian/versions.nightly
@@ -16,7 +16,7 @@ TOR_TAG=master
TORLAUNCHER_TAG=master
TORBUTTON_TAG=master
HTTPSE_TAG=master
-NSIS_TAG=v0.2
+NSIS_TAG=v0.3
ZLIB_TAG=v1.2.8
LIBEVENT_TAG=release-2.0.21-stable
# A mingw-w64 commit that works. The 3.1.0 tag is too old.
1
0

23 Mar '15
commit 1ef11b4dd2ee590b316029a365ce9156a9d949c3
Author: David Fifield <david(a)bamsoftware.com>
Date: Sat Mar 21 21:59:55 2015 +0000
Bug 15428: Upgrade meek to 0.16.
---
gitian/versions | 2 +-
gitian/versions.alpha | 2 +-
gitian/versions.beta | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/gitian/versions b/gitian/versions
index b661fff..b97ec8a 100755
--- a/gitian/versions
+++ b/gitian/versions
@@ -25,7 +25,7 @@ FTEPROXY_TAG=597f8378f6f4f3de570b8e1064c2e4cb8d67fbd0 # tag 0.2.19
LIBDMG_TAG=dfd5e5cc3dc1191e37d3c3a6118975afdd1d7014
TXSOCKSX_TAG=216eb0894a1755872f4789f9458aa6cf543b8433 # unsigned habnabit/1.13.0.2
GOPTLIB_TAG=0.2
-MEEK_TAG=0.15
+MEEK_TAG=0.16
FAKETIME_TAG=70aa6b394d9341522dffe8a5a5cf5929e82cc6b9 # unsigned v0.9.6
GITIAN_TAG=tor-browser-builder-3.x-7
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index 648027a..da29ced 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -25,7 +25,7 @@ FTEPROXY_TAG=597f8378f6f4f3de570b8e1064c2e4cb8d67fbd0 # tag 0.2.19
LIBDMG_TAG=dfd5e5cc3dc1191e37d3c3a6118975afdd1d7014
TXSOCKSX_TAG=216eb0894a1755872f4789f9458aa6cf543b8433 # unsigned habnabit/1.13.0.2
GOPTLIB_TAG=0.2
-MEEK_TAG=0.15
+MEEK_TAG=0.16
FAKETIME_TAG=70aa6b394d9341522dffe8a5a5cf5929e82cc6b9 # unsigned v0.9.6
GOED25519_TAG=c4161f4c7483313562781c61b9a20aba73daf9de
GOSIPHASH_TAG=42ba037e748c9062a75e0924705c43b893edefcd
diff --git a/gitian/versions.beta b/gitian/versions.beta
index 975a3a9..bab8d15 100755
--- a/gitian/versions.beta
+++ b/gitian/versions.beta
@@ -25,7 +25,7 @@ FTEPROXY_TAG=597f8378f6f4f3de570b8e1064c2e4cb8d67fbd0 # tag 0.2.19
LIBDMG_TAG=dfd5e5cc3dc1191e37d3c3a6118975afdd1d7014
TXSOCKSX_TAG=216eb0894a1755872f4789f9458aa6cf543b8433 # unsigned habnabit/1.13.0.2
GOPTLIB_TAG=0.2
-MEEK_TAG=0.15
+MEEK_TAG=0.16
GITIAN_TAG=tor-browser-builder-3.x-6
1
0

23 Mar '15
commit 22d0af184ee6b3cdee11b159c3667cf72d4df364
Author: David Fifield <david(a)bamsoftware.com>
Date: Sat Mar 21 21:59:55 2015 +0000
Bug 15428: Upgrade meek to 0.16.
---
gitian/versions | 2 +-
gitian/versions.alpha | 2 +-
gitian/versions.beta | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/gitian/versions b/gitian/versions
index c8d647b..14354af 100755
--- a/gitian/versions
+++ b/gitian/versions
@@ -25,7 +25,7 @@ FTEPROXY_TAG=597f8378f6f4f3de570b8e1064c2e4cb8d67fbd0 # tag 0.2.19
LIBDMG_TAG=dfd5e5cc3dc1191e37d3c3a6118975afdd1d7014
TXSOCKSX_TAG=216eb0894a1755872f4789f9458aa6cf543b8433 # unsigned habnabit/1.13.0.2
GOPTLIB_TAG=0.2
-MEEK_TAG=0.15
+MEEK_TAG=0.16
FAKETIME_TAG=70aa6b394d9341522dffe8a5a5cf5929e82cc6b9 # unsigned v0.9.6
GITIAN_TAG=tor-browser-builder-3.x-7
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index b970b51..2ef6e49 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -25,7 +25,7 @@ FTEPROXY_TAG=597f8378f6f4f3de570b8e1064c2e4cb8d67fbd0 # tag 0.2.19
LIBDMG_TAG=dfd5e5cc3dc1191e37d3c3a6118975afdd1d7014
TXSOCKSX_TAG=216eb0894a1755872f4789f9458aa6cf543b8433 # unsigned habnabit/1.13.0.2
GOPTLIB_TAG=0.2
-MEEK_TAG=0.15
+MEEK_TAG=0.16
FAKETIME_TAG=70aa6b394d9341522dffe8a5a5cf5929e82cc6b9 # unsigned v0.9.6
GITIAN_TAG=tor-browser-builder-3.x-7
diff --git a/gitian/versions.beta b/gitian/versions.beta
index 8aa5ea1..61c7c5b 100755
--- a/gitian/versions.beta
+++ b/gitian/versions.beta
@@ -25,7 +25,7 @@ FTEPROXY_TAG=597f8378f6f4f3de570b8e1064c2e4cb8d67fbd0 # tag 0.2.19
LIBDMG_TAG=dfd5e5cc3dc1191e37d3c3a6118975afdd1d7014
TXSOCKSX_TAG=216eb0894a1755872f4789f9458aa6cf543b8433 # unsigned habnabit/1.13.0.2
GOPTLIB_TAG=0.2
-MEEK_TAG=0.15
+MEEK_TAG=0.16
GITIAN_TAG=tor-browser-builder-3.x-6
1
0

[tor-browser-bundle/master] Use a SOCKS5 listener instead of a SOCKS4a for goptlib.
by gk@torproject.org 23 Mar '15
by gk@torproject.org 23 Mar '15
23 Mar '15
commit 9d26e0009fc6a8e89a48db2a976097459f14f45e
Author: Yawning Angel <yawning(a)schwanenlied.me>
Date: Mon Mar 23 01:02:39 2015 +0000
Use a SOCKS5 listener instead of a SOCKS4a for goptlib.
This is done in the form of a patch that has yet to be merged into
goptlib. Once the branch is merged, this change should be reverted,
and the goptlib tag updated.
---
.../linux/gitian-pluggable-transports.yml | 6 +
.../mac/gitian-pluggable-transports.yml | 6 +
.../windows/gitian-pluggable-transports.yml | 6 +
gitian/patches/bug12535.patch | 1032 ++++++++++++++++++++
4 files changed, 1050 insertions(+)
diff --git a/gitian/descriptors/linux/gitian-pluggable-transports.yml b/gitian/descriptors/linux/gitian-pluggable-transports.yml
index 9596b7f..2f8e70e 100644
--- a/gitian/descriptors/linux/gitian-pluggable-transports.yml
+++ b/gitian/descriptors/linux/gitian-pluggable-transports.yml
@@ -55,6 +55,7 @@ files:
- "openssl-linux32-utils.zip"
- "openssl-linux64-utils.zip"
- "go.net.tar.bz2"
+- "bug12535.patch"
script: |
INSTDIR="$HOME/install"
PTDIR="$INSTDIR/Tor/PluggableTransports"
@@ -206,6 +207,11 @@ script: |
# Building goptlib
cd goptlib
+ git update-index --refresh -q
+ export GIT_COMMITTER_NAME="nobody"
+ export GIT_COMMITTER_EMAIL="nobody@localhost"
+ export GIT_COMMITTER_DATE="$REFERENCE_DATETIME"
+ git am ~/build/bug12535.patch
find -type f | xargs touch --date="$REFERENCE_DATETIME"
mkdir -p "$GOPATH/src/git.torproject.org/pluggable-transports"
ln -sf "$PWD" "$GOPATH/src/git.torproject.org/pluggable-transports/goptlib.git"
diff --git a/gitian/descriptors/mac/gitian-pluggable-transports.yml b/gitian/descriptors/mac/gitian-pluggable-transports.yml
index a1bdff9..0ed896e 100644
--- a/gitian/descriptors/mac/gitian-pluggable-transports.yml
+++ b/gitian/descriptors/mac/gitian-pluggable-transports.yml
@@ -51,6 +51,7 @@ files:
- "multiarch-darwin11-cctools127.2-gcc42-5666.3-llvmgcc42-2336.1-Linux-120724.tar.xz"
- "dzip.sh"
- "go.net.tar.bz2"
+- "bug12535.patch"
- "gmp-mac64-utils.zip"
- "openssl-mac64-utils.zip"
script: |
@@ -232,6 +233,11 @@ script: |
# Building goptlib
cd goptlib
+ git update-index --refresh -q
+ export GIT_COMMITTER_NAME="nobody"
+ export GIT_COMMITTER_EMAIL="nobody@localhost"
+ export GIT_COMMITTER_DATE="$REFERENCE_DATETIME"
+ git am ~/build/bug12535.patch
find -type f | xargs touch --date="$REFERENCE_DATETIME"
mkdir -p "$GOPATH/src/git.torproject.org/pluggable-transports"
ln -sf "$PWD" "$GOPATH/src/git.torproject.org/pluggable-transports/goptlib.git"
diff --git a/gitian/descriptors/windows/gitian-pluggable-transports.yml b/gitian/descriptors/windows/gitian-pluggable-transports.yml
index 4ca477e..0ea6e6d 100644
--- a/gitian/descriptors/windows/gitian-pluggable-transports.yml
+++ b/gitian/descriptors/windows/gitian-pluggable-transports.yml
@@ -58,6 +58,7 @@ files:
- "gmp-win32-utils.zip"
- "gcclibs-win32-utils.zip"
- "go.net.tar.bz2"
+- "bug12535.patch"
script: |
# Set the timestamp on every .pyc file in a zip file, and re-dzip the zip file.
function py2exe_zip_timestomp {
@@ -308,6 +309,11 @@ script: |
# Building goptlib
cd goptlib
+ git update-index --refresh -q
+ export GIT_COMMITTER_NAME="nobody"
+ export GIT_COMMITTER_EMAIL="nobody@localhost"
+ export GIT_COMMITTER_DATE="$REFERENCE_DATETIME"
+ git am ~/build/bug12535.patch
find -type f | xargs touch --date="$REFERENCE_DATETIME"
mkdir -p "$GOPATH/src/git.torproject.org/pluggable-transports"
ln -sf "$PWD" "$GOPATH/src/git.torproject.org/pluggable-transports/goptlib.git"
diff --git a/gitian/patches/bug12535.patch b/gitian/patches/bug12535.patch
new file mode 100644
index 0000000..dae6818
--- /dev/null
+++ b/gitian/patches/bug12535.patch
@@ -0,0 +1,1032 @@
+From 743ae58b6c33dda837ffb1267867f564597dd59d Mon Sep 17 00:00:00 2001
+From: Yawning Angel <yawning(a)schwanenlied.me>
+Date: Mon, 8 Sep 2014 18:24:08 +0000
+Subject: [PATCH] Replace the SOCKS4a listener with a SOCKS5 listener.
+
+The change is designed to be transparent to calling code and implements
+enough of RFC1928/RFC1929 such that pluggable transports can be written.
+
+Notable incompatibilities/limitations:
+ * GSSAPI authentication is not supported.
+ * BND.ADDR/BND.PORT in responses is always "0.0.0.0:0" instead of the
+ bound address/port of the outgoing socket.
+ * RFC1929 Username/Password authentication is setup exclusively for
+ pluggable transport arguments.
+ * The BIND and UDP ASSOCIATE commands are not supported.
+---
+ pt.go | 5 +-
+ socks.go | 386 +++++++++++++++++++++++++++++++++++++-------
+ socks_test.go | 510 +++++++++++++++++++++++++++++++++++++++++-----------------
+ 3 files changed, 685 insertions(+), 216 deletions(-)
+
+diff --git a/pt.go b/pt.go
+index 62dfc38..47f8273 100644
+--- a/pt.go
++++ b/pt.go
+@@ -119,10 +119,11 @@
+ // Extended ORPort Authentication:
+ // https://gitweb.torproject.org/torspec.git/blob/HEAD:/proposals/217-ext-orpo….
+ //
+-// The package implements a SOCKS4a server sufficient for a Tor client transport
++// The package implements a SOCKS5 server sufficient for a Tor client transport
+ // plugin.
+ //
+-// http://ftp.icm.edu.pl/packages/socks/socks4/SOCKS4.protocol
++// https://www.ietf.org/rfc/rfc1928.txt
++// https://www.ietf.org/rfc/rfc1929.txt
+ package pt
+
+ import (
+diff --git a/socks.go b/socks.go
+index 6ad6542..e4488e8 100644
+--- a/socks.go
++++ b/socks.go
+@@ -9,11 +9,40 @@ import (
+ )
+
+ const (
+- socksVersion = 0x04
+- socksCmdConnect = 0x01
+- socksResponseVersion = 0x00
+- socksRequestGranted = 0x5a
+- socksRequestRejected = 0x5b
++ socksVersion = 0x05
++
++ socksAuthNoneRequired = 0x00
++ socksAuthUsernamePassword = 0x02
++ socksAuthNoAcceptableMethods = 0xff
++
++ socksCmdConnect = 0x01
++ socksRsv = 0x00
++
++ socksAtypeV4 = 0x01
++ socksAtypeDomainName = 0x03
++ socksAtypeV6 = 0x04
++
++ socksAuthRFC1929Ver = 0x01
++ socksAuthRFC1929Success = 0x00
++ socksAuthRFC1929Fail = 0x01
++
++ socksRepSucceeded = 0x00
++ // "general SOCKS server failure"
++ SocksRepGeneralFailure = 0x01
++ // "connection not allowed by ruleset"
++ SocksRepConnectionNotAllowed = 0x02
++ // "Network unreachable"
++ SocksRepNetworkUnreachable = 0x03
++ // "Host unreachable"
++ SocksRepHostUnreachable = 0x04
++ // "Connection refused"
++ SocksRepConnectionRefused = 0x05
++ // "TTL expired"
++ SocksRepTTLExpired = 0x06
++ // "Command not supported"
++ SocksRepCommandNotSupported = 0x07
++ // "Address type not supported"
++ SocksRepAddressNotSupported = 0x08
+ )
+
+ // Put a sanity timeout on how long we wait for a SOCKS request.
+@@ -25,6 +54,8 @@ type SocksRequest struct {
+ Target string
+ // The userid string sent by the client.
+ Username string
++ // The password string sent by the client.
++ Password string
+ // The parsed contents of Username as a key–value mapping.
+ Args Args
+ }
+@@ -36,15 +67,23 @@ type SocksConn struct {
+ }
+
+ // Send a message to the proxy client that access to the given address is
+-// granted. If the IP field inside addr is not an IPv4 address, the IP portion
+-// of the response will be four zero bytes.
++// granted. Addr is ignored, and "0.0.0.0:0" is always sent back for
++// BND.ADDR/BND.PORT in the SOCKS response.
+ func (conn *SocksConn) Grant(addr *net.TCPAddr) error {
+- return sendSocks4aResponseGranted(conn, addr)
++ return sendSocks5ResponseGranted(conn)
+ }
+
+-// Send a message to the proxy client that access was rejected or failed.
++// Send a message to the proxy client that access was rejected or failed. This
++// sends back a "General Failure" error code. RejectReason should be used if
++// more specific error reporting is desired.
+ func (conn *SocksConn) Reject() error {
+- return sendSocks4aResponseRejected(conn)
++ return conn.RejectReason(SocksRepGeneralFailure)
++}
++
++// Send a message to the proxy client that access was rejected, with the
++// specific error code indicating the reason behind the rejection.
++func (conn *SocksConn) RejectReason(reason byte) error {
++ return sendSocks5ResponseRejected(conn, reason)
+ }
+
+ // SocksListener wraps a net.Listener in order to read a SOCKS request on Accept.
+@@ -138,7 +177,7 @@ func (ln *SocksListener) AcceptSocks() (*SocksConn, error) {
+ if err != nil {
+ return nil, err
+ }
+- conn.Req, err = readSocks4aConnect(conn)
++ conn.Req, err = socks5Handshake(conn)
+ if err != nil {
+ conn.Close()
+ return nil, err
+@@ -150,58 +189,251 @@ func (ln *SocksListener) AcceptSocks() (*SocksConn, error) {
+ return conn, nil
+ }
+
+-// Returns "socks4", suitable to be included in a call to Cmethod.
++// Returns "socks5", suitable to be included in a call to Cmethod.
+ func (ln *SocksListener) Version() string {
+- return "socks4"
++ return "socks5"
+ }
+
+-// Read a SOCKS4a connect request. Returns a SocksRequest.
+-func readSocks4aConnect(s io.Reader) (req SocksRequest, err error) {
+- r := bufio.NewReader(s)
++// socks5handshake conducts the SOCKS5 handshake up to the point where the
++// client command is read and the proxy must open the outgoing connection.
++// Returns a SocksRequest.
++func socks5Handshake(s io.ReadWriter) (req SocksRequest, err error) {
++ rw := bufio.NewReadWriter(bufio.NewReader(s), bufio.NewWriter(s))
+
+- var h [8]byte
+- _, err = io.ReadFull(r, h[:])
+- if err != nil {
++ // Negotiate the authentication method.
++ var method byte
++ if method, err = socksNegotiateAuth(rw); err != nil {
+ return
+ }
+- if h[0] != socksVersion {
+- err = fmt.Errorf("SOCKS header had version 0x%02x, not 0x%02x", h[0], socksVersion)
++
++ // Authenticate the client.
++ if err = socksAuthenticate(rw, method, &req); err != nil {
+ return
+ }
+- if h[1] != socksCmdConnect {
+- err = fmt.Errorf("SOCKS header had command 0x%02x, not 0x%02x", h[1], socksCmdConnect)
++
++ // Read the command.
++ err = socksReadCommand(rw, &req)
++ return
++}
++
++// socksNegotiateAuth negotiates the authentication method and returns the
++// selected method as a byte. On negotiation failures an error is returned.
++func socksNegotiateAuth(rw *bufio.ReadWriter) (method byte, err error) {
++ // Validate the version.
++ if err = socksReadByteVerify(rw, "version", socksVersion); err != nil {
+ return
+ }
+
+- var usernameBytes []byte
+- usernameBytes, err = r.ReadBytes('\x00')
+- if err != nil {
++ // Read the number of methods.
++ var nmethods byte
++ if nmethods, err = socksReadByte(rw); err != nil {
+ return
+ }
+- req.Username = string(usernameBytes[:len(usernameBytes)-1])
+
+- req.Args, err = parseClientParameters(req.Username)
+- if err != nil {
++ // Read the methods.
++ var methods []byte
++ if methods, err = socksReadBytes(rw, int(nmethods)); err != nil {
+ return
+ }
+
+- var port int
+- var host string
++ // Pick the most "suitable" method.
++ method = socksAuthNoAcceptableMethods
++ for _, m := range methods {
++ switch m {
++ case socksAuthNoneRequired:
++ // Pick Username/Password over None if the client happens to
++ // send both.
++ if method == socksAuthNoAcceptableMethods {
++ method = m
++ }
++
++ case socksAuthUsernamePassword:
++ method = m
++ }
++ }
++
++ // Send the negotiated method.
++ var msg [2]byte
++ msg[0] = socksVersion
++ msg[1] = method
++ if _, err = rw.Writer.Write(msg[:]); err != nil {
++ return
++ }
++
++ if err = socksFlushBuffers(rw); err != nil {
++ return
++ }
++ return
++}
++
++// socksAuthenticate authenticates the client via the chosen authentication
++// mechanism.
++func socksAuthenticate(rw *bufio.ReadWriter, method byte, req *SocksRequest) (err error) {
++ switch method {
++ case socksAuthNoneRequired:
++ // Straight into reading the connect.
+
+- port = int(h[2])<<8 | int(h[3])<<0
+- if h[4] == 0 && h[5] == 0 && h[6] == 0 && h[7] != 0 {
+- var hostBytes []byte
+- hostBytes, err = r.ReadBytes('\x00')
+- if err != nil {
++ case socksAuthUsernamePassword:
++ if err = socksAuthRFC1929(rw, req); err != nil {
+ return
+ }
+- host = string(hostBytes[:len(hostBytes)-1])
++
++ case socksAuthNoAcceptableMethods:
++ err = fmt.Errorf("SOCKS method select had no compatible methods")
++ return
++
++ default:
++ err = fmt.Errorf("SOCKS method select picked a unsupported method 0x%02x", method)
++ return
++ }
++
++ if err = socksFlushBuffers(rw); err != nil {
++ return
++ }
++ return
++}
++
++// socksAuthRFC1929 authenticates the client via RFC 1929 username/password
++// auth. As a design decision any valid username/password is accepted as this
++// field is primarily used as an out-of-band argument passing mechanism for
++// pluggable transports.
++func socksAuthRFC1929(rw *bufio.ReadWriter, req *SocksRequest) (err error) {
++ sendErrResp := func() {
++ // Swallow the write/flush error here, we are going to close the
++ // connection and the original failure is more useful.
++ resp := []byte{socksAuthRFC1929Ver, socksAuthRFC1929Fail}
++ rw.Write(resp[:])
++ socksFlushBuffers(rw)
++ }
++
++ // Validate the fixed parts of the command message.
++ if err = socksReadByteVerify(rw, "auth version", socksAuthRFC1929Ver); err != nil {
++ sendErrResp()
++ return
++ }
++
++ // Read the username.
++ var ulen byte
++ if ulen, err = socksReadByte(rw); err != nil {
++ return
++ }
++ if ulen < 1 {
++ sendErrResp()
++ err = fmt.Errorf("RFC1929 username with 0 length")
++ return
++ }
++ var uname []byte
++ if uname, err = socksReadBytes(rw, int(ulen)); err != nil {
++ return
++ }
++ req.Username = string(uname)
++
++ // Read the password.
++ var plen byte
++ if plen, err = socksReadByte(rw); err != nil {
++ return
++ }
++ if plen < 1 {
++ sendErrResp()
++ err = fmt.Errorf("RFC1929 password with 0 length")
++ return
++ }
++ var passwd []byte
++ if passwd, err = socksReadBytes(rw, int(plen)); err != nil {
++ return
++ }
++ if !(plen == 1 && passwd[0] == 0x00) {
++ // tor will set the password to 'NUL' if there are no arguments.
++ req.Password = string(passwd)
++ }
++
++ // Mash the username/password together and parse it as a pluggable
++ // transport argument string.
++ if req.Args, err = parseClientParameters(req.Username + req.Password); err != nil {
++ sendErrResp()
+ } else {
+- host = net.IPv4(h[4], h[5], h[6], h[7]).String()
++ resp := []byte{socksAuthRFC1929Ver, socksAuthRFC1929Success}
++ _, err = rw.Write(resp[:])
++ }
++ return
++}
++
++// socksReadCommand reads a SOCKS5 client command and parses out the relevant
++// fields into a SocksRequest. Only CMD_CONNECT is supported.
++func socksReadCommand(rw *bufio.ReadWriter, req *SocksRequest) (err error) {
++ sendErrResp := func(reason byte) {
++ // Swallow errors that occur when writing/flushing the response,
++ // connection will be closed anyway.
++ sendSocks5ResponseRejected(rw, reason)
++ socksFlushBuffers(rw)
++ }
++
++ // Validate the fixed parts of the command message.
++ if err = socksReadByteVerify(rw, "version", socksVersion); err != nil {
++ sendErrResp(SocksRepGeneralFailure)
++ return
++ }
++ if err = socksReadByteVerify(rw, "command", socksCmdConnect); err != nil {
++ sendErrResp(SocksRepCommandNotSupported)
++ return
++ }
++ if err = socksReadByteVerify(rw, "reserved", socksRsv); err != nil {
++ sendErrResp(SocksRepGeneralFailure)
++ return
++ }
++
++ // Read the destination address/port.
++ // XXX: This should probably eventually send socks 5 error messages instead
++ // of rudely closing connections on invalid addresses.
++ var atype byte
++ if atype, err = socksReadByte(rw); err != nil {
++ return
++ }
++ var host string
++ switch atype {
++ case socksAtypeV4:
++ var addr []byte
++ if addr, err = socksReadBytes(rw, net.IPv4len); err != nil {
++ return
++ }
++ host = net.IPv4(addr[0], addr[1], addr[2], addr[3]).String()
++
++ case socksAtypeDomainName:
++ var alen byte
++ if alen, err = socksReadByte(rw); err != nil {
++ return
++ }
++ if alen == 0 {
++ err = fmt.Errorf("SOCKS request had domain name with 0 length")
++ return
++ }
++ var addr []byte
++ if addr, err = socksReadBytes(rw, int(alen)); err != nil {
++ return
++ }
++ host = string(addr)
++
++ case socksAtypeV6:
++ var rawAddr []byte
++ if rawAddr, err = socksReadBytes(rw, net.IPv6len); err != nil {
++ return
++ }
++ addr := make(net.IP, net.IPv6len)
++ copy(addr[:], rawAddr[:])
++ host = fmt.Sprintf("[%s]", addr.String())
++
++ default:
++ sendErrResp(SocksRepAddressNotSupported)
++ err = fmt.Errorf("SOCKS request had unsupported address type 0x%02x", atype)
++ return
+ }
++ var rawPort []byte
++ if rawPort, err = socksReadBytes(rw, 2); err != nil {
++ return
++ }
++ port := int(rawPort[0])<<8 | int(rawPort[1])<<0
+
+- if r.Buffered() != 0 {
+- err = fmt.Errorf("%d bytes left after SOCKS header", r.Buffered())
++ if err = socksFlushBuffers(rw); err != nil {
+ return
+ }
+
+@@ -209,34 +441,64 @@ func readSocks4aConnect(s io.Reader) (req SocksRequest, err error) {
+ return
+ }
+
+-// Send a SOCKS4a response with the given code and address. If the IP field
+-// inside addr is not an IPv4 address, the IP portion of the response will be
+-// four zero bytes.
+-func sendSocks4aResponse(w io.Writer, code byte, addr *net.TCPAddr) error {
+- var resp [8]byte
+- resp[0] = socksResponseVersion
++// Send a SOCKS5 response with the given code. BND.ADDR/BND.PORT is always the
++// IPv4 address/port "0.0.0.0:0".
++func sendSocks5Response(w io.Writer, code byte) error {
++ resp := make([]byte, 4+4+2)
++ resp[0] = socksVersion
+ resp[1] = code
+- resp[2] = byte((addr.Port >> 8) & 0xff)
+- resp[3] = byte((addr.Port >> 0) & 0xff)
+- ipv4 := addr.IP.To4()
+- if ipv4 != nil {
+- resp[4] = ipv4[0]
+- resp[5] = ipv4[1]
+- resp[6] = ipv4[2]
+- resp[7] = ipv4[3]
+- }
++ resp[2] = socksRsv
++ resp[3] = socksAtypeV4
++
++ // BND.ADDR/BND.PORT should be the address and port that the outgoing
++ // connection is bound to on the proxy, but Tor does not use this
++ // information, so all zeroes are sent.
++
+ _, err := w.Write(resp[:])
+ return err
+ }
+
+-var emptyAddr = net.TCPAddr{IP: net.IPv4(0, 0, 0, 0), Port: 0}
++// Send a SOCKS5 response code 0x00.
++func sendSocks5ResponseGranted(w io.Writer) error {
++ return sendSocks5Response(w, socksRepSucceeded)
++}
+
+-// Send a SOCKS4a response code 0x5a.
+-func sendSocks4aResponseGranted(w io.Writer, addr *net.TCPAddr) error {
+- return sendSocks4aResponse(w, socksRequestGranted, addr)
++// Send a SOCKS5 response with the provided failure reason.
++func sendSocks5ResponseRejected(w io.Writer, reason byte) error {
++ return sendSocks5Response(w, reason)
+ }
+
+-// Send a SOCKS4a response code 0x5b (with an all-zero address).
+-func sendSocks4aResponseRejected(w io.Writer) error {
+- return sendSocks4aResponse(w, socksRequestRejected, &emptyAddr)
++func socksFlushBuffers(rw *bufio.ReadWriter) error {
++ if err := rw.Writer.Flush(); err != nil {
++ return err
++ }
++ if rw.Reader.Buffered() > 0 {
++ return fmt.Errorf("%d bytes left after SOCKS message", rw.Reader.Buffered())
++ }
++ return nil
++}
++
++func socksReadByte(rw *bufio.ReadWriter) (byte, error) {
++ return rw.Reader.ReadByte()
++}
++
++func socksReadBytes(rw *bufio.ReadWriter, n int) ([]byte, error) {
++ ret := make([]byte, n)
++ if _, err := io.ReadFull(rw.Reader, ret); err != nil {
++ return nil, err
++ }
++ return ret, nil
+ }
++
++func socksReadByteVerify(rw *bufio.ReadWriter, descr string, expected byte) error {
++ val, err := socksReadByte(rw)
++ if err != nil {
++ return err
++ }
++ if val != expected {
++ return fmt.Errorf("SOCKS message field %s was 0x%02x, not 0x%02x", descr, val, expected)
++ }
++ return nil
++}
++
++var _ net.Listener = (*SocksListener)(nil)
+diff --git a/socks_test.go b/socks_test.go
+index 18d141a..aa27d4c 100644
+--- a/socks_test.go
++++ b/socks_test.go
+@@ -1,162 +1,368 @@
+ package pt
+
+ import (
++ "bufio"
+ "bytes"
++ "encoding/hex"
++ "io"
+ "net"
+ "testing"
+ )
+
+-func TestReadSocks4aConnect(t *testing.T) {
+- badTests := [...][]byte{
+- []byte(""),
+- // missing userid
+- []byte("\x04\x01\x12\x34\x01\x02\x03\x04"),
+- // missing \x00 after userid
+- []byte("\x04\x01\x12\x34\x01\x02\x03\x04key=value"),
+- // missing hostname
+- []byte("\x04\x01\x12\x34\x00\x00\x00\x01key=value\x00"),
+- // missing \x00 after hostname
+- []byte("\x04\x01\x12\x34\x00\x00\x00\x01key=value\x00hostname"),
+- // bad name–value mapping
+- []byte("\x04\x01\x12\x34\x00\x00\x00\x01userid\x00hostname\x00"),
+- // bad version number
+- []byte("\x03\x01\x12\x34\x01\x02\x03\x04\x00"),
+- // BIND request
+- []byte("\x04\x02\x12\x34\x01\x02\x03\x04\x00"),
+- // SOCKS5
+- []byte("\x05\x01\x00"),
+- }
+- ipTests := [...]struct {
+- input []byte
+- addr net.TCPAddr
+- userid string
+- }{
+- {
+- []byte("\x04\x01\x12\x34\x01\x02\x03\x04key=value\x00"),
+- net.TCPAddr{IP: net.ParseIP("1.2.3.4"), Port: 0x1234},
+- "key=value",
+- },
+- {
+- []byte("\x04\x01\x12\x34\x01\x02\x03\x04\x00"),
+- net.TCPAddr{IP: net.ParseIP("1.2.3.4"), Port: 0x1234},
+- "",
+- },
+- }
+- hostnameTests := [...]struct {
+- input []byte
+- target string
+- userid string
+- }{
+- {
+- []byte("\x04\x01\x12\x34\x00\x00\x00\x01key=value\x00hostname\x00"),
+- "hostname:4660",
+- "key=value",
+- },
+- {
+- []byte("\x04\x01\x12\x34\x00\x00\x00\x01\x00hostname\x00"),
+- "hostname:4660",
+- "",
+- },
+- {
+- []byte("\x04\x01\x12\x34\x00\x00\x00\x01key=value\x00\x00"),
+- ":4660",
+- "key=value",
+- },
+- {
+- []byte("\x04\x01\x12\x34\x00\x00\x00\x01\x00\x00"),
+- ":4660",
+- "",
+- },
+- }
+-
+- for _, input := range badTests {
+- var buf bytes.Buffer
+- buf.Write(input)
+- _, err := readSocks4aConnect(&buf)
+- if err == nil {
+- t.Errorf("%q unexpectedly succeeded", input)
+- }
+- }
+-
+- for _, test := range ipTests {
+- var buf bytes.Buffer
+- buf.Write(test.input)
+- req, err := readSocks4aConnect(&buf)
+- if err != nil {
+- t.Errorf("%q unexpectedly returned an error: %s", test.input, err)
+- }
+- addr, err := net.ResolveTCPAddr("tcp", req.Target)
+- if err != nil {
+- t.Errorf("%q → target %q: cannot resolve: %s", test.input,
+- req.Target, err)
+- }
+- if !tcpAddrsEqual(addr, &test.addr) {
+- t.Errorf("%q → address %s (expected %s)", test.input,
+- req.Target, test.addr.String())
+- }
+- if req.Username != test.userid {
+- t.Errorf("%q → username %q (expected %q)", test.input,
+- req.Username, test.userid)
+- }
+- if req.Args == nil {
+- t.Errorf("%q → unexpected nil Args from username %q", test.input, req.Username)
+- }
+- }
+-
+- for _, test := range hostnameTests {
+- var buf bytes.Buffer
+- buf.Write(test.input)
+- req, err := readSocks4aConnect(&buf)
+- if err != nil {
+- t.Errorf("%q unexpectedly returned an error: %s", test.input, err)
+- }
+- if req.Target != test.target {
+- t.Errorf("%q → target %q (expected %q)", test.input,
+- req.Target, test.target)
+- }
+- if req.Username != test.userid {
+- t.Errorf("%q → username %q (expected %q)", test.input,
+- req.Username, test.userid)
+- }
+- if req.Args == nil {
+- t.Errorf("%q → unexpected nil Args from username %q", test.input, req.Username)
+- }
+- }
+-}
+-
+-func TestSendSocks4aResponse(t *testing.T) {
+- tests := [...]struct {
+- code byte
+- addr net.TCPAddr
+- expected []byte
+- }{
+- {
+- socksRequestGranted,
+- net.TCPAddr{IP: net.ParseIP("1.2.3.4"), Port: 0x1234},
+- []byte("\x00\x5a\x12\x34\x01\x02\x03\x04"),
+- },
+- {
+- socksRequestRejected,
+- net.TCPAddr{IP: net.ParseIP("1:2::3:4"), Port: 0x1234},
+- []byte("\x00\x5b\x12\x34\x00\x00\x00\x00"),
+- },
+- }
+-
+- for _, test := range tests {
+- var buf bytes.Buffer
+- err := sendSocks4aResponse(&buf, test.code, &test.addr)
+- if err != nil {
+- t.Errorf("0x%02x %s unexpectedly returned an error: %s", test.code, &test.addr, err)
+- }
+- p := make([]byte, 1024)
+- n, err := buf.Read(p)
+- if err != nil {
+- t.Fatal(err)
+- }
+- output := p[:n]
+- if !bytes.Equal(output, test.expected) {
+- t.Errorf("0x%02x %s → %v (expected %v)",
+- test.code, &test.addr, output, test.expected)
+- }
++// testReadWriter is a bytes.Buffer backed io.ReadWriter used for testing. The
++// Read and Write routines are to be used by the component being tested. Data
++// can be written to and read back via the writeHex and readHex routines.
++type testReadWriter struct {
++ readBuf bytes.Buffer
++ writeBuf bytes.Buffer
++}
++
++func (c *testReadWriter) Read(buf []byte) (n int, err error) {
++ return c.readBuf.Read(buf)
++}
++
++func (c *testReadWriter) Write(buf []byte) (n int, err error) {
++ return c.writeBuf.Write(buf)
++}
++
++func (c *testReadWriter) writeHex(str string) (n int, err error) {
++ var buf []byte
++ if buf, err = hex.DecodeString(str); err != nil {
++ return
++ }
++ return c.readBuf.Write(buf)
++}
++
++func (c *testReadWriter) readHex() string {
++ return hex.EncodeToString(c.writeBuf.Bytes())
++}
++
++func (c *testReadWriter) toBufio() *bufio.ReadWriter {
++ return bufio.NewReadWriter(bufio.NewReader(c), bufio.NewWriter(c))
++}
++
++func (c *testReadWriter) reset() {
++ c.readBuf.Reset()
++ c.writeBuf.Reset()
++}
++
++// TestAuthInvalidVersion tests auth negotiation with an invalid version.
++func TestAuthInvalidVersion(t *testing.T) {
++ c := new(testReadWriter)
++
++ // VER = 03, NMETHODS = 01, METHODS = [00]
++ c.writeHex("030100")
++ if _, err := socksNegotiateAuth(c.toBufio()); err == nil {
++ t.Error("socksNegotiateAuth(InvalidVersion) succeded")
++ }
++}
++
++// TestAuthInvalidNMethods tests auth negotiaton with no methods.
++func TestAuthInvalidNMethods(t *testing.T) {
++ c := new(testReadWriter)
++ var err error
++ var method byte
++
++ // VER = 05, NMETHODS = 00
++ c.writeHex("0500")
++ if method, err = socksNegotiateAuth(c.toBufio()); err != nil {
++ t.Error("socksNegotiateAuth(No Methods) failed:", err)
++ }
++ if method != socksAuthNoAcceptableMethods {
++ t.Error("socksNegotiateAuth(No Methods) picked unexpected method:", method)
++ }
++ if msg := c.readHex(); msg != "05ff" {
++ t.Error("socksNegotiateAuth(No Methods) invalid response:", msg)
++ }
++}
++
++// TestAuthNoneRequired tests auth negotiaton with NO AUTHENTICATION REQUIRED.
++func TestAuthNoneRequired(t *testing.T) {
++ c := new(testReadWriter)
++ var err error
++ var method byte
++
++ // VER = 05, NMETHODS = 01, METHODS = [00]
++ c.writeHex("050100")
++ if method, err = socksNegotiateAuth(c.toBufio()); err != nil {
++ t.Error("socksNegotiateAuth(None) failed:", err)
++ }
++ if method != socksAuthNoneRequired {
++ t.Error("socksNegotiateAuth(None) unexpected method:", method)
++ }
++ if msg := c.readHex(); msg != "0500" {
++ t.Error("socksNegotiateAuth(None) invalid response:", msg)
++ }
++}
++
++// TestAuthUsernamePassword tests auth negotiation with USERNAME/PASSWORD.
++func TestAuthUsernamePassword(t *testing.T) {
++ c := new(testReadWriter)
++ var err error
++ var method byte
++
++ // VER = 05, NMETHODS = 01, METHODS = [02]
++ c.writeHex("050102")
++ if method, err = socksNegotiateAuth(c.toBufio()); err != nil {
++ t.Error("socksNegotiateAuth(UsernamePassword) failed:", err)
++ }
++ if method != socksAuthUsernamePassword {
++ t.Error("socksNegotiateAuth(UsernamePassword) unexpected method:", method)
++ }
++ if msg := c.readHex(); msg != "0502" {
++ t.Error("socksNegotiateAuth(UsernamePassword) invalid response:", msg)
+ }
+ }
++
++// TestAuthBoth tests auth negotiation containing both NO AUTHENTICATION
++// REQUIRED and USERNAME/PASSWORD.
++func TestAuthBoth(t *testing.T) {
++ c := new(testReadWriter)
++ var err error
++ var method byte
++
++ // VER = 05, NMETHODS = 02, METHODS = [00, 02]
++ c.writeHex("05020002")
++ if method, err = socksNegotiateAuth(c.toBufio()); err != nil {
++ t.Error("socksNegotiateAuth(Both) failed:", err)
++ }
++ if method != socksAuthUsernamePassword {
++ t.Error("socksNegotiateAuth(Both) unexpected method:", method)
++ }
++ if msg := c.readHex(); msg != "0502" {
++ t.Error("socksNegotiateAuth(Both) invalid response:", msg)
++ }
++}
++
++// TestAuthUnsupported tests auth negotiation with a unsupported method.
++func TestAuthUnsupported(t *testing.T) {
++ c := new(testReadWriter)
++ var err error
++ var method byte
++
++ // VER = 05, NMETHODS = 01, METHODS = [01] (GSSAPI)
++ c.writeHex("050101")
++ if method, err = socksNegotiateAuth(c.toBufio()); err != nil {
++ t.Error("socksNegotiateAuth(Unknown) failed:", err)
++ }
++ if method != socksAuthNoAcceptableMethods {
++ t.Error("socksNegotiateAuth(Unknown) picked unexpected method:", method)
++ }
++ if msg := c.readHex(); msg != "05ff" {
++ t.Error("socksNegotiateAuth(Unknown) invalid response:", msg)
++ }
++}
++
++// TestAuthUnsupported2 tests auth negotiation with supported and unsupported
++// methods.
++func TestAuthUnsupported2(t *testing.T) {
++ c := new(testReadWriter)
++ var err error
++ var method byte
++
++ // VER = 05, NMETHODS = 03, METHODS = [00,01,02]
++ c.writeHex("0503000102")
++ if method, err = socksNegotiateAuth(c.toBufio()); err != nil {
++ t.Error("socksNegotiateAuth(Unknown2) failed:", err)
++ }
++ if method != socksAuthUsernamePassword {
++ t.Error("socksNegotiateAuth(Unknown2) picked unexpected method:", method)
++ }
++ if msg := c.readHex(); msg != "0502" {
++ t.Error("socksNegotiateAuth(Unknown2) invalid response:", msg)
++ }
++}
++
++// TestRFC1929InvalidVersion tests RFC1929 auth with an invalid version.
++func TestRFC1929InvalidVersion(t *testing.T) {
++ c := new(testReadWriter)
++ var req SocksRequest
++
++ // VER = 03, ULEN = 5, UNAME = "ABCDE", PLEN = 5, PASSWD = "abcde"
++ c.writeHex("03054142434445056162636465")
++ if err := socksAuthenticate(c.toBufio(), socksAuthUsernamePassword, &req); err == nil {
++ t.Error("socksAuthenticate(InvalidVersion) succeded")
++ }
++ if msg := c.readHex(); msg != "0101" {
++ t.Error("socksAuthenticate(InvalidVersion) invalid response:", msg)
++ }
++}
++
++// TestRFC1929InvalidUlen tests RFC1929 auth with an invalid ULEN.
++func TestRFC1929InvalidUlen(t *testing.T) {
++ c := new(testReadWriter)
++ var req SocksRequest
++
++ // VER = 01, ULEN = 0, UNAME = "", PLEN = 5, PASSWD = "abcde"
++ c.writeHex("0100056162636465")
++ if err := socksAuthenticate(c.toBufio(), socksAuthUsernamePassword, &req); err == nil {
++ t.Error("socksAuthenticate(InvalidUlen) succeded")
++ }
++ if msg := c.readHex(); msg != "0101" {
++ t.Error("socksAuthenticate(InvalidUlen) invalid response:", msg)
++ }
++}
++
++// TestRFC1929InvalidPlen tests RFC1929 auth with an invalid PLEN.
++func TestRFC1929InvalidPlen(t *testing.T) {
++ c := new(testReadWriter)
++ var req SocksRequest
++
++ // VER = 01, ULEN = 5, UNAME = "ABCDE", PLEN = 0, PASSWD = ""
++ c.writeHex("0105414243444500")
++ if err := socksAuthenticate(c.toBufio(), socksAuthUsernamePassword, &req); err == nil {
++ t.Error("socksAuthenticate(InvalidPlen) succeded")
++ }
++ if msg := c.readHex(); msg != "0101" {
++ t.Error("socksAuthenticate(InvalidPlen) invalid response:", msg)
++ }
++}
++
++// TestRFC1929InvalidArgs tests RFC1929 auth with invalid pt args.
++func TestRFC1929InvalidPTArgs(t *testing.T) {
++ c := new(testReadWriter)
++ var req SocksRequest
++
++ // VER = 01, ULEN = 5, UNAME = "ABCDE", PLEN = 5, PASSWD = "abcde"
++ c.writeHex("01054142434445056162636465")
++ if err := socksAuthenticate(c.toBufio(), socksAuthUsernamePassword, &req); err == nil {
++ t.Error("socksAuthenticate(InvalidArgs) succeded")
++ }
++ if msg := c.readHex(); msg != "0101" {
++ t.Error("socksAuthenticate(InvalidArgs) invalid response:", msg)
++ }
++}
++
++// TestRFC1929Success tests RFC1929 auth with valid pt args.
++func TestRFC1929Success(t *testing.T) {
++ c := new(testReadWriter)
++ var req SocksRequest
++
++ // VER = 01, ULEN = 9, UNAME = "key=value", PLEN = 1, PASSWD = "\0"
++ c.writeHex("01096b65793d76616c75650100")
++ if err := socksAuthenticate(c.toBufio(), socksAuthUsernamePassword, &req); err != nil {
++ t.Error("socksAuthenticate(Success) failed:", err)
++ }
++ if msg := c.readHex(); msg != "0100" {
++ t.Error("socksAuthenticate(Success) invalid response:", msg)
++ }
++ v, ok := req.Args.Get("key")
++ if v != "value" || !ok {
++ t.Error("RFC1929 k,v parse failure:", v)
++ }
++}
++
++// TestRequestInvalidHdr tests SOCKS5 requests with invalid VER/CMD/RSV/ATYPE
++func TestRequestInvalidHdr(t *testing.T) {
++ c := new(testReadWriter)
++ var req SocksRequest
++
++ // VER = 03, CMD = 01, RSV = 00, ATYPE = 01, DST.ADDR = 127.0.0.1, DST.PORT = 9050
++ c.writeHex("030100017f000001235a")
++ if err := socksReadCommand(c.toBufio(), &req); err == nil {
++ t.Error("socksReadCommand(InvalidVer) succeded")
++ }
++ if msg := c.readHex(); msg != "05010001000000000000" {
++ t.Error("socksReadCommand(InvalidVer) invalid response:", msg)
++ }
++ c.reset()
++
++ // VER = 05, CMD = 05, RSV = 00, ATYPE = 01, DST.ADDR = 127.0.0.1, DST.PORT = 9050
++ c.writeHex("050500017f000001235a")
++ if err := socksReadCommand(c.toBufio(), &req); err == nil {
++ t.Error("socksReadCommand(InvalidCmd) succeded")
++ }
++ if msg := c.readHex(); msg != "05070001000000000000" {
++ t.Error("socksReadCommand(InvalidCmd) invalid response:", msg)
++ }
++ c.reset()
++
++ // VER = 05, CMD = 01, RSV = 30, ATYPE = 01, DST.ADDR = 127.0.0.1, DST.PORT = 9050
++ c.writeHex("050130017f000001235a")
++ if err := socksReadCommand(c.toBufio(), &req); err == nil {
++ t.Error("socksReadCommand(InvalidRsv) succeded")
++ }
++ if msg := c.readHex(); msg != "05010001000000000000" {
++ t.Error("socksReadCommand(InvalidRsv) invalid response:", msg)
++ }
++ c.reset()
++
++ // VER = 05, CMD = 01, RSV = 01, ATYPE = 05, DST.ADDR = 127.0.0.1, DST.PORT = 9050
++ c.writeHex("050100057f000001235a")
++ if err := socksReadCommand(c.toBufio(), &req); err == nil {
++ t.Error("socksReadCommand(InvalidAtype) succeded")
++ }
++ if msg := c.readHex(); msg != "05080001000000000000" {
++ t.Error("socksAuthenticate(InvalidAtype) invalid response:", msg)
++ }
++ c.reset()
++}
++
++// TestRequestIPv4 tests IPv4 SOCKS5 requests.
++func TestRequestIPv4(t *testing.T) {
++ c := new(testReadWriter)
++ var req SocksRequest
++
++ // VER = 05, CMD = 01, RSV = 00, ATYPE = 01, DST.ADDR = 127.0.0.1, DST.PORT = 9050
++ c.writeHex("050100017f000001235a")
++ if err := socksReadCommand(c.toBufio(), &req); err != nil {
++ t.Error("socksReadCommand(IPv4) failed:", err)
++ }
++ addr, err := net.ResolveTCPAddr("tcp", req.Target)
++ if err != nil {
++ t.Error("net.ResolveTCPAddr failed:", err)
++ }
++ if !tcpAddrsEqual(addr, &net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: 9050}) {
++ t.Error("Unexpected target:", addr)
++ }
++}
++
++// TestRequestIPv6 tests IPv4 SOCKS5 requests.
++func TestRequestIPv6(t *testing.T) {
++ c := new(testReadWriter)
++ var req SocksRequest
++
++ // VER = 05, CMD = 01, RSV = 00, ATYPE = 04, DST.ADDR = 0102:0304:0506:0708:090a:0b0c:0d0e:0f10, DST.PORT = 9050
++ c.writeHex("050100040102030405060708090a0b0c0d0e0f10235a")
++ if err := socksReadCommand(c.toBufio(), &req); err != nil {
++ t.Error("socksReadCommand(IPv6) failed:", err)
++ }
++ addr, err := net.ResolveTCPAddr("tcp", req.Target)
++ if err != nil {
++ t.Error("net.ResolveTCPAddr failed:", err)
++ }
++ if !tcpAddrsEqual(addr, &net.TCPAddr{IP: net.ParseIP("0102:0304:0506:0708:090a:0b0c:0d0e:0f10"), Port: 9050}) {
++ t.Error("Unexpected target:", addr)
++ }
++}
++
++// TestRequestFQDN tests FQDN (DOMAINNAME) SOCKS5 requests.
++func TestRequestFQDN(t *testing.T) {
++ c := new(testReadWriter)
++ var req SocksRequest
++
++ // VER = 05, CMD = 01, RSV = 00, ATYPE = 04, DST.ADDR = example.com, DST.PORT = 9050
++ c.writeHex("050100030b6578616d706c652e636f6d235a")
++ if err := socksReadCommand(c.toBufio(), &req); err != nil {
++ t.Error("socksReadCommand(FQDN) failed:", err)
++ }
++ if req.Target != "example.com:9050" {
++ t.Error("Unexpected target:", req.Target)
++ }
++}
++
++// TestResponseNil tests nil address SOCKS5 responses.
++func TestResponseNil(t *testing.T) {
++ c := new(testReadWriter)
++
++ b := c.toBufio()
++ if err := sendSocks5ResponseGranted(b); err != nil {
++ t.Error("sendSocks5ResponseGranted() failed:", err)
++ }
++ b.Flush()
++ if msg := c.readHex(); msg != "05000001000000000000" {
++ t.Error("sendSocks5ResponseGranted(nil) invalid response:", msg)
++ }
++}
++
++var _ io.ReadWriter = (*testReadWriter)(nil)
+--
+2.3.3
+
1
0

[tor-browser-bundle/master] Merge remote-tracking branch 'yawning/bug12535'
by gk@torproject.org 23 Mar '15
by gk@torproject.org 23 Mar '15
23 Mar '15
commit 5e26066db070aa30d879a022237478a37bb5d944
Merge: 474bbb5 9d26e00
Author: Georg Koppen <gk(a)torproject.org>
Date: Mon Mar 23 08:46:50 2015 +0000
Merge remote-tracking branch 'yawning/bug12535'
.../linux/gitian-pluggable-transports.yml | 6 +
.../mac/gitian-pluggable-transports.yml | 6 +
.../windows/gitian-pluggable-transports.yml | 6 +
gitian/patches/bug12535.patch | 1032 ++++++++++++++++++++
4 files changed, 1050 insertions(+)
1
0

23 Mar '15
commit 474bbb5e54acae925a849e77b8ef590e58ee0820
Author: Yawning Angel <yawning(a)schwanenlied.me>
Date: Sat Mar 21 14:34:06 2015 +0000
Bug 15265: Pull in golang.org/x/net
The new official home for "go.net" is on golang.org, which also uses
git instead of hg (yay!). As of the *next* obfs4proxy release the old
go.net tarball stuff can be ripped out (leaving it in for the while).
---
gitian/descriptors/linux/gitian-pluggable-transports.yml | 12 +++++++++++-
gitian/descriptors/mac/gitian-pluggable-transports.yml | 12 +++++++++++-
gitian/descriptors/windows/gitian-pluggable-transports.yml | 12 +++++++++++-
gitian/fetch-inputs.sh | 1 +
gitian/mkbundle-linux.sh | 2 +-
gitian/mkbundle-mac.sh | 2 +-
gitian/mkbundle-windows.sh | 2 +-
gitian/verify-tags.sh | 1 +
gitian/versions.alpha | 1 +
gitian/versions.nightly | 1 +
10 files changed, 40 insertions(+), 6 deletions(-)
diff --git a/gitian/descriptors/linux/gitian-pluggable-transports.yml b/gitian/descriptors/linux/gitian-pluggable-transports.yml
index 9596b7f..1ae9c0c 100644
--- a/gitian/descriptors/linux/gitian-pluggable-transports.yml
+++ b/gitian/descriptors/linux/gitian-pluggable-transports.yml
@@ -38,6 +38,8 @@ remotes:
"dir": "siphash"
- "url": "https://go.googlesource.com/crypto"
"dir": "goxcrypto"
+- "url": "https://go.googlesource.com/net"
+ "dir": "goxnet"
- "url": "https://git.torproject.org/pluggable-transports/obfs4.git"
"dir": "obfs4"
files:
@@ -253,7 +255,15 @@ script: |
go install golang.org/x/crypto/nacl/secretbox
cd ..
- # Building go.net
+ # Building golang.org/x/net (obfs4proxy > 0.0.4)
+ cd goxnet
+ find -type f | xargs touch --date="$REFERENCE_DATETIME"
+ mkdir -p "$GOPATH/src/golang.org/x/"
+ ln -sf "$PWD" "$GOPATH/src/golang.org/x/net"
+ go install golang.org/x/net/proxy
+ cd ..
+
+ # Building go.net (obfs4proxy <= 0.0.4)
tar xjf go.net.tar.bz2
cd go.net
find -type f | xargs touch --date="$REFERENCE_DATETIME"
diff --git a/gitian/descriptors/mac/gitian-pluggable-transports.yml b/gitian/descriptors/mac/gitian-pluggable-transports.yml
index a1bdff9..e2693e1 100644
--- a/gitian/descriptors/mac/gitian-pluggable-transports.yml
+++ b/gitian/descriptors/mac/gitian-pluggable-transports.yml
@@ -36,6 +36,8 @@ remotes:
"dir": "siphash"
- "url": "https://go.googlesource.com/crypto"
"dir": "goxcrypto"
+- "url": "https://go.googlesource.com/net"
+ "dir": "goxnet"
- "url": "https://git.torproject.org/pluggable-transports/obfs4.git"
"dir": "obfs4"
files:
@@ -281,7 +283,15 @@ script: |
go install golang.org/x/crypto/nacl/secretbox
cd ..
- # Building go.net
+ # Building golang.org/x/net (obfs4proxy > 0.0.4)
+ cd goxnet
+ find -type f | xargs touch --date="$REFERENCE_DATETIME"
+ mkdir -p "$GOPATH/src/golang.org/x/"
+ ln -sf "$PWD" "$GOPATH/src/golang.org/x/net"
+ go install golang.org/x/net/proxy
+ cd ..
+
+ # Building go.net (obfs4proxy <= 0.0.4)
tar xjf go.net.tar.bz2
cd go.net
find -type f | xargs touch --date="$REFERENCE_DATETIME"
diff --git a/gitian/descriptors/windows/gitian-pluggable-transports.yml b/gitian/descriptors/windows/gitian-pluggable-transports.yml
index 4ca477e..0f5ec84 100644
--- a/gitian/descriptors/windows/gitian-pluggable-transports.yml
+++ b/gitian/descriptors/windows/gitian-pluggable-transports.yml
@@ -35,6 +35,8 @@ remotes:
"dir": "siphash"
- "url": "https://go.googlesource.com/crypto"
"dir": "goxcrypto"
+- "url": "https://go.googlesource.com/net"
+ "dir": "goxnet"
- "url": "https://git.torproject.org/pluggable-transports/obfs4.git"
"dir": "obfs4"
files:
@@ -359,7 +361,15 @@ script: |
go install golang.org/x/crypto/nacl/secretbox
cd ..
- # Building go.net
+ # Building golang.org/x/net (obfs4proxy > 0.0.4)
+ cd goxnet
+ find -type f | xargs touch --date="$REFERENCE_DATETIME"
+ mkdir -p "$GOPATH/src/golang.org/x/"
+ ln -sf "$PWD" "$GOPATH/src/golang.org/x/net"
+ go install golang.org/x/net/proxy
+ cd ..
+
+ # Building go.net (obfs4proxy <= 0.0.4)
tar xjf go.net.tar.bz2
cd go.net
find -type f | xargs touch --date="$REFERENCE_DATETIME"
diff --git a/gitian/fetch-inputs.sh b/gitian/fetch-inputs.sh
index 3b3c43a..e86ad6d 100755
--- a/gitian/fetch-inputs.sh
+++ b/gitian/fetch-inputs.sh
@@ -269,6 +269,7 @@ faketime https://github.com/wolfcw/libfaketime $FAKETIME_TAG
ed25519 https://github.com/agl/ed25519.git $GOED25519_TAG
siphash https://github.com/dchest/siphash.git $GOSIPHASH_TAG
goxcrypto https://go.googlesource.com/crypto $GO_X_CRYPTO_TAG
+goxnet https://go.googlesource.com/net $GO_X_NET_TAG
obfs4 https://git.torproject.org/pluggable-transports/obfs4.git $OBFS4_TAG
EOF
diff --git a/gitian/mkbundle-linux.sh b/gitian/mkbundle-linux.sh
index f1ef984..15e1384 100755
--- a/gitian/mkbundle-linux.sh
+++ b/gitian/mkbundle-linux.sh
@@ -224,7 +224,7 @@ then
echo "****** Starting Pluggable Transports Component of Linux Bundle (4/5 for Linux) ******"
echo
- ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit pyptlib=$PYPTLIB_TAG,obfsproxy=$OBFSPROXY_TAG,flashproxy=$FLASHPROXY_TAG,libfte=$LIBFTE_TAG,fteproxy=$FTEPROXY_TAG,txsocksx=$TXSOCKSX_TAG,goptlib=$GOPTLIB_TAG,meek=$MEEK_TAG,ed25519=$GOED25519_TAG,siphash=$GOSIPHASH_TAG,goxcrypto=$GO_X_CRYPTO_TAG,obfs4=$OBFS4_TAG $DESCRIPTOR_DIR/linux/gitian-pluggable-transports.yml
+ ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit pyptlib=$PYPTLIB_TAG,obfsproxy=$OBFSPROXY_TAG,flashproxy=$FLASHPROXY_TAG,libfte=$LIBFTE_TAG,fteproxy=$FTEPROXY_TAG,txsocksx=$TXSOCKSX_TAG,goptlib=$GOPTLIB_TAG,meek=$MEEK_TAG,ed25519=$GOED25519_TAG,siphash=$GOSIPHASH_TAG,goxcrypto=$GO_X_CRYPTO_TAG,goxnet=$GO_X_NET_TAG,obfs4=$OBFS4_TAG $DESCRIPTOR_DIR/linux/gitian-pluggable-transports.yml
if [ $? -ne 0 ];
then
#mv var/build.log ./pluggable-transports-fail-linux.log.`date +%Y%m%d%H%M%S`
diff --git a/gitian/mkbundle-mac.sh b/gitian/mkbundle-mac.sh
index 309b1a8..01a9d1b 100755
--- a/gitian/mkbundle-mac.sh
+++ b/gitian/mkbundle-mac.sh
@@ -190,7 +190,7 @@ then
echo "****** Starting Pluggable Transports Component of Mac Bundle (4/5 for Mac) ******"
echo
- ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit pyptlib=$PYPTLIB_TAG,obfsproxy=$OBFSPROXY_TAG,flashproxy=$FLASHPROXY_TAG,libfte=$LIBFTE_TAG,fteproxy=$FTEPROXY_TAG,txsocksx=$TXSOCKSX_TAG,goptlib=$GOPTLIB_TAG,meek=$MEEK_TAG,ed25519=$GOED25519_TAG,siphash=$GOSIPHASH_TAG,goxcrypto=$GO_X_CRYPTO_TAG,obfs4=$OBFS4_TAG $DESCRIPTOR_DIR/mac/gitian-pluggable-transports.yml
+ ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit pyptlib=$PYPTLIB_TAG,obfsproxy=$OBFSPROXY_TAG,flashproxy=$FLASHPROXY_TAG,libfte=$LIBFTE_TAG,fteproxy=$FTEPROXY_TAG,txsocksx=$TXSOCKSX_TAG,goptlib=$GOPTLIB_TAG,meek=$MEEK_TAG,ed25519=$GOED25519_TAG,siphash=$GOSIPHASH_TAG,goxcrypto=$GO_X_CRYPTO_TAG,goxnet=$GO_X_NET_TAG,obfs4=$OBFS4_TAG $DESCRIPTOR_DIR/mac/gitian-pluggable-transports.yml
if [ $? -ne 0 ];
then
#mv var/build.log ./firefox-fail-mac.log.`date +%Y%m%d%H%M%S`
diff --git a/gitian/mkbundle-windows.sh b/gitian/mkbundle-windows.sh
index 0e2f87f..e7bdc87 100755
--- a/gitian/mkbundle-windows.sh
+++ b/gitian/mkbundle-windows.sh
@@ -194,7 +194,7 @@ then
echo "****** Starting Pluggable Transports Component of Windows Bundle (4/5 for Windows) ******"
echo
- ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit pyptlib=$PYPTLIB_TAG,obfsproxy=$OBFSPROXY_TAG,flashproxy=$FLASHPROXY_TAG,libfte=$LIBFTE_TAG,fteproxy=$FTEPROXY_TAG,txsocksx=$TXSOCKSX_TAG,goptlib=$GOPTLIB_TAG,meek=$MEEK_TAG,ed25519=$GOED25519_TAG,siphash=$GOSIPHASH_TAG,goxcrypto=$GO_X_CRYPTO_TAG,obfs4=$OBFS4_TAG $DESCRIPTOR_DIR/windows/gitian-pluggable-transports.yml
+ ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit pyptlib=$PYPTLIB_TAG,obfsproxy=$OBFSPROXY_TAG,flashproxy=$FLASHPROXY_TAG,libfte=$LIBFTE_TAG,fteproxy=$FTEPROXY_TAG,txsocksx=$TXSOCKSX_TAG,goptlib=$GOPTLIB_TAG,meek=$MEEK_TAG,ed25519=$GOED25519_TAG,siphash=$GOSIPHASH_TAG,goxcrypto=$GO_X_CRYPTO_TAG,goxnet=$GO_X_NET_TAG,obfs4=$OBFS4_TAG $DESCRIPTOR_DIR/windows/gitian-pluggable-transports.yml
if [ $? -ne 0 ];
then
#mv var/build.log ./pluggable-transports-fail-win32.log.`date +%Y%m%d%H%M%S`
diff --git a/gitian/verify-tags.sh b/gitian/verify-tags.sh
index eb1e057..79c452b 100755
--- a/gitian/verify-tags.sh
+++ b/gitian/verify-tags.sh
@@ -117,6 +117,7 @@ faketime $FAKETIME_TAG
ed25519 $GOED25519_TAG
siphash $GOSIPHASH_TAG
goxcrypto $GO_X_CRYPTO_TAG
+goxnet $GO_X_NET_TAG
EOF
# Verify signatures on signed packages
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index 0f49a23..648027a 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -30,6 +30,7 @@ FAKETIME_TAG=70aa6b394d9341522dffe8a5a5cf5929e82cc6b9 # unsigned v0.9.6
GOED25519_TAG=c4161f4c7483313562781c61b9a20aba73daf9de
GOSIPHASH_TAG=42ba037e748c9062a75e0924705c43b893edefcd
GO_X_CRYPTO_TAG=4ed45ec682102c643324fae5dff8dab085b6c300
+GO_X_NET_TAG=7dbad50ab5b31073856416cdcfeb2796d682f844
OBFS4_TAG=obfs4proxy-0.0.4
GITIAN_TAG=tor-browser-builder-3.x-7
diff --git a/gitian/versions.nightly b/gitian/versions.nightly
index 8bbba6e..fba4d87 100755
--- a/gitian/versions.nightly
+++ b/gitian/versions.nightly
@@ -34,6 +34,7 @@ FAKETIME_TAG=70aa6b394d9341522dffe8a5a5cf5929e82cc6b9 # unsigned v0.9.6
GOED25519_TAG=c4161f4c7483313562781c61b9a20aba73daf9de
GOSIPHASH_TAG=42ba037e748c9062a75e0924705c43b893edefcd
GO_X_CRYPTO_TAG=master
+GO_X_NET_TAG=master
OBFS4_TAG=master
GITIAN_TAG=tor-browser-builder-3.x-7
1
0

[tor-browser/tor-browser-31.5.0esr-4.5-1] fixup! TB4: Tor Browser's Firefox preference overrides.
by gk@torproject.org 23 Mar '15
by gk@torproject.org 23 Mar '15
23 Mar '15
commit 1ca437755964660f39630f82cc1305670fef7874
Author: Georg Koppen <gk(a)torproject.org>
Date: Mon Mar 23 08:07:55 2015 +0000
fixup! TB4: Tor Browser's Firefox preference overrides.
---
browser/app/profile/000-tor-browser.js | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/browser/app/profile/000-tor-browser.js b/browser/app/profile/000-tor-browser.js
index 2e2984c..2d93908 100644
--- a/browser/app/profile/000-tor-browser.js
+++ b/browser/app/profile/000-tor-browser.js
@@ -117,7 +117,10 @@ pref("plugin.state.flash", 1);
pref("plugins.hide_infobar_for_missing_plugin", true);
pref("plugins.hideMissingPluginsNotification", true);
pref("media.peerconnection.enabled", false); // Disable WebRTC interfaces
-pref("svg.in-content.enabled", true); // May be disabled via Torbutton's security slider.
+
+// Security slider
+pref("svg.in-content.enabled", true);
+pref("mathml.disabled", false);
// Network and performance
pref("network.http.pipelining", true);
1
0

[tor-browser/tor-browser-31.5.0esr-4.5-1] Merge remote-tracking branch 'pc/bug13548-01' into tor-browser-31.5.0esr-4.5-1
by gk@torproject.org 23 Mar '15
by gk@torproject.org 23 Mar '15
23 Mar '15
commit 04e603a60a13aed5434a6d5450b432a8f5ab7c46
Merge: 709dd9e 5b48b32
Author: Georg Koppen <gk(a)torproject.org>
Date: Mon Mar 23 08:02:02 2015 +0000
Merge remote-tracking branch 'pc/bug13548-01' into tor-browser-31.5.0esr-4.5-1
content/base/public/nsNameSpaceManager.h | 11 +++++---
content/base/src/nsNameSpaceManager.cpp | 43 ++++++++++++++++++++++++++++--
2 files changed, 49 insertions(+), 5 deletions(-)
diff --cc content/base/src/nsNameSpaceManager.cpp
index 3f4f9f8,d2a9722..d81d8d8
--- a/content/base/src/nsNameSpaceManager.cpp
+++ b/content/base/src/nsNameSpaceManager.cpp
@@@ -152,9 -166,20 +167,20 @@@ NS_NewElement(Element** aResult
}
#endif
if (ns == kNameSpaceID_MathML) {
- return NS_NewMathMLElement(aResult, ni.forget());
+ // If the mathml.disabled pref. is true, convert all MathML nodes into
+ // generic XML nodes by swapping the namespace.
+ nsNameSpaceManager* nsmgr = nsNameSpaceManager::GetInstance();
+ if (nsmgr && !nsmgr->mIsMathMLDisabled) {
+ return NS_NewMathMLElement(aResult, ni.forget());
+ }
+
+ nsNodeInfoManager *niMgr = ni->NodeInfoManager();
+ nsCOMPtr<nsINodeInfo> genericXMLNI = niMgr->GetNodeInfo(ni->NameAtom(),
+ ni->GetPrefixAtom(), kNameSpaceID_XML,
+ ni->NodeType(), ni->GetExtraName());
+ return NS_NewXMLElement(aResult, genericXMLNI.forget());
}
- if (ns == kNameSpaceID_SVG) {
+ if (ns == kNameSpaceID_SVG && NS_SVGEnabled(ni->GetDocument())) {
return NS_NewSVGElement(aResult, ni.forget(), aFromParser);
}
if (ns == kNameSpaceID_XBL && ni->Equals(nsGkAtoms::children)) {
1
0

[tor-browser/tor-browser-31.5.0esr-4.5-1] Bug 13548: Create preference to disable MathML.
by gk@torproject.org 23 Mar '15
by gk@torproject.org 23 Mar '15
23 Mar '15
commit 5b48b325cf54fe341c9c6c417ecfbb83cc5625be
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Thu Mar 5 18:50:59 2015 -0500
Bug 13548: Create preference to disable MathML.
If the mathml.disabled preference is true, treat <math> and other MathML
elements as generic XML elements.
---
content/base/public/nsNameSpaceManager.h | 11 +++++---
content/base/src/nsNameSpaceManager.cpp | 43 ++++++++++++++++++++++++++++--
2 files changed, 49 insertions(+), 5 deletions(-)
diff --git a/content/base/public/nsNameSpaceManager.h b/content/base/public/nsNameSpaceManager.h
index 7f222a6..24b85f3 100644
--- a/content/base/public/nsNameSpaceManager.h
+++ b/content/base/public/nsNameSpaceManager.h
@@ -8,6 +8,7 @@
#include "nsDataHashtable.h"
#include "nsTArray.h"
+#include "nsIObserver.h"
#include "mozilla/StaticPtr.h"
@@ -84,10 +85,13 @@ private:
*
*/
-class nsNameSpaceManager
+class nsNameSpaceManager : public nsIObserver
{
public:
- virtual ~nsNameSpaceManager() {}
+ NS_DECL_ISUPPORTS
+ NS_DECL_NSIOBSERVER
+
+ virtual ~nsNameSpaceManager();
virtual nsresult RegisterNameSpace(const nsAString& aURI,
int32_t& aNameSpaceID);
@@ -98,6 +102,7 @@ public:
virtual bool HasElementCreator(int32_t aNameSpaceID);
static nsNameSpaceManager* GetInstance();
+ bool mIsMathMLDisabled;
private:
bool Init();
nsresult AddNameSpace(const nsAString& aURI, const int32_t aNameSpaceID);
@@ -105,7 +110,7 @@ private:
nsDataHashtable<nsNameSpaceKey,int32_t> mURIToIDTable;
nsTArray< nsAutoPtr<nsString> > mURIArray;
- static mozilla::StaticAutoPtr<nsNameSpaceManager> sInstance;
+ static mozilla::StaticRefPtr<nsNameSpaceManager> sInstance;
};
#endif // nsNameSpaceManager_h___
diff --git a/content/base/src/nsNameSpaceManager.cpp b/content/base/src/nsNameSpaceManager.cpp
index 409e08c..d2a9722 100644
--- a/content/base/src/nsNameSpaceManager.cpp
+++ b/content/base/src/nsNameSpaceManager.cpp
@@ -20,6 +20,7 @@
#include "mozilla/ClearOnShutdown.h"
#include "mozilla/dom/XBLChildrenElement.h"
#include "mozilla/dom/Element.h"
+#include "mozilla/Preferences.h"
using namespace mozilla;
using namespace mozilla::dom;
@@ -35,7 +36,14 @@ using namespace mozilla::dom;
#define kXULNameSpaceURI "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
#define kSVGNameSpaceURI "http://www.w3.org/2000/svg"
-StaticAutoPtr<nsNameSpaceManager> nsNameSpaceManager::sInstance;
+static const char kMathMLDisabledPrefName[] = "mathml.disabled";
+
+static const char* kObservedPrefs[] = {
+ kMathMLDisabledPrefName,
+ nullptr
+};
+
+StaticRefPtr<nsNameSpaceManager> nsNameSpaceManager::sInstance;
/* static */ nsNameSpaceManager*
nsNameSpaceManager::GetInstance() {
@@ -52,6 +60,10 @@ nsNameSpaceManager::GetInstance() {
return sInstance;
}
+nsNameSpaceManager::~nsNameSpaceManager() {
+ mozilla::Preferences::RemoveObservers(this, kObservedPrefs);
+}
+
bool nsNameSpaceManager::Init()
{
nsresult rv;
@@ -73,6 +85,9 @@ bool nsNameSpaceManager::Init()
#undef REGISTER_NAMESPACE
+ mozilla::Preferences::AddStrongObservers(this, kObservedPrefs);
+ mIsMathMLDisabled = mozilla::Preferences::GetBool(kMathMLDisabledPrefName);
+
return true;
}
@@ -151,7 +166,18 @@ NS_NewElement(Element** aResult,
}
#endif
if (ns == kNameSpaceID_MathML) {
- return NS_NewMathMLElement(aResult, ni.forget());
+ // If the mathml.disabled pref. is true, convert all MathML nodes into
+ // generic XML nodes by swapping the namespace.
+ nsNameSpaceManager* nsmgr = nsNameSpaceManager::GetInstance();
+ if (nsmgr && !nsmgr->mIsMathMLDisabled) {
+ return NS_NewMathMLElement(aResult, ni.forget());
+ }
+
+ nsNodeInfoManager *niMgr = ni->NodeInfoManager();
+ nsCOMPtr<nsINodeInfo> genericXMLNI = niMgr->GetNodeInfo(ni->NameAtom(),
+ ni->GetPrefixAtom(), kNameSpaceID_XML,
+ ni->NodeType(), ni->GetExtraName());
+ return NS_NewXMLElement(aResult, genericXMLNI.forget());
}
if (ns == kNameSpaceID_SVG) {
return NS_NewSVGElement(aResult, ni.forget(), aFromParser);
@@ -197,3 +223,16 @@ nsresult nsNameSpaceManager::AddNameSpace(const nsAString& aURI,
return NS_OK;
}
+
+// nsISupports
+NS_IMPL_ISUPPORTS(nsNameSpaceManager,
+ nsIObserver)
+
+// nsIObserver
+NS_IMETHODIMP
+nsNameSpaceManager::Observe(nsISupports* aObject, const char* aTopic,
+ const char16_t* aMessage)
+{
+ mIsMathMLDisabled = mozilla::Preferences::GetBool(kMathMLDisabledPrefName);
+ return NS_OK;
+}
1
0
commit 2d9112aeca70be6a3dad5b74c4435c9a7af54fe0
Author: Georg Koppen <gk(a)torproject.org>
Date: Sat Mar 21 16:02:09 2015 +0000
Second try
---
gitian/versions | 2 +-
tools/update-responses/config.yml | 10 +++++-----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/gitian/versions b/gitian/versions
index 2f92e76..c8d647b 100755
--- a/gitian/versions
+++ b/gitian/versions
@@ -33,7 +33,7 @@ GITIAN_TAG=tor-browser-builder-3.x-7
OPENSSL_VER=1.0.1l
GMP_VER=5.1.3
FIREFOX_LANG_VER=$FIREFOX_VERSION
-FIREFOX_LANG_BUILD=build2
+FIREFOX_LANG_BUILD=build1
BINUTILS_VER=2.24
GCC_VER=4.9.1
PYTHON_VER=2.7.5
diff --git a/tools/update-responses/config.yml b/tools/update-responses/config.yml
index 8357544..93a372f 100644
--- a/tools/update-responses/config.yml
+++ b/tools/update-responses/config.yml
@@ -6,15 +6,15 @@ build_targets:
osx32: Darwin_x86-gcc3
osx64: Darwin_x86_64-gcc3
channels:
- release: 4.0.4
+ release: 4.0.5
alpha: 4.5-alpha-2
versions:
- 4.0.4:
- platformVersion: 31.5.0
+ 4.0.5:
+ platformVersion: 31.5.3
detailsURL: https://www.torproject.org/projects/torbrowser.html.en
- download_url: https://www.torproject.org/dist/torbrowser/4.0.4
+ download_url: https://www.torproject.org/dist/torbrowser/4.0.5
incremental_from:
- - 4.0.3
+ - 4.0.4
4.5-alpha-2:
platformVersion: 31.3.0
detailsURL: https://www.torproject.org/projects/torbrowser.html.en
1
0

[tor-browser-bundle/maint-4.0] Bump everything for Tor Browser 4.0.5
by gk@torproject.org 21 Mar '15
by gk@torproject.org 21 Mar '15
21 Mar '15
commit 208725af632a872953691c252f24df8a0332e55d
Author: Georg Koppen <gk(a)torproject.org>
Date: Sat Mar 21 15:14:41 2015 +0000
Bump everything for Tor Browser 4.0.5
---
Bundle-Data/Docs/ChangeLog.txt | 6 ++++++
gitian/versions | 10 +++++-----
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/Bundle-Data/Docs/ChangeLog.txt b/Bundle-Data/Docs/ChangeLog.txt
index 8ac530f..c8a2b5a 100644
--- a/Bundle-Data/Docs/ChangeLog.txt
+++ b/Bundle-Data/Docs/ChangeLog.txt
@@ -1,3 +1,9 @@
+Tor Browser 4.0.5 -- Mar 23 2015
+ * All Platforms
+ * Update Firefox to 31.5.3esr
+ * Update Tor to 0.2.5.11
+ * Update NoScript to 2.6.9.19
+
Tor Browser 4.0.4 -- Feb 24 2015
* All Platforms
* Update Firefox to 31.5.0esr
diff --git a/gitian/versions b/gitian/versions
index 9720cc1..2f92e76 100755
--- a/gitian/versions
+++ b/gitian/versions
@@ -1,15 +1,15 @@
-TORBROWSER_VERSION=4.0.4
+TORBROWSER_VERSION=4.0.5
BUNDLE_LOCALES="ar de es-ES fa fr it ko nl pl pt-PT ru tr vi zh-CN"
BUILD_PT_BUNDLES=1
VERIFY_TAGS=1
-FIREFOX_VERSION=31.5.0esr
+FIREFOX_VERSION=31.5.3esr
TORBROWSER_UPDATE_CHANNEL=release
TORBROWSER_TAG=tor-browser-${FIREFOX_VERSION}-4.0-1-build1
-TOR_TAG=tor-0.2.5.10
+TOR_TAG=tor-0.2.5.11
TORLAUNCHER_TAG=0.2.7.0.2
TORBUTTON_TAG=1.7.0.2
HTTPSE_TAG=3.5.3 # XXX: HTTPSE_VER is used instead, pending #11630
@@ -53,7 +53,7 @@ GO_VER=1.3.3
## File names for the source packages
OPENSSL_PACKAGE=openssl-${OPENSSL_VER}.tar.gz
GMP_PACKAGE=gmp-${GMP_VER}.tar.bz2
-NOSCRIPT_PACKAGE=noscript_security_suite-2.6.9.15-sm+fn+fx.xpi
+NOSCRIPT_PACKAGE=noscript_security_suite-2.6.9.19-fx+fn+sm.xpi
HTTPSE_PACKAGE=https-everywhere-${HTTPSE_VER}.xpi
TOOLCHAIN4_PACKAGE=x86_64-apple-darwin10.tar.xz
TOOLCHAIN4_OLD_PACKAGE=multiarch-darwin11-cctools127.2-gcc42-5666.3-llvmgcc42-2336.1-Linux-120724.tar.xz
@@ -81,7 +81,7 @@ GMP_HASH=752079520b4690531171d0f4532e40f08600215feefede70b24fabdc6f1ab160
OSXSDK_HASH=6602d8d5ddb371fbc02e2a5967d9bd0cd7358d46f9417753c8234b923f2ea6fc
TOOLCHAIN4_HASH=7b71bfe02820409b994c5c33a7eab81a81c72550f5da85ff7af70da3da244645
TOOLCHAIN4_OLD_HASH=65c1b2d302358a6b95a26c6828a66908a199276193bb0b268f2dcc1a997731e9
-NOSCRIPT_HASH=63d866458e0261d20b612193f8f446728c991dd488c59e49d8f927c63e7eb9b4
+NOSCRIPT_HASH=2579b91fb2f5491a12c49e543a9d2b2583dc82e2393ce1b0ab92b170dcc7c6ad
HTTPSE_HASH=30891fc7bd73213a4d8386c44fc53ab8037c9ec3d4b90caefbe6a7558ef7ac2c
MSVCR100_HASH=1221a09484964a6f38af5e34ee292b9afefccb3dc6e55435fd3aaf7c235d9067
PYCRYPTO_HASH=f2ce1e989b272cfcb677616763e0a2e7ec659effa67a88aa92b3a65528f60a3c
1
0

[tor-browser/tor-browser-31.5.0esr-4.5-1] fixup! TB4: Tor Browser's Firefox preference overrides.
by mikeperry@torproject.org 21 Mar '15
by mikeperry@torproject.org 21 Mar '15
21 Mar '15
commit 709dd9e8d74ac13a6a0e436c5d947b0564e3793d
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Tue Mar 17 19:10:23 2015 -0700
fixup! TB4: Tor Browser's Firefox preference overrides.
Bug 15029: Don't prompt to install missing plugins.
---
browser/app/profile/000-tor-browser.js | 1 +
1 file changed, 1 insertion(+)
diff --git a/browser/app/profile/000-tor-browser.js b/browser/app/profile/000-tor-browser.js
index 91a5b71..2e2984c 100644
--- a/browser/app/profile/000-tor-browser.js
+++ b/browser/app/profile/000-tor-browser.js
@@ -115,6 +115,7 @@ pref("network.protocol-handler.warn-external.snews", true);
pref("plugins.click_to_play", true);
pref("plugin.state.flash", 1);
pref("plugins.hide_infobar_for_missing_plugin", true);
+pref("plugins.hideMissingPluginsNotification", true);
pref("media.peerconnection.enabled", false); // Disable WebRTC interfaces
pref("svg.in-content.enabled", true); // May be disabled via Torbutton's security slider.
1
0

[tor-browser/tor-browser-31.5.0esr-4.5-1] fixup! Bug 12827: Create preference to disable SVG.
by mikeperry@torproject.org 21 Mar '15
by mikeperry@torproject.org 21 Mar '15
21 Mar '15
commit 4029568bb2283ce1203d0cdff0e857f7da8bce42
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Fri Mar 20 19:40:18 2015 -0700
fixup! Bug 12827: Create preference to disable SVG.
Call the pref svg.in-content.enabled.
---
browser/app/profile/000-tor-browser.js | 2 +-
content/svg/content/src/nsSVGFeatures.cpp | 4 ++--
layout/svg/nsSVGUtils.cpp | 6 +++---
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/browser/app/profile/000-tor-browser.js b/browser/app/profile/000-tor-browser.js
index e87ccff..91a5b71 100644
--- a/browser/app/profile/000-tor-browser.js
+++ b/browser/app/profile/000-tor-browser.js
@@ -116,7 +116,7 @@ pref("plugins.click_to_play", true);
pref("plugin.state.flash", 1);
pref("plugins.hide_infobar_for_missing_plugin", true);
pref("media.peerconnection.enabled", false); // Disable WebRTC interfaces
-pref("svg.inContent.enabled", true); // May be disabled via Torbutton's security slider.
+pref("svg.in-content.enabled", true); // May be disabled via Torbutton's security slider.
// Network and performance
pref("network.http.pipelining", true);
diff --git a/content/svg/content/src/nsSVGFeatures.cpp b/content/svg/content/src/nsSVGFeatures.cpp
index 04e9917..4348de7 100644
--- a/content/svg/content/src/nsSVGFeatures.cpp
+++ b/content/svg/content/src/nsSVGFeatures.cpp
@@ -24,7 +24,7 @@ using namespace mozilla;
nsSVGFeatures::HasFeature(nsISupports* aObject, const nsAString& aFeature)
{
// Since we do not have access to the document here we pass nullptr, which
- // means only the svg.inContent.enabled pref is checked. This is OK since
+ // means only the svg.in-content.enabled pref is checked. This is OK since
// we do not expect chrome code to use the HasFeature() API.
if (!NS_SVGEnabled(nullptr))
return false;
@@ -52,7 +52,7 @@ nsSVGFeatures::HasFeature(nsISupports* aObject, const nsAString& aFeature)
nsSVGFeatures::HasExtension(const nsAString& aExtension)
{
// Since we do not have access to the document here we pass nullptr, which
- // means only the svg.inContent.enabled pref is checked. This is OK since
+ // means only the svg.in-content.enabled pref is checked. This is OK since
// we do not expect chrome code to use the HasExtension() API.
if (!NS_SVGEnabled(nullptr))
return false;
diff --git a/layout/svg/nsSVGUtils.cpp b/layout/svg/nsSVGUtils.cpp
index da55070..49957fd 100644
--- a/layout/svg/nsSVGUtils.cpp
+++ b/layout/svg/nsSVGUtils.cpp
@@ -61,7 +61,7 @@ static bool sSVGEnabledInContent;
static bool sSVGDisplayListHitTestingEnabled;
static bool sSVGDisplayListPaintingEnabled;
-// Determine if SVG should be enabled for aDoc. The svg.inContent.enabled
+// Determine if SVG should be enabled for aDoc. The svg.in-content.enabled
// preference is checked as well as whether aDoc is a content or chrome doc.
// If aChannel is NULL, the pref. value is returned.
bool
@@ -70,7 +70,7 @@ NS_SVGEnabled(nsIDocument *aDoc)
return NS_SVGEnabledForChannel(aDoc ? aDoc->GetChannel() : nullptr);
}
-// Determine if SVG should be enabled for aChannel. The svg.inContent.enabled
+// Determine if SVG should be enabled for aChannel. The svg.in-content.enabled
// preference is checked as well as whether the load context associated with
// aChannel is content or chrome.
// If aChannel is NULL, the pref. value is returned.
@@ -160,7 +160,7 @@ void
nsSVGUtils::Init()
{
Preferences::AddBoolVarCache(&sSVGEnabledInContent,
- "svg.inContent.enabled");
+ "svg.in-content.enabled");
Preferences::AddBoolVarCache(&sSVGDisplayListHitTestingEnabled,
"svg.display-lists.hit-testing.enabled");
1
0

[tor-browser/tor-browser-31.5.0esr-4.5-1] Merge branch 'bug12827-01' into tor-browser-31.5.0esr-4.5-1
by mikeperry@torproject.org 21 Mar '15
by mikeperry@torproject.org 21 Mar '15
21 Mar '15
commit 2dbf9589bff621cd9fc88dafa26b20ccdbddf935
Merge: 4a14559 7dd093a
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Fri Mar 20 19:37:27 2015 -0700
Merge branch 'bug12827-01' into tor-browser-31.5.0esr-4.5-1
browser/app/profile/000-tor-browser.js | 1 +
content/base/src/nsNameSpaceManager.cpp | 3 ++-
content/base/src/nsObjectLoadingContent.cpp | 16 +++++++++---
content/svg/content/src/nsSVGFeatures.cpp | 13 ++++++++++
gfx/thebes/gfxFont.cpp | 6 ++++-
image/src/ImageFactory.cpp | 33 ++++++++++++++++--------
layout/base/nsCSSFrameConstructor.cpp | 15 +++++++----
layout/build/nsContentDLF.cpp | 27 +++++++++++--------
layout/svg/nsSVGUtils.cpp | 37 +++++++++++++++++++++++++++
layout/svg/nsSVGUtils.h | 3 +++
uriloader/base/nsURILoader.cpp | 13 +++++++---
11 files changed, 131 insertions(+), 36 deletions(-)
1
0

[tor-browser/tor-browser-31.5.0esr-4.5-1] Bug 12827: Create preference to disable SVG.
by mikeperry@torproject.org 21 Mar '15
by mikeperry@torproject.org 21 Mar '15
21 Mar '15
commit 7dd093abb5c68728b5ba6c940cca224345d89f3e
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Wed Mar 18 15:21:30 2015 -0400
Bug 12827: Create preference to disable SVG.
If the svg.inContent.enabled preference is false, disallow all use of
SVG within content pages.
In the following situations it is very difficult to determine if code
is executing within a chrome context or not:
SVG hasFeature() API.
SVG hasExtension() API.
Use of SVG glyphs within custom OpenType fonts.
In these cases, everything is assumed to be content; that is, setting
the pref. to false will block use of the above features from chrome
as well. This is OK because these features are unlikely to be used by
core browser code.
---
browser/app/profile/000-tor-browser.js | 1 +
content/base/src/nsNameSpaceManager.cpp | 3 ++-
content/base/src/nsObjectLoadingContent.cpp | 16 +++++++++---
content/svg/content/src/nsSVGFeatures.cpp | 13 ++++++++++
gfx/thebes/gfxFont.cpp | 6 ++++-
image/src/ImageFactory.cpp | 33 ++++++++++++++++--------
layout/base/nsCSSFrameConstructor.cpp | 15 +++++++----
layout/build/nsContentDLF.cpp | 27 +++++++++++--------
layout/svg/nsSVGUtils.cpp | 37 +++++++++++++++++++++++++++
layout/svg/nsSVGUtils.h | 3 +++
uriloader/base/nsURILoader.cpp | 13 +++++++---
11 files changed, 131 insertions(+), 36 deletions(-)
diff --git a/browser/app/profile/000-tor-browser.js b/browser/app/profile/000-tor-browser.js
index ceb9394..e87ccff 100644
--- a/browser/app/profile/000-tor-browser.js
+++ b/browser/app/profile/000-tor-browser.js
@@ -116,6 +116,7 @@ pref("plugins.click_to_play", true);
pref("plugin.state.flash", 1);
pref("plugins.hide_infobar_for_missing_plugin", true);
pref("media.peerconnection.enabled", false); // Disable WebRTC interfaces
+pref("svg.inContent.enabled", true); // May be disabled via Torbutton's security slider.
// Network and performance
pref("network.http.pipelining", true);
diff --git a/content/base/src/nsNameSpaceManager.cpp b/content/base/src/nsNameSpaceManager.cpp
index 409e08c..3f4f9f8 100644
--- a/content/base/src/nsNameSpaceManager.cpp
+++ b/content/base/src/nsNameSpaceManager.cpp
@@ -17,6 +17,7 @@
#include "nsContentCreatorFunctions.h"
#include "nsString.h"
#include "nsINodeInfo.h"
+#include "nsSVGUtils.h"
#include "mozilla/ClearOnShutdown.h"
#include "mozilla/dom/XBLChildrenElement.h"
#include "mozilla/dom/Element.h"
@@ -153,7 +154,7 @@ NS_NewElement(Element** aResult,
if (ns == kNameSpaceID_MathML) {
return NS_NewMathMLElement(aResult, ni.forget());
}
- if (ns == kNameSpaceID_SVG) {
+ if (ns == kNameSpaceID_SVG && NS_SVGEnabled(ni->GetDocument())) {
return NS_NewSVGElement(aResult, ni.forget(), aFromParser);
}
if (ns == kNameSpaceID_XBL && ni->Equals(nsGkAtoms::children)) {
diff --git a/content/base/src/nsObjectLoadingContent.cpp b/content/base/src/nsObjectLoadingContent.cpp
index 8d9bdaa..d14c83e 100644
--- a/content/base/src/nsObjectLoadingContent.cpp
+++ b/content/base/src/nsObjectLoadingContent.cpp
@@ -57,6 +57,7 @@
#include "nsMimeTypes.h"
#include "nsStyleUtil.h"
#include "nsUnicharUtils.h"
+#include "nsSVGUtils.h"
#include "mozilla/Preferences.h"
#include "nsSandboxFlags.h"
@@ -2530,9 +2531,18 @@ nsObjectLoadingContent::GetTypeOfContent(const nsCString& aMIMEType)
// SVGs load as documents, but are their own capability
bool isSVG = aMIMEType.LowerCaseEqualsLiteral("image/svg+xml");
- Capabilities supportType = isSVG ? eSupportSVG : eSupportDocuments;
- if ((caps & supportType) && IsSupportedDocument(aMIMEType)) {
- return eType_Document;
+ bool isSVGEnabled = false;
+ if (isSVG) {
+ nsCOMPtr<nsIContent> thisContent =
+ do_QueryInterface(static_cast<nsIImageLoadingContent*>(this));
+ isSVGEnabled = NS_SVGEnabled(thisContent->OwnerDoc());
+ }
+
+ if (isSVGEnabled || !isSVG) {
+ Capabilities supportType = isSVG ? eSupportSVG : eSupportDocuments;
+ if ((caps & supportType) && IsSupportedDocument(aMIMEType)) {
+ return eType_Document;
+ }
}
if (caps & eSupportPlugins && PluginExistsForType(aMIMEType.get())) {
diff --git a/content/svg/content/src/nsSVGFeatures.cpp b/content/svg/content/src/nsSVGFeatures.cpp
index 153a00c..04e9917 100644
--- a/content/svg/content/src/nsSVGFeatures.cpp
+++ b/content/svg/content/src/nsSVGFeatures.cpp
@@ -13,6 +13,7 @@
*/
#include "nsSVGFeatures.h"
+#include "nsSVGUtils.h"
#include "nsIContent.h"
#include "nsIDocument.h"
#include "mozilla/Preferences.h"
@@ -22,6 +23,12 @@ using namespace mozilla;
/*static*/ bool
nsSVGFeatures::HasFeature(nsISupports* aObject, const nsAString& aFeature)
{
+ // Since we do not have access to the document here we pass nullptr, which
+ // means only the svg.inContent.enabled pref is checked. This is OK since
+ // we do not expect chrome code to use the HasFeature() API.
+ if (!NS_SVGEnabled(nullptr))
+ return false;
+
if (aFeature.EqualsLiteral("http://www.w3.org/TR/SVG11/feature#Script")) {
nsCOMPtr<nsIContent> content(do_QueryInterface(aObject));
if (content) {
@@ -44,6 +51,12 @@ nsSVGFeatures::HasFeature(nsISupports* aObject, const nsAString& aFeature)
/*static*/ bool
nsSVGFeatures::HasExtension(const nsAString& aExtension)
{
+ // Since we do not have access to the document here we pass nullptr, which
+ // means only the svg.inContent.enabled pref is checked. This is OK since
+ // we do not expect chrome code to use the HasExtension() API.
+ if (!NS_SVGEnabled(nullptr))
+ return false;
+
#define SVG_SUPPORTED_EXTENSION(str) if (aExtension.EqualsLiteral(str)) return true;
SVG_SUPPORTED_EXTENSION("http://www.w3.org/1999/xhtml")
SVG_SUPPORTED_EXTENSION("http://www.w3.org/1998/Math/MathML")
diff --git a/gfx/thebes/gfxFont.cpp b/gfx/thebes/gfxFont.cpp
index c5e2957..da25374 100644
--- a/gfx/thebes/gfxFont.cpp
+++ b/gfx/thebes/gfxFont.cpp
@@ -38,6 +38,7 @@
#include "mozilla/Preferences.h"
#include "mozilla/Services.h"
#include "mozilla/Telemetry.h"
+#include "nsSVGUtils.h"
#include "gfxSVGGlyphs.h"
#include "gfxMathTable.h"
#include "gfx2DGlue.h"
@@ -364,7 +365,10 @@ gfxFontEntry::RenderSVGGlyph(gfxContext *aContext, uint32_t aGlyphId,
bool
gfxFontEntry::TryGetSVGData(gfxFont* aFont)
{
- if (!gfxPlatform::GetPlatform()->OpenTypeSVGEnabled()) {
+ // For the NS_SVGEnabled() check, we pass nullptr because we do not have
+ // access to the document here. That is OK because we do not expect
+ // chrome documents to use custom fonts that contain embedded SVG glyphs.
+ if (!gfxPlatform::GetPlatform()->OpenTypeSVGEnabled() || !NS_SVGEnabled(nullptr)) {
return false;
}
diff --git a/image/src/ImageFactory.cpp b/image/src/ImageFactory.cpp
index 2daba13..578f95c 100644
--- a/image/src/ImageFactory.cpp
+++ b/image/src/ImageFactory.cpp
@@ -20,6 +20,7 @@
#include "Image.h"
#include "nsMediaFragmentURIParser.h"
#include "nsContentUtils.h"
+#include "nsSVGUtils.h"
#include "nsIScriptSecurityManager.h"
#include "ImageFactory.h"
@@ -110,6 +111,17 @@ ImageFactory::CanRetargetOnDataAvailable(ImageURL* aURI, bool aIsMultiPart)
return true;
}
+// Marks an image as having an error before returning it. Used with macros like
+// NS_ENSURE_SUCCESS, since we guarantee to always return an image even if an
+// error occurs, but callers need to be able to tell that this happened.
+template <typename T>
+static already_AddRefed<Image>
+BadImage(nsRefPtr<T>& image)
+{
+ image->SetHasError();
+ return image.forget();
+}
+
/* static */ already_AddRefed<Image>
ImageFactory::CreateImage(nsIRequest* aRequest,
imgStatusTracker* aStatusTracker,
@@ -126,6 +138,16 @@ ImageFactory::CreateImage(nsIRequest* aRequest,
// Select the type of image to create based on MIME type.
if (aMimeType.EqualsLiteral(IMAGE_SVG_XML)) {
+ nsCOMPtr<nsIChannel> channel(do_QueryInterface(aRequest));
+ if (!NS_SVGEnabledForChannel(channel)) {
+ // SVG is disabled. We must return an image object that is marked
+ // "bad", but we want to avoid invoking the VectorImage class (SVG code),
+ // so we return a PNG with the error flag set.
+ nsRefPtr<RasterImage> badImage = new RasterImage(aStatusTracker, aURI);
+ (void)badImage->Init(IMAGE_PNG, Image::INIT_FLAG_NONE);
+ return BadImage(badImage);
+ }
+
return CreateVectorImage(aRequest, aStatusTracker, aMimeType,
aURI, imageFlags, aInnerWindowId);
} else {
@@ -134,17 +156,6 @@ ImageFactory::CreateImage(nsIRequest* aRequest,
}
}
-// Marks an image as having an error before returning it. Used with macros like
-// NS_ENSURE_SUCCESS, since we guarantee to always return an image even if an
-// error occurs, but callers need to be able to tell that this happened.
-template <typename T>
-static already_AddRefed<Image>
-BadImage(nsRefPtr<T>& image)
-{
- image->SetHasError();
- return image.forget();
-}
-
/* static */ already_AddRefed<Image>
ImageFactory::CreateAnonymousImage(const nsCString& aMimeType)
{
diff --git a/layout/base/nsCSSFrameConstructor.cpp b/layout/base/nsCSSFrameConstructor.cpp
index 5cab7ca..786e3c2 100644
--- a/layout/base/nsCSSFrameConstructor.cpp
+++ b/layout/base/nsCSSFrameConstructor.cpp
@@ -89,6 +89,7 @@
#include "nsMathMLParts.h"
#include "mozilla/dom/SVGTests.h"
#include "nsSVGUtils.h"
+#include "nsIDOMSVGElement.h"
#include "nsRefreshDriver.h"
#include "nsRuleProcessorData.h"
@@ -2423,7 +2424,8 @@ nsCSSFrameConstructor::ConstructDocElementFrame(Element* aDocEle
else
#endif
if (aDocElement->IsSVG()) {
- if (aDocElement->Tag() != nsGkAtoms::svg) {
+ nsCOMPtr<nsIDOMSVGElement> svgElem = do_QueryInterface(aDocElement);
+ if (!svgElem || (aDocElement->Tag() != nsGkAtoms::svg)) {
return nullptr;
}
// We're going to call the right function ourselves, so no need to give a
@@ -5296,10 +5298,13 @@ nsCSSFrameConstructor::AddFrameConstructionItemsInternal(nsFrameConstructorState
data = FindMathMLData(element, aTag, aNameSpaceID, styleContext);
}
if (!data) {
- data = FindSVGData(element, aTag, aNameSpaceID, aParentFrame,
- aFlags & ITEM_IS_WITHIN_SVG_TEXT,
- aFlags & ITEM_ALLOWS_TEXT_PATH_CHILD,
- styleContext);
+ nsCOMPtr<nsIDOMSVGElement> svgElem = do_QueryInterface(element);
+ if (svgElem) {
+ data = FindSVGData(element, aTag, aNameSpaceID, aParentFrame,
+ aFlags & ITEM_IS_WITHIN_SVG_TEXT,
+ aFlags & ITEM_ALLOWS_TEXT_PATH_CHILD,
+ styleContext);
+ }
}
// Now check for XUL display types
diff --git a/layout/build/nsContentDLF.cpp b/layout/build/nsContentDLF.cpp
index d3081dd..1275590 100644
--- a/layout/build/nsContentDLF.cpp
+++ b/layout/build/nsContentDLF.cpp
@@ -25,6 +25,7 @@
#include "nsCRT.h"
#include "nsIViewSourceChannel.h"
#include "nsContentUtils.h"
+#include "nsSVGUtils.h"
#include "imgLoader.h"
#include "nsCharsetSource.h"
#include "nsMimeTypes.h"
@@ -171,9 +172,11 @@ nsContentDLF::CreateInstance(const char* aCommand,
}
}
- for (typeIndex = 0; gSVGTypes[typeIndex] && !knownType; ++typeIndex) {
- if (type.Equals(gSVGTypes[typeIndex])) {
- knownType = true;
+ if (NS_SVGEnabledForChannel(aChannel)) {
+ for (typeIndex = 0; gSVGTypes[typeIndex] && !knownType; ++typeIndex) {
+ if (type.Equals(gSVGTypes[typeIndex])) {
+ knownType = true;
+ }
}
}
@@ -218,14 +221,16 @@ nsContentDLF::CreateInstance(const char* aCommand,
}
}
- // Try SVG
- typeIndex = 0;
- while(gSVGTypes[typeIndex]) {
- if (!PL_strcmp(gSVGTypes[typeIndex++], aContentType)) {
- return CreateDocument(aCommand,
- aChannel, aLoadGroup,
- aContainer, kSVGDocumentCID,
- aDocListener, aDocViewer);
+ if (NS_SVGEnabledForChannel(aChannel)) {
+ // Try SVG
+ typeIndex = 0;
+ while(gSVGTypes[typeIndex]) {
+ if (!PL_strcmp(gSVGTypes[typeIndex++], aContentType)) {
+ return CreateDocument(aCommand,
+ aChannel, aLoadGroup,
+ aContainer, kSVGDocumentCID,
+ aDocListener, aDocViewer);
+ }
}
}
diff --git a/layout/svg/nsSVGUtils.cpp b/layout/svg/nsSVGUtils.cpp
index 3ebfbd7..da55070 100644
--- a/layout/svg/nsSVGUtils.cpp
+++ b/layout/svg/nsSVGUtils.cpp
@@ -48,6 +48,8 @@
#include "nsSVGPaintServerFrame.h"
#include "mozilla/dom/SVGSVGElement.h"
#include "nsTextFrame.h"
+#include "nsNetUtil.h"
+#include "nsContentUtils.h"
#include "SVGContentUtils.h"
#include "mozilla/unused.h"
@@ -55,9 +57,41 @@ using namespace mozilla;
using namespace mozilla::dom;
using namespace mozilla::gfx;
+static bool sSVGEnabledInContent;
static bool sSVGDisplayListHitTestingEnabled;
static bool sSVGDisplayListPaintingEnabled;
+// Determine if SVG should be enabled for aDoc. The svg.inContent.enabled
+// preference is checked as well as whether aDoc is a content or chrome doc.
+// If aChannel is NULL, the pref. value is returned.
+bool
+NS_SVGEnabled(nsIDocument *aDoc)
+{
+ return NS_SVGEnabledForChannel(aDoc ? aDoc->GetChannel() : nullptr);
+}
+
+// Determine if SVG should be enabled for aChannel. The svg.inContent.enabled
+// preference is checked as well as whether the load context associated with
+// aChannel is content or chrome.
+// If aChannel is NULL, the pref. value is returned.
+bool
+NS_SVGEnabledForChannel(nsIChannel *aChannel)
+{
+ if (sSVGEnabledInContent)
+ return true;
+
+ if (!aChannel)
+ return false;
+
+ bool isContent = true;
+ nsCOMPtr<nsILoadContext> ctx;
+ NS_QueryNotificationCallbacks(aChannel, ctx);
+ if (ctx)
+ ctx->GetIsContent(&isContent);
+
+ return !isContent;
+}
+
bool
NS_SVGDisplayListHitTestingEnabled()
{
@@ -125,6 +159,9 @@ SVGAutoRenderState::IsPaintingToWindow(nsRenderingContext *aContext)
void
nsSVGUtils::Init()
{
+ Preferences::AddBoolVarCache(&sSVGEnabledInContent,
+ "svg.inContent.enabled");
+
Preferences::AddBoolVarCache(&sSVGDisplayListHitTestingEnabled,
"svg.display-lists.hit-testing.enabled");
diff --git a/layout/svg/nsSVGUtils.h b/layout/svg/nsSVGUtils.h
index 5f99fa7..0cd67b8 100644
--- a/layout/svg/nsSVGUtils.h
+++ b/layout/svg/nsSVGUtils.h
@@ -77,6 +77,9 @@ class SourceSurface;
bool NS_SVGDisplayListHitTestingEnabled();
bool NS_SVGDisplayListPaintingEnabled();
+bool NS_SVGEnabled(nsIDocument *aDoc);
+bool NS_SVGEnabledForChannel(nsIChannel *aChannel);
+
/**
* Sometimes we need to distinguish between an empty box and a box
* that contains an element that has no size e.g. a point at the origin.
diff --git a/uriloader/base/nsURILoader.cpp b/uriloader/base/nsURILoader.cpp
index e1545f2..1871784 100644
--- a/uriloader/base/nsURILoader.cpp
+++ b/uriloader/base/nsURILoader.cpp
@@ -37,6 +37,7 @@
#include "nsNetUtil.h"
#include "nsThreadUtils.h"
#include "nsReadableUtils.h"
+#include "nsSVGUtils.h"
#include "nsError.h"
#include "nsICategoryManager.h"
@@ -442,11 +443,15 @@ nsresult nsDocumentOpenInfo::DispatchContent(nsIRequest *request, nsISupports *
//
// Fourth step: try to find an nsIContentHandler for our type.
//
- nsAutoCString handlerContractID (NS_CONTENT_HANDLER_CONTRACTID_PREFIX);
- handlerContractID += mContentType;
+ nsCOMPtr<nsIContentHandler> contentHandler;
+ if (!mContentType.EqualsASCII(IMAGE_SVG_XML) ||
+ NS_SVGEnabledForChannel(aChannel)) {
+ nsAutoCString handlerContractID (NS_CONTENT_HANDLER_CONTRACTID_PREFIX);
+ handlerContractID += mContentType;
+
+ contentHandler = do_CreateInstance(handlerContractID.get());
+ }
- nsCOMPtr<nsIContentHandler> contentHandler =
- do_CreateInstance(handlerContractID.get());
if (contentHandler) {
LOG((" Content handler found"));
rv = contentHandler->HandleContent(mContentType.get(),
1
0

[tor-browser/tor-browser-31.5.0esr-4.5-1] Bug 15201: Windows: disable "runas" code path in updater.
by mikeperry@torproject.org 21 Mar '15
by mikeperry@torproject.org 21 Mar '15
21 Mar '15
commit 4a145590d0e636e3acdd1f00037429771e64e3b8
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Fri Mar 20 15:40:23 2015 -0400
Bug 15201: Windows: disable "runas" code path in updater.
Instead of using "runas" to try to elevate privileges, the updater
now fails if the user does not have permission to apply an update.
This avoids potential security issues such as CVE-2015-0833.
---
toolkit/mozapps/update/updater/updater.cpp | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/toolkit/mozapps/update/updater/updater.cpp b/toolkit/mozapps/update/updater/updater.cpp
index ee7e245..3ba92b3 100644
--- a/toolkit/mozapps/update/updater/updater.cpp
+++ b/toolkit/mozapps/update/updater/updater.cpp
@@ -3033,6 +3033,16 @@ int NS_main(int argc, NS_tchar **argv)
// using the service is because we are testing.
if (!useService && !noServiceFallback &&
updateLockFileHandle == INVALID_HANDLE_VALUE) {
+#ifdef TOR_BROWSER_UPDATE
+ // Because the user profile is contained within the Tor Browser
+ // installation directory, the user almost certainly has permission to
+ // apply updates. Therefore, to avoid potential security issues such
+ // as CVE-2015-0833, do not attempt to elevate privileges. Instead,
+ // write a "failed" message to the update status file (this function
+ // will return immediately after the CloseHandle(elevatedFileHandle)
+ // call below).
+ WriteStatusFile(WRITE_ERROR_ACCESS_DENIED);
+#else
SHELLEXECUTEINFO sinfo;
memset(&sinfo, 0, sizeof(SHELLEXECUTEINFO));
sinfo.cbSize = sizeof(SHELLEXECUTEINFO);
@@ -3054,6 +3064,7 @@ int NS_main(int argc, NS_tchar **argv)
} else {
WriteStatusFile(ELEVATION_CANCELED);
}
+#endif
}
if (argc > callbackIndex) {
1
0

[torbutton/master] Bug 13650: Clip window height to 1000px (configurable)
by mikeperry@torproject.org 20 Mar '15
by mikeperry@torproject.org 20 Mar '15
20 Mar '15
commit 1f4436524793eb7321ac2cfafacb5c2ea8485790
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Thu Mar 19 18:54:26 2015 -0700
Bug 13650: Clip window height to 1000px (configurable)
1000px was chosen based on the cutoff for vertical display users from the data
in: https://trac.torproject.org/projects/tor/ticket/13025#comment:17
---
src/chrome/content/torbutton.js | 12 ++++++++----
src/defaults/preferences/preferences.js | 3 +++
2 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index 09d6080..7084584 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -3452,16 +3452,20 @@ var torbutton_resizelistener =
try {
width = m_tb_prefs.getIntPref("extensions.torbutton.window.innerWidth");
} catch(e) {
- if (maxWidth > 1000) {
- width = 1000;
- } else {
- width = Math.floor(maxWidth/200.0)*200;
+ let cappedWidth = m_tb_prefs.getIntPref("extensions.torbutton.window.maxWidth");
+ if (maxWidth > cappedWidth) {
+ maxWidth = cappedWidth;
}
+ width = Math.floor(maxWidth/200.0)*200;
}
try {
height = m_tb_prefs.getIntPref("extensions.torbutton.window.innerHeight");
} catch(e) {
+ let cappedHeight = m_tb_prefs.getIntPref("extensions.torbutton.window.maxHeight");
+ if (maxHeight > cappedHeight) {
+ maxHeight = cappedHeight;
+ }
height = Math.floor(maxHeight/100.0)*100;
}
diff --git a/src/defaults/preferences/preferences.js b/src/defaults/preferences/preferences.js
index fb1a702..e1686c4 100644
--- a/src/defaults/preferences/preferences.js
+++ b/src/defaults/preferences/preferences.js
@@ -227,3 +227,6 @@ pref("extensions.torbutton.confirm_newnym", true);
// Browser home page, and spell checker dictionary:
pref("browser.startup.homepage", "chrome://torbutton/locale/browser.properties");
pref("spellchecker.dictionary", "chrome://torbutton/locale/browser.properties");
+
+pref("extensions.torbutton.window.maxHeight", 1000);
+pref("extensions.torbutton.window.maxWidth", 1000);
1
0

[torbutton/master] Merge remote-tracking branch 'mikeperry/bug13650'
by mikeperry@torproject.org 20 Mar '15
by mikeperry@torproject.org 20 Mar '15
20 Mar '15
commit 55d3976e8dbfe7e0d969faf50722e6b0e5f869ac
Merge: 430ccaa 1f44365
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Fri Mar 20 14:21:54 2015 -0700
Merge remote-tracking branch 'mikeperry/bug13650'
src/chrome/content/torbutton.js | 12 ++++++++----
src/defaults/preferences/preferences.js | 3 +++
2 files changed, 11 insertions(+), 4 deletions(-)
1
0

[torbutton/master] Bug 9387: Version 0.9 of the Security Slider
by mikeperry@torproject.org 20 Mar '15
by mikeperry@torproject.org 20 Mar '15
20 Mar '15
commit 430ccaa1596e03e3ea0a36c51c4623fe8ff67d52
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Mar 20 14:54:09 2015 +0000
Bug 9387: Version 0.9 of the Security Slider
Showing a notification to the user hinting at our new security slider
to adjust the security settings.
---
src/chrome/content/torbutton.js | 28 ++++++++++++++++++++++++++++
src/chrome/locale/en/torbutton.properties | 3 +++
src/defaults/preferences/preferences.js | 1 +
3 files changed, 32 insertions(+)
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index d3afef8..77dc871 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -1044,6 +1044,34 @@ function torbutton_on_abouttor_load(aDoc) {
if (m_tb_orig_BrowserOnAboutPageLoad)
m_tb_orig_BrowserOnAboutPageLoad(aDoc);
+
+ // Show the notification about the new security slider.
+ if (m_tb_prefs.
+ getBoolPref("extensions.torbutton.show_slider_notification")) {
+ let sb = torbutton_get_stringbundle();
+ let button_label =
+ torbutton_get_property_string("torbutton.slider_notification_button");
+ let box = gBrowser.getNotificationBox();
+
+ let buttons = [{
+ label: button_label,
+ accessKey: 'S',
+ popup: null,
+ callback: function() {
+ window.openDialog("chrome://torbutton/content/preferences.xul",
+ "torbutton-preferences","chrome");}
+ }];
+
+ let priority = box.PRIORITY_INFO_LOW;
+ let message =
+ torbutton_get_property_string("torbutton.slider_notification");
+
+ box.appendNotification(message, 'new-menu-notification',
+ "chrome://torbutton/skin/tor-enabled-16.png",
+ priority, buttons);
+ m_tb_prefs.
+ setBoolPref("extensions.torbutton.show_slider_notification", false);
+ }
}
function torbutton_is_abouttor_doc(aDoc) {
diff --git a/src/chrome/locale/en/torbutton.properties b/src/chrome/locale/en/torbutton.properties
index 7998437..8fc4600 100644
--- a/src/chrome/locale/en/torbutton.properties
+++ b/src/chrome/locale/en/torbutton.properties
@@ -55,6 +55,9 @@ torbutton.popup.confirm_plugins = Plugins such as Flash can harm your privacy an
torbutton.popup.never_ask_again = Never ask me again
torbutton.popup.confirm_newnym = Tor Browser will close all windows and tabs. All website sessions will be lost.\n\nRestart Tor Browser now to reset your identity?\n\n
+torbutton.slider_notification = The green onion menu has now a security slider which lets you adjust your security level. Check it out!
+torbutton.slider_notification_button = Open security settings
+
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=This website (%S) attempted to extract HTML5 canvas image data, which may be used to uniquely identify your computer.\n\nShould Tor Browser allow this website to extract HTML5 canvas image data?
canvas.notNow=Not Now
diff --git a/src/defaults/preferences/preferences.js b/src/defaults/preferences/preferences.js
index 677447b..9a5df09 100644
--- a/src/defaults/preferences/preferences.js
+++ b/src/defaults/preferences/preferences.js
@@ -178,6 +178,7 @@ pref("extensions.torbutton.restrict_thirdparty", true);
// Security Slider
pref("extensions.torbutton.security_slider", 4);
pref("extensions.torbutton.security_custom", false);
+pref("extensions.torbutton.show_slider_notification", true);
// Google Captcha prefs
// FIXME: NID cookie?
1
0

20 Mar '15
commit 35970c68d6af10fdec19189aae64d76e048acc4e
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Mar 20 08:13:41 2015 +0000
Bug 9387: Version 0.8 of the Security Slider
This is the first version of the slider that contains explanatory
strings to make it more clear to the user what is changed and why.
Special thanks to Mike Perry for helping out getting this part of the
UI in good shape.
---
src/chrome/content/preferences.js | 48 ++++++++
src/chrome/content/preferences.xul | 172 ++++++++++++++++++++++++++--
src/chrome/content/torbutton.js | 185 ++++++++-----------------------
src/chrome/locale/en/torbutton.dtd | 27 +++++
src/chrome/skin/preferences.css | 7 ++
src/defaults/preferences/preferences.js | 2 +-
6 files changed, 292 insertions(+), 149 deletions(-)
diff --git a/src/chrome/content/preferences.js b/src/chrome/content/preferences.js
index eaaa059..be77793 100644
--- a/src/chrome/content/preferences.js
+++ b/src/chrome/content/preferences.js
@@ -192,13 +192,18 @@ function torbutton_prefs_init(doc) {
sec_slider.value = o_torprefs.getIntPref('security_slider');
sec_custom.checked = custom_values;
sec_custom.disabled = !custom_values;
+ torbutton_set_slider_text(doc, sec_custom.checked);
// If the custom checkbox is checked and the user is done with dragging
// uncheck the checkbox to allow setting the (newly) chosen security level.
sec_slider.dragStateChanged = function(isDragging) {
if (!isDragging && sec_custom.checked) {
sec_custom.checked = false;
+ sec_custom.disabled = true;
}
}
+ sec_slider.valueChanged = function(which, newValue, userChanged) {
+ torbutton_set_slider_text(doc, false);
+ }
torbutton_prefs_set_field_attributes(doc);
}
@@ -473,6 +478,49 @@ function torbutton_toggle_slider(doc, pos) {
if (sec_custom.checked) {
sec_custom.checked = false;
}
+ torbutton_set_slider_text(doc, false);
+}
+
+function torbutton_set_slider_text(doc, custom) {
+ let level = doc.getElementById("torbutton_sec_slider").value;
+ if (custom) {
+ level = 5;
+ }
+ switch (level) {
+ case (1):
+ doc.getElementById("desc_low").collapsed = true;
+ doc.getElementById("desc_medium_low").collapsed = true;
+ doc.getElementById("desc_medium_high").collapsed = true;
+ doc.getElementById("desc_high").collapsed = false;
+ break;
+ case (2):
+ doc.getElementById("desc_low").collapsed = true;
+ doc.getElementById("desc_medium_low").collapsed = true;
+ doc.getElementById("desc_medium_high").collapsed = false;
+ doc.getElementById("desc_high").collapsed = true;
+ break;
+ case (3):
+ doc.getElementById("desc_low").collapsed = true;
+ doc.getElementById("desc_medium_low").collapsed = false;
+ doc.getElementById("desc_medium_high").collapsed = true;
+ doc.getElementById("desc_high").collapsed = true;
+ break;
+ case (4):
+ doc.getElementById("desc_low").collapsed = false;
+ doc.getElementById("desc_medium_low").collapsed = true;
+ doc.getElementById("desc_medium_high").collapsed = true;
+ doc.getElementById("desc_high").collapsed = true;
+ break;
+ case (5):
+ doc.getElementById("desc_low").collapsed = true;
+ doc.getElementById("desc_medium_low").collapsed = true;
+ doc.getElementById("desc_medium_high").collapsed = true;
+ doc.getElementById("desc_high").collapsed = true;
+ break;
+ }
+ // It can happen that the descriptions of the slider settings consume more
+ // space than originally allocated. Adapt the dialog size accordingly.
+ sizeToContent();
}
function torbutton_prefs_check_disk() {
diff --git a/src/chrome/content/preferences.xul b/src/chrome/content/preferences.xul
index 0a90f0f..d25fba4 100644
--- a/src/chrome/content/preferences.xul
+++ b/src/chrome/content/preferences.xul
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://torbutton/skin/preferences.css" type="text/css"?>
<!DOCTYPE overlay SYSTEM "chrome://torbutton/locale/torbutton.dtd">
@@ -156,36 +157,144 @@
<groupbox>
<caption label="&torbutton.prefs.sec_caption;"/>
<hbox>
- <vbox>
- <scale id="torbutton_sec_slider" height="200" min="1" max="4"
+ <vbox height="200">
+ <scale id="torbutton_sec_slider" flex="1" min="1" max="4"
movetoclick="true" orient="vertical"/>
</vbox>
<vbox height="200">
- <hbox flex="1" align="center">
- <description id="torbutton_sec_low"
+ <hbox flex="1" align="start">
+ <description id="torbutton_sec_high"
+ tooltip="high_preview"
onclick="torbutton_toggle_slider(document, 1);">
- &torbutton.prefs.sec_low;
+ &torbutton.prefs.sec_high;
</description>
</hbox>
<hbox flex="1" align="center">
- <description id="torbutton_sec_med_low"
+ <description id="torbutton_sec_med_high"
+ tooltip="mh_preview"
onclick="torbutton_toggle_slider(document, 2);">
- &torbutton.prefs.sec_med_low;
+ &torbutton.prefs.sec_med_high;
</description>
</hbox>
<hbox flex="1" align="center">
- <description id="torbutton_sec_med_high"
+ <description id="torbutton_sec_med_low"
+ tooltip="ml_preview"
onclick="torbutton_toggle_slider(document, 3);">
- &torbutton.prefs.sec_med_high;
+ &torbutton.prefs.sec_med_low;
</description>
</hbox>
- <hbox flex="1" align="center">
- <description id="torbutton_sec_high"
+ <hbox flex="1" align="end">
+ <description id="torbutton_sec_low"
+ tooltip="low_preview"
onclick="torbutton_toggle_slider(document, 4);">
- &torbutton.prefs.sec_high;
+ &torbutton.prefs.sec_low;
</description>
</hbox>
</vbox>
+ <spacer flex="1"/>
+ <!-- A width of 400 is already too much for OS X it seems. The above
+ spacer tag would basically be useless and the layout ugly. -->
+ <vbox flex="1" width="300">
+ <vbox id="desc_high" collapsed="true">
+ <description
+ class="slider-text-size, slider-text-weight">
+ &torbutton.prefs.sec_gen_desc;
+ </description>
+ <description class="slider-text-size"
+ tooltiptext="&torbutton.prefs.sec_html5_tooltip;">
+ &torbutton.prefs.sec_html5_desc;
+ </description>
+ <description class="slider-text-size"
+ tooltiptext="&torbutton.prefs.sec_jit_desc_tooltip; &torbutton.prefs.sec_baseline_jit_desc_tooltip;">
+ &torbutton.prefs.sec_all_jit_desc; &torbutton.prefs.sec_jit_slower_desc;
+ </description>
+ <description class="slider-text-size"
+ tooltiptext="&torbutton.prefs.sec_jar_tooltip;">
+ &torbutton.prefs.sec_jar_desc;
+ </description>
+ <description class="slider-text-size"
+ tooltiptext="&torbutton.prefs.sec_mathml_desc_tooltip;">
+ &torbutton.prefs.sec_mathml_desc;
+ </description>
+ <description class="slider-text-size"
+ tooltiptext="&torbutton.prefs.sec_font_rend_svg_tooltip; &torbutton.prefs.sec_font_rend_graphite_tooltip;">
+ &torbutton.prefs.sec_font_rend_desc;
+ </description>
+ <description class="slider-text-size"
+ tooltiptext="&torbutton.prefs.sec_js_desc_tooltip;">
+ &torbutton.prefs.sec_all_js_desc;
+ </description>
+ <description class="slider-text-size"
+ tooltiptext="&torbutton.prefs.sec_svg_desc_tooltip;">
+ &torbutton.prefs.sec_svg_desc;
+ </description>
+ <description class="slider-text-size"
+ tooltiptext="&torbutton.prefs.sec_webfonts_desc_tooltip;">
+ &torbutton.prefs.sec_webfonts_desc;
+ </description>
+ </vbox>
+ <vbox id="desc_medium_high" collapsed="true">
+ <description
+ class="slider-text-size, slider-text-weight">
+ &torbutton.prefs.sec_gen_desc;
+ </description>
+ <description class="slider-text-size"
+ tooltiptext="&torbutton.prefs.sec_html5_tooltip;">
+ &torbutton.prefs.sec_html5_desc;
+ </description>
+ <description class="slider-text-size"
+ tooltiptext="&torbutton.prefs.sec_jit_desc_tooltip; &torbutton.prefs.sec_baseline_jit_desc_tooltip;">
+ &torbutton.prefs.sec_all_jit_desc; &torbutton.prefs.sec_jit_slower_desc;
+ </description>
+ <description class="slider-text-size"
+ tooltiptext="&torbutton.prefs.sec_jar_tooltip;">
+ &torbutton.prefs.sec_jar_desc;
+ </description>
+ <description class="slider-text-size"
+ tooltiptext="&torbutton.prefs.sec_mathml_desc_tooltip;">
+ &torbutton.prefs.sec_mathml_desc;
+ </description>
+ <description class="slider-text-size"
+ tooltiptext="&torbutton.prefs.sec_font_rend_svg_tooltip; &torbutton.prefs.sec_font_rend_graphite_tooltip;">
+ &torbutton.prefs.sec_font_rend_desc;
+ </description>
+ <description class="slider-text-size"
+ tooltiptext="&torbutton.prefs.sec_js_desc_tooltip;">
+ &torbutton.prefs.sec_js_https_desc;
+ </description>
+ </vbox>
+ <vbox id="desc_medium_low" collapsed="true">
+ <description
+ class="slider-text-size, slider-text-weight">
+ &torbutton.prefs.sec_gen_desc;
+ </description>
+ <description class="slider-text-size"
+ tooltiptext="&torbutton.prefs.sec_html5_tooltip;">
+ &torbutton.prefs.sec_html5_desc;
+ </description>
+ <description class="slider-text-size"
+ tooltiptext="&torbutton.prefs.sec_jit_desc_tooltip;">
+ &torbutton.prefs.sec_some_jit_desc; &torbutton.prefs.sec_jit_slower_desc;
+ </description>
+ <description class="slider-text-size"
+ tooltiptext="&torbutton.prefs.sec_jar_tooltip;">
+ &torbutton.prefs.sec_jar_desc;
+ </description>
+ <description class="slider-text-size"
+ tooltiptext="&torbutton.prefs.sec_mathml_desc_tooltip;">
+ &torbutton.prefs.sec_mathml_desc;
+ </description>
+ </vbox>
+ <vbox id="desc_low" collapsed="false">
+ <description
+ class="slider-text-size, slider-text-weight">
+ &torbutton.prefs.sec_low_desc;
+ </description>
+ <description class="slider-text-size">
+ &torbutton.prefs.sec_low_usable_desc;
+ </description>
+ </vbox>
+ </vbox>
</hbox>
<hbox>
<checkbox id="torbutton_sec_custom" flex="1"
@@ -198,4 +307,43 @@
</tabpanels>
</tabbox>
+ <tooltip id="high_preview">
+ <html:b>&torbutton.prefs.sec_gen_desc;</html:b>
+ <html:br></html:br>
+ <html:br></html:br>
+ <html:div>&torbutton.prefs.sec_html5_desc;</html:div>
+ <html:div>&torbutton.prefs.sec_some_jit_desc;</html:div>
+ <html:div>&torbutton.prefs.sec_jar_desc;</html:div>
+ <html:div>&torbutton.prefs.sec_mathml_desc;</html:div>
+ <html:div>&torbutton.prefs.sec_font_rend_desc;</html:div>
+ <html:div>&torbutton.prefs.sec_all_js_desc;</html:div>
+ <html:div>&torbutton.prefs.sec_svg_desc;</html:div>
+ <html:div>&torbutton.prefs.sec_webfonts_desc;</html:div>
+ </tooltip>
+ <tooltip id="mh_preview">
+ <html:b>&torbutton.prefs.sec_gen_desc;</html:b>
+ <html:br></html:br>
+ <html:br></html:br>
+ <html:div>&torbutton.prefs.sec_html5_desc;</html:div>
+ <html:div>&torbutton.prefs.sec_some_jit_desc;</html:div>
+ <html:div>&torbutton.prefs.sec_jar_desc;</html:div>
+ <html:div>&torbutton.prefs.sec_mathml_desc;</html:div>
+ <html:div>&torbutton.prefs.sec_font_rend_desc;</html:div>
+ <html:div>&torbutton.prefs.sec_js_https_desc;</html:div>
+ </tooltip>
+ <tooltip id="ml_preview">
+ <html:b>&torbutton.prefs.sec_gen_desc;</html:b>
+ <html:br></html:br>
+ <html:br></html:br>
+ <html:div>&torbutton.prefs.sec_html5_desc;</html:div>
+ <html:div>&torbutton.prefs.sec_some_jit_desc;</html:div>
+ <html:div>&torbutton.prefs.sec_jar_desc;</html:div>
+ <html:div>&torbutton.prefs.sec_mathml_desc;</html:div>
+ </tooltip>
+ <tooltip id="low_preview">
+ <html:b>&torbutton.prefs.sec_low_desc;</html:b>
+ <html:br></html:br>
+ <html:br></html:br>
+ <html:div>&torbutton.prefs.sec_low_usable_desc;</html:div>
+ </tooltip>
</dialog>
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index f7e99a0..d3afef8 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -235,15 +235,12 @@ var torbutton_unique_pref_observer =
case "noscript.forbidMedia":
case "media.webaudio.enabled":
case "network.jar.block-remote-files":
+ case "mathml.disabled":
case "javascript.options.baselinejit.content":
case "noscript.forbidFonts":
case "gfx.font_rendering.graphite.enabled":
case "noscript.globalHttpsWhitelist":
case "noscript.global":
- case "media.ogg.enabled":
- case "media.opus.enabled":
- case "media.wave.enabled":
- case "media.apple.mp3.enabled":
// |m_tb_slider_update| is only set if the user updated a
// preference under control of the security slider via the
// slider on the Torbutton dialog. This in turn means we can
@@ -2197,10 +2194,6 @@ function torbutton_update_thirdparty_prefs() {
prefService.savePrefFile(null);
}
-var torbutton_sec_l_bool_prefs = {
- "gfx.font_rendering.opentype_svg.enabled" : false,
-};
-
var torbutton_sec_ml_bool_prefs = {
"javascript.options.ion.content" : false,
"javascript.options.typeinference" : false,
@@ -2208,23 +2201,21 @@ var torbutton_sec_ml_bool_prefs = {
"noscript.forbidMedia" : true,
"media.webaudio.enabled" : false,
"network.jar.block-remote-files" : true,
- // XXX: pref for disabling MathML is missing
+ "mathml.disabled" : true
};
var torbutton_sec_mh_bool_prefs = {
"javascript.options.baselinejit.content" : false,
+ "gfx.font_rendering.graphite.enabled" : false,
+ "gfx.font_rendering.opentype_svg.enabled" : false,
"noscript.global" : false,
- "noscript.globalHttpsWhitelist" : true,
- // XXX: pref for disableing SVG is missing
+ "noscript.globalHttpsWhitelist" : true
};
var torbutton_sec_h_bool_prefs = {
"noscript.forbidFonts" : true,
"noscript.global" : false,
- "media.ogg.enabled" : false,
- "media.opus.enabled" : false,
- "media.wave.enabled" : false,
- "media.apple.mp3.enabled" : false
+ // XXX: pref for disabling SVG is missing
};
function torbutton_update_security_slider() {
@@ -2233,18 +2224,20 @@ function torbutton_update_security_slider() {
let mode = m_tb_prefs.getIntPref("extensions.torbutton.security_slider");
let capValue = m_tb_prefs.getCharPref("capability.policy.maonoscript.sites");
switch (mode) {
- case 1:
- for (p in torbutton_sec_l_bool_prefs) {
- m_tb_prefs.setBoolPref(p, torbutton_sec_l_bool_prefs[p]);
- }
+ case 1:
for (p in torbutton_sec_ml_bool_prefs) {
- m_tb_prefs.setBoolPref(p, !torbutton_sec_ml_bool_prefs[p])
+ m_tb_prefs.setBoolPref(p, torbutton_sec_ml_bool_prefs[p])
}
for (p in torbutton_sec_mh_bool_prefs) {
- m_tb_prefs.setBoolPref(p, !torbutton_sec_mh_bool_prefs[p])
+ m_tb_prefs.setBoolPref(p, torbutton_sec_mh_bool_prefs[p])
+ // noscript.globalHttpsWhitelist is special: We don't want it in this
+ // mode.
+ if (p === "noscript.globalHttpsWhitelist") {
+ m_tb_prefs.setBoolPref(p, !torbutton_sec_mh_bool_prefs[p])
+ }
}
for (p in torbutton_sec_h_bool_prefs) {
- m_tb_prefs.setBoolPref(p, !torbutton_sec_h_bool_prefs[p])
+ m_tb_prefs.setBoolPref(p, torbutton_sec_h_bool_prefs[p])
}
// Removing "https:" is needed due to a bug in older Noscript versions.
// We leave that in for a while as there may be users that were affected
@@ -2254,18 +2247,22 @@ function torbutton_update_security_slider() {
m_tb_prefs.setCharPref("capability.policy.maonoscript.sites",
capValue.replace(" https:", ""));
}
- if (m_tb_prefs.getCharPref("general.useragent.locale") !== "ko" ||
- m_tb_prefs.getCharPref("general.useragent.locale") !== "vi" ||
- m_tb_prefs.getCharPref("general.useragent.locale") !== "zh-CN") {
- m_tb_prefs.setBoolPref("gfx.font_rendering.graphite.enabled", false);
- } else {
- m_tb_prefs.setBoolPref("gfx.font_rendering.graphite.enabled", true);
- }
break;
case 2:
- for (p in torbutton_sec_l_bool_prefs) {
- m_tb_prefs.setBoolPref(p, torbutton_sec_l_bool_prefs[p]);
+ for (p in torbutton_sec_ml_bool_prefs) {
+ m_tb_prefs.setBoolPref(p, torbutton_sec_ml_bool_prefs[p])
+ }
+ // Order matters here as both the high mode and the medium-high mode
+ // share some preferences/values. So, let's revert the high mode
+ // preferences first and set the medium-high mode ones afterwards.
+ for (p in torbutton_sec_h_bool_prefs) {
+ m_tb_prefs.setBoolPref(p, !torbutton_sec_h_bool_prefs[p])
+ }
+ for (p in torbutton_sec_mh_bool_prefs) {
+ m_tb_prefs.setBoolPref(p, torbutton_sec_mh_bool_prefs[p])
}
+ break;
+ case 3:
for (p in torbutton_sec_ml_bool_prefs) {
m_tb_prefs.setBoolPref(p, torbutton_sec_ml_bool_prefs[p])
}
@@ -2283,49 +2280,16 @@ function torbutton_update_security_slider() {
m_tb_prefs.setCharPref("capability.policy.maonoscript.sites",
capValue.replace(" https:", ""));
}
- if (m_tb_prefs.getCharPref("general.useragent.locale") !== "ko" ||
- m_tb_prefs.getCharPref("general.useragent.locale") !== "vi" ||
- m_tb_prefs.getCharPref("general.useragent.locale") !== "zh-CN") {
- m_tb_prefs.setBoolPref("gfx.font_rendering.graphite.enabled", false);
- } else {
- m_tb_prefs.setBoolPref("gfx.font_rendering.graphite.enabled", true);
- }
- break;
- case 3:
- for (p in torbutton_sec_l_bool_prefs) {
- m_tb_prefs.setBoolPref(p, torbutton_sec_l_bool_prefs[p]);
- }
- for (p in torbutton_sec_ml_bool_prefs) {
- m_tb_prefs.setBoolPref(p, torbutton_sec_ml_bool_prefs[p])
- }
- // Order matters here as both the high mode and the medium-high mode
- // share some preferences/values. So, let's revert the high mode
- // preferences first and set the medium-high mode ones afterwards.
- for (p in torbutton_sec_h_bool_prefs) {
- m_tb_prefs.setBoolPref(p, !torbutton_sec_h_bool_prefs[p])
- }
- for (p in torbutton_sec_mh_bool_prefs) {
- m_tb_prefs.setBoolPref(p, torbutton_sec_mh_bool_prefs[p])
- }
- m_tb_prefs.setBoolPref("gfx.font_rendering.graphite.enabled", false);
break;
case 4:
- for (p in torbutton_sec_l_bool_prefs) {
- m_tb_prefs.setBoolPref(p, torbutton_sec_l_bool_prefs[p]);
- }
for (p in torbutton_sec_ml_bool_prefs) {
- m_tb_prefs.setBoolPref(p, torbutton_sec_ml_bool_prefs[p])
+ m_tb_prefs.setBoolPref(p, !torbutton_sec_ml_bool_prefs[p])
}
for (p in torbutton_sec_mh_bool_prefs) {
- m_tb_prefs.setBoolPref(p, torbutton_sec_mh_bool_prefs[p])
- // noscript.globalHttpsWhitelist is special: We don't want it in this
- // mode.
- if (p === "noscript.globalHttpsWhitelist") {
- m_tb_prefs.setBoolPref(p, !torbutton_sec_mh_bool_prefs[p])
- }
+ m_tb_prefs.setBoolPref(p, !torbutton_sec_mh_bool_prefs[p])
}
for (p in torbutton_sec_h_bool_prefs) {
- m_tb_prefs.setBoolPref(p, torbutton_sec_h_bool_prefs[p])
+ m_tb_prefs.setBoolPref(p, !torbutton_sec_h_bool_prefs[p])
}
// Removing "https:" is needed due to a bug in older Noscript versions.
// We leave that in for a while as there may be users that were affected
@@ -2335,7 +2299,6 @@ function torbutton_update_security_slider() {
m_tb_prefs.setCharPref("capability.policy.maonoscript.sites",
capValue.replace(" https:", ""));
}
- m_tb_prefs.setBoolPref("gfx.font_rendering.graphite.enabled", true);
break;
}
m_tb_sliderUpdate = false;
@@ -2348,35 +2311,23 @@ function torbutton_security_slider_custom_check(mode) {
let capValue = m_tb_prefs.getCharPref("capability.policy.maonoscript.sites");
switch (mode) {
case 1:
- for (p in torbutton_sec_l_bool_prefs) {
- if (m_tb_prefs.getBoolPref(p) !== torbutton_sec_l_bool_prefs[p]) {
- return;
- }
- }
for (p in torbutton_sec_ml_bool_prefs) {
- if (m_tb_prefs.getBoolPref(p) === torbutton_sec_ml_bool_prefs[p]) {
+ if (m_tb_prefs.getBoolPref(p) !== torbutton_sec_ml_bool_prefs[p]) {
return;
}
}
for (p in torbutton_sec_mh_bool_prefs) {
- if (m_tb_prefs.getBoolPref(p) === torbutton_sec_mh_bool_prefs[p]) {
+ if (m_tb_prefs.getBoolPref(p) !== torbutton_sec_mh_bool_prefs[p]) {
+ // We don't want to have the whitelist in high mode. JavaScript is
+ // disabled globally.
+ if (p === "noscript.globalHttpsWhitelist") {
+ continue;
+ }
return;
}
}
for (p in torbutton_sec_h_bool_prefs) {
- if (m_tb_prefs.getBoolPref(p) === torbutton_sec_h_bool_prefs[p]) {
- return;
- }
- }
- if (m_tb_prefs.getCharPref("general.useragent.locale") !== "ko" ||
- m_tb_prefs.getCharPref("general.useragent.locale") !== "vi" ||
- m_tb_prefs.getCharPref("general.useragent.locale") !== "zh-CN") {
-
- if (m_tb_prefs.getBoolPref("gfx.font_rendering.graphite.enabled")) {
- return;
- }
- } else {
- if (!m_tb_prefs.getBoolPref("gfx.font_rendering.graphite.enabled")) {
+ if (m_tb_prefs.getBoolPref(p) !== torbutton_sec_h_bool_prefs[p]) {
return;
}
}
@@ -2385,35 +2336,23 @@ function torbutton_security_slider_custom_check(mode) {
m_tb_prefs.setBoolPref("extensions.torbutton.security_custom", false);
break;
case 2:
- for (p in torbutton_sec_l_bool_prefs) {
- if (m_tb_prefs.getBoolPref(p) !== torbutton_sec_l_bool_prefs[p]) {
- return;
- }
- }
for (p in torbutton_sec_ml_bool_prefs) {
if (m_tb_prefs.getBoolPref(p) !== torbutton_sec_ml_bool_prefs[p]) {
return;
}
}
for (p in torbutton_sec_mh_bool_prefs) {
- if (m_tb_prefs.getBoolPref(p) === torbutton_sec_mh_bool_prefs[p]) {
+ if (m_tb_prefs.getBoolPref(p) !== torbutton_sec_mh_bool_prefs[p]) {
return;
}
}
for (p in torbutton_sec_h_bool_prefs) {
if (m_tb_prefs.getBoolPref(p) === torbutton_sec_h_bool_prefs[p]) {
- return;
- }
- }
- if (m_tb_prefs.getCharPref("general.useragent.locale") !== "ko" ||
- m_tb_prefs.getCharPref("general.useragent.locale") !== "vi" ||
- m_tb_prefs.getCharPref("general.useragent.locale") !== "zh-CN") {
-
- if (m_tb_prefs.getBoolPref("gfx.font_rendering.graphite.enabled")) {
- return;
- }
- } else {
- if (!m_tb_prefs.getBoolPref("gfx.font_rendering.graphite.enabled")) {
+ // We have the whitelist and JavaScript is disabled in medium-high
+ // mode as well.
+ if (p === "noscript.global") {
+ continue;
+ }
return;
}
}
@@ -2422,67 +2361,41 @@ function torbutton_security_slider_custom_check(mode) {
m_tb_prefs.setBoolPref("extensions.torbutton.security_custom", false);
break;
case 3:
- for (p in torbutton_sec_l_bool_prefs) {
- if (m_tb_prefs.getBoolPref(p) !== torbutton_sec_l_bool_prefs[p]) {
- return;
- }
- }
for (p in torbutton_sec_ml_bool_prefs) {
if (m_tb_prefs.getBoolPref(p) !== torbutton_sec_ml_bool_prefs[p]) {
return;
}
}
for (p in torbutton_sec_mh_bool_prefs) {
- if (m_tb_prefs.getBoolPref(p) !== torbutton_sec_mh_bool_prefs[p]) {
+ if (m_tb_prefs.getBoolPref(p) === torbutton_sec_mh_bool_prefs[p]) {
return;
}
}
for (p in torbutton_sec_h_bool_prefs) {
if (m_tb_prefs.getBoolPref(p) === torbutton_sec_h_bool_prefs[p]) {
- // We have the whitelist and JavaScript is disabled in medium-high
- // mode as well.
- if (p === "noscript.global") {
- continue;
- }
return;
}
}
- if (m_tb_prefs.getBoolPref("gfx.font_rendering.graphite.enabled")) {
- return;
- }
// We are still here which means all preferences are properly reset. Leave
// custom mode.
m_tb_prefs.setBoolPref("extensions.torbutton.security_custom", false);
break;
case 4:
- for (p in torbutton_sec_l_bool_prefs) {
- if (m_tb_prefs.getBoolPref(p) !== torbutton_sec_l_bool_prefs[p]) {
- return;
- }
- }
for (p in torbutton_sec_ml_bool_prefs) {
- if (m_tb_prefs.getBoolPref(p) !== torbutton_sec_ml_bool_prefs[p]) {
+ if (m_tb_prefs.getBoolPref(p) === torbutton_sec_ml_bool_prefs[p]) {
return;
}
}
for (p in torbutton_sec_mh_bool_prefs) {
- if (m_tb_prefs.getBoolPref(p) !== torbutton_sec_mh_bool_prefs[p]) {
- // We don't want to have the whitelist in high mode. JavaScript is
- // disabled globally.
- if (p === "noscript.globalHttpsWhitelist") {
- continue;
- }
+ if (m_tb_prefs.getBoolPref(p) === torbutton_sec_mh_bool_prefs[p]) {
return;
}
}
for (p in torbutton_sec_h_bool_prefs) {
- if (m_tb_prefs.getBoolPref(p) !== torbutton_sec_h_bool_prefs[p]) {
+ if (m_tb_prefs.getBoolPref(p) === torbutton_sec_h_bool_prefs[p]) {
return;
}
}
- if (!m_tb_prefs.getBoolPref("gfx.font_rendering.graphite.enabled")) {
- return;
- }
// We are still here which means all preferences are properly reset. Leave
// custom mode.
m_tb_prefs.setBoolPref("extensions.torbutton.security_custom", false);
diff --git a/src/chrome/locale/en/torbutton.dtd b/src/chrome/locale/en/torbutton.dtd
index 15ae1e6..4a7bf7e 100644
--- a/src/chrome/locale/en/torbutton.dtd
+++ b/src/chrome/locale/en/torbutton.dtd
@@ -153,8 +153,35 @@
<!ENTITY torbutton.prefs.resist_fingerprinting "Change details that distinguish you from other Tor Browser users">
<!ENTITY torbutton.prefs.sec_caption "Security Level">
<!ENTITY torbutton.prefs.sec_low "Low (default)">
+<!ENTITY torbutton.prefs.sec_low_usable_desc "This provides the most usable experience.">
+<!ENTITY torbutton.prefs.sec_low_desc "At this security level, all browser features are enabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_svg_tooltip "The SVG OpenType font rendering mechanism is disabled.">
<!ENTITY torbutton.prefs.sec_med_low "Medium-Low">
+<!ENTITY torbutton.prefs.sec_gen_desc "At this security level, the following changes apply (mouseover for details):">
+<!ENTITY torbutton.prefs.sec_html5_desc "HTML5 video and audio media become click-to-play via NoScript.">
+<!ENTITY torbutton.prefs.sec_html5_tooltip "On some sites, you might need to use the NoScript toolbar button to enable these media objects.">
+<!ENTITY torbutton.prefs.sec_some_jit_desc "Some JavaScript performance optimizations are disabled.">
+<!ENTITY torbutton.prefs.sec_jit_desc_tooltip "ION JIT, Type Inference, ASM.JS.">
+<!ENTITY torbutton.prefs.sec_baseline_jit_desc_tooltip "Baseline JIT.">
+<!ENTITY torbutton.prefs.sec_jit_slower_desc "Scripts on some sites may run slower.">
+<!ENTITY torbutton.prefs.sec_jar_desc "Remote JAR files are blocked.">
+<!ENTITY torbutton.prefs.sec_jar_tooltip "JAR files are extremely rare on the web, but can be a source of XSS and other attacks.">
+<!ENTITY torbutton.prefs.sec_mathml_desc "Some mechanisms of displaying math equations are disabled.">
+<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML is disabled.">
<!ENTITY torbutton.prefs.sec_med_high "Medium-High">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "All JavaScript performance optimizations are disabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_desc "Some font rendering features are disabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "The Graphite font rendering mechanism is disabled.">
+<!ENTITY torbutton.prefs.sec_svg_desc "Some types of images are disabled.">
+<!ENTITY torbutton.prefs.sec_svg_desc_tooltip "SVG images are disabled.">
+<!ENTITY torbutton.prefs.sec_js_https_desc "JavaScript is disabled by default on all non-HTTPS sites.">
+<!ENTITY torbutton.prefs.sec_js_desc_tooltip "JavaScript can be enabled on a per-site basis via the NoScript toolbar button.">
<!ENTITY torbutton.prefs.sec_high "High">
+<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript is disabled by default on all sites.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc "Most audio and video formats are disabled.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc_tooltip "WebM is the only codec that remains enabled.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc "Some fonts and icons may display incorrectly.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Website-provided font files are blocked.">
<!ENTITY torbutton.prefs.sec_custom "Custom Values">
<!ENTITY torbutton.circuit_display.title "Tor circuit for this site">
+
diff --git a/src/chrome/skin/preferences.css b/src/chrome/skin/preferences.css
new file mode 100644
index 0000000..013b367
--- /dev/null
+++ b/src/chrome/skin/preferences.css
@@ -0,0 +1,7 @@
+.slider-text-weight {
+ font-weight: bold;
+}
+
+.slider-text-size {
+ font-size: 95%;
+}
diff --git a/src/defaults/preferences/preferences.js b/src/defaults/preferences/preferences.js
index fb1a702..677447b 100644
--- a/src/defaults/preferences/preferences.js
+++ b/src/defaults/preferences/preferences.js
@@ -176,7 +176,7 @@ pref("extensions.torbutton.block_disk", true);
pref("extensions.torbutton.resist_fingerprinting", true);
pref("extensions.torbutton.restrict_thirdparty", true);
// Security Slider
-pref("extensions.torbutton.security_slider", 1);
+pref("extensions.torbutton.security_slider", 4);
pref("extensions.torbutton.security_custom", false);
// Google Captcha prefs
1
0

[tor-browser-bundle/master] Bug 14688: Create Desktop and Start Menu shortcuts for Windows
by mikeperry@torproject.org 20 Mar '15
by mikeperry@torproject.org 20 Mar '15
20 Mar '15
commit dad9a582b97d8720f788881461ead2284281eea8
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Thu Mar 19 17:54:09 2015 -0700
Bug 14688: Create Desktop and Start Menu shortcuts for Windows
This is on by default, but can be turned of in a checkbox on the installer.
We also switch back to Moritz's NSIS repo and gpg key with this.
Unfortunately, he tagged the same version as mcs did, but that's not a big
deal.
---
gitian/fetch-inputs.sh | 2 +-
gitian/gpg/tbb-windows-installer.gpg | Bin 1213 -> 15689 bytes
2 files changed, 1 insertion(+), 1 deletion(-)
diff --git a/gitian/fetch-inputs.sh b/gitian/fetch-inputs.sh
index e58c4d3..3b3c43a 100755
--- a/gitian/fetch-inputs.sh
+++ b/gitian/fetch-inputs.sh
@@ -247,7 +247,7 @@ cd inputs
while read dir url tag; do
update_git "$dir" "$url" "$tag"
done << EOF
-tbb-windows-installer https://github.com/MarkCSmith/tbb-windows-installer.git $NSIS_TAG
+tbb-windows-installer https://github.com/moba/tbb-windows-installer.git $NSIS_TAG
zlib https://github.com/madler/zlib.git $ZLIB_TAG
libevent https://github.com/libevent/libevent.git $LIBEVENT_TAG
tor https://git.torproject.org/tor.git $TOR_TAG
diff --git a/gitian/gpg/tbb-windows-installer.gpg b/gitian/gpg/tbb-windows-installer.gpg
index e753e57..fab3a99 100644
Binary files a/gitian/gpg/tbb-windows-installer.gpg and b/gitian/gpg/tbb-windows-installer.gpg differ
1
0

[tor-browser-bundle/master] Bug 14959: Download missing MAR files for incrementals
by mikeperry@torproject.org 20 Mar '15
by mikeperry@torproject.org 20 Mar '15
20 Mar '15
commit 803049749f966e63e7c4f86dd556c49fa0fdd48d
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Mon Mar 16 18:49:43 2015 +0100
Bug 14959: Download missing MAR files for incrementals
---
gitian/Makefile | 6 ++-
gitian/gpg/torbrowser.gpg | Bin 0 -> 6015 bytes
tools/update-responses/config.yml | 3 ++
tools/update-responses/download_missing_versions | 1 +
tools/update-responses/update_responses | 58 +++++++++++++++++++++-
5 files changed, 65 insertions(+), 3 deletions(-)
diff --git a/gitian/Makefile b/gitian/Makefile
index ea82151..8f89bca 100644
--- a/gitian/Makefile
+++ b/gitian/Makefile
@@ -29,10 +29,12 @@ build-alpha:
./mkbundle-mac.sh versions.alpha
incrementals:
- ../tools/update-responses/gen_incrementals release || echo 'Warning: could not generate incremental MARs.' >&2
+ $(TORSOCKS) ../tools/update-responses/download_missing_versions release
+ ../tools/update-responses/gen_incrementals release
incrementals-alpha:
- ../tools/update-responses/gen_incrementals alpha || echo 'Warning: could not generate incremental MARs.' >&2
+ $(TORSOCKS) ../tools/update-responses/download_missing_versions alpha
+ ../tools/update-responses/gen_incrementals alpha
signmars:
./signmars.sh versions
diff --git a/gitian/gpg/torbrowser.gpg b/gitian/gpg/torbrowser.gpg
new file mode 100644
index 0000000..7267d4d
Binary files /dev/null and b/gitian/gpg/torbrowser.gpg differ
diff --git a/tools/update-responses/config.yml b/tools/update-responses/config.yml
index a338745..403be5c 100644
--- a/tools/update-responses/config.yml
+++ b/tools/update-responses/config.yml
@@ -1,4 +1,7 @@
---
+download:
+ archive_url: https://archive.torproject.org/tor-package-archive/torbrowser
+ gpg_keyring: ../../gitian/gpg/torbrowser.gpg
build_targets:
linux32: Linux_x86-gcc3
linux64: Linux_x86_64-gcc3
diff --git a/tools/update-responses/download_missing_versions b/tools/update-responses/download_missing_versions
new file mode 120000
index 0000000..3766925
--- /dev/null
+++ b/tools/update-responses/download_missing_versions
@@ -0,0 +1 @@
+update_responses
\ No newline at end of file
diff --git a/tools/update-responses/update_responses b/tools/update-responses/update_responses
index 8b8c217..07efc7c 100755
--- a/tools/update-responses/update_responses
+++ b/tools/update-responses/update_responses
@@ -6,9 +6,10 @@ use English;
use FindBin;
use YAML qw(LoadFile);
use File::Slurp;
-use Digest::SHA;
+use Digest::SHA qw(sha256_hex);
use XML::Writer;
use Cwd;
+use File::Copy;
use File::Temp;
use File::Find;
use File::Which;
@@ -408,6 +409,55 @@ sub check_update_responses_channel {
}
}
+sub download_version {
+ my ($config, $version) = @_;
+ my $tmpdir = File::Temp->newdir();
+ my $destdir = "$releases_dir/$version";
+ my $urldir = "$config->{download}{archive_url}/$version";
+ print "Downloading version $version\n";
+ foreach my $file (qw(sha256sums.txt sha256sums.txt.asc)) {
+ if (getstore("$urldir/$file", "$tmpdir/$file") != 200) {
+ exit_error "Error downloading $urldir/$file";
+ }
+ }
+ if (system('gpg', '--no-default-keyring', '--keyring',
+ $config->{download}{gpg_keyring}, '--verify',
+ "$tmpdir/sha256sums.txt.asc", "$tmpdir/sha256sums.txt")) {
+ exit_error "Error checking gpg signature for version $version";
+ }
+ mkdir $destdir;
+ move "$tmpdir/sha256sums.txt.asc", "$destdir/sha256sums.txt.asc";
+ move "$tmpdir/sha256sums.txt", "$destdir/sha256sums.txt";
+ my %sums = map { chomp; reverse split ' ', $_ } read_file "$destdir/sha256sums.txt";
+ foreach my $file (sort grep { $_ =~ m/\.mar$/ } keys %sums) {
+ print "Downloading $file\n";
+ exit_error "Error downloading $urldir/$file\n"
+ unless getstore("$urldir/$file", "$tmpdir/$file") == 200;
+ if ($sums{$file} ne sha256_hex(read_file("$tmpdir/$file"))) {
+ exit_error "Error unsigning $file"
+ if system('signmar', '-r', "$tmpdir/$file", "$tmpdir/$file.u");
+ exit_error "Wrong checksum for $file"
+ unless $sums{$file} eq sha256_hex(read_file("$tmpdir/$file.u"));
+ move "$tmpdir/$file.u", "$tmpdir/$file";
+ }
+ move "$tmpdir/$file", "$destdir/$file";
+ }
+}
+
+sub download_missing_versions {
+ my ($config, @channels) = @_;
+ foreach my $channel (@channels) {
+ exit_error "Unknown channel $channel"
+ unless $config->{channels}{$channel};
+ my $cversion = $config->{channels}{$channel};
+ next unless $config->{versions}{$cversion}{incremental_from};
+ foreach my $version (@{$config->{versions}{$cversion}{incremental_from}}) {
+ next if -d "$releases_dir/$version";
+ download_version($config, $version);
+ }
+ }
+}
+
sub check_update_responses {
my ($config) = @_;
exit_error "usage: $PROGRAM_NAME <base_url> [channels...]" unless @ARGV;
@@ -453,6 +503,12 @@ my %actions = (
create_incremental_mars_for_version($config, $version);
}
},
+ download_missing_versions => sub {
+ my ($config) = @_;
+ my @channels = @ARGV ? @ARGV : keys %{$config->{channels}};
+ extract_martools;
+ download_missing_versions($config, @channels);
+ },
check_update_responses_deployement => \&check_update_responses,
);
1
0

[tor-launcher/master] Bug 13983: Use CurProcD for Thunderbird/Instantbird
by brade@torproject.org 19 Mar '15
by brade@torproject.org 19 Mar '15
19 Mar '15
commit c052b54b2d14032fac0c9b23a9ad9cc06d792a5a
Author: Sukhbir Singh <sukhbir(a)torproject.org>
Date: Thu Dec 18 10:33:29 2014 +0530
Bug 13983: Use CurProcD for Thunderbird/Instantbird
To accommodate Tor Messenger/Tor Mail bundle packaging, use a path
relative to the current working directory when locating Tor files
(instead of relative to the profile directory).
---
src/components/tl-process.js | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/components/tl-process.js b/src/components/tl-process.js
index cc5d654..b6dc98f 100644
--- a/src/components/tl-process.js
+++ b/src/components/tl-process.js
@@ -692,9 +692,8 @@ TorProcessService.prototype =
.getService(Ci.nsIXULAppInfo);
if (appInfo.ID == this.kThunderbirdID || appInfo.ID == this.kInstantbirdID)
{
- // For Thunderbird and Instantbird, paths are relative to this extension's folder.
topDir = Cc["@mozilla.org/file/directory_service;1"]
- .getService(Ci.nsIProperties).get("ProfD", Ci.nsIFile);
+ .getService(Ci.nsIProperties).get("CurProcD", Ci.nsIFile);
topDir.append("extensions");
topDir.append(this.kTorLauncherExtPath);
}
1
0
commit 54d02f3c1c97c2dcef2c8c03bc00580592a6cf38
Author: Georg Koppen <gk(a)torproject.org>
Date: Thu Mar 19 09:36:15 2015 +0000
Fixup for bug 10216
---
src/chrome/content/torbutton.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index 09d6080..f7e99a0 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -1913,7 +1913,7 @@ function torbutton_do_tor_check()
let checkSvc = Cc["@torproject.org/torbutton-torCheckService;1"]
.getService(Ci.nsISupports).wrappedJSObject;
if (checkSvc.kCheckNotInitiated != checkSvc.statusOfTorCheck ||
- !m.tb_prefs.getBoolPref("extensions.torbutton.test_enabled"))
+ !m_tb_prefs.getBoolPref("extensions.torbutton.test_enabled"))
return; // Only do the check once.
// If we have a tor control port and transparent torification is off,
1
0

[torbutton/master] Bug 14631: Improve profile access error msgs (strings).
by mikeperry@torproject.org 18 Mar '15
by mikeperry@torproject.org 18 Mar '15
18 Mar '15
commit fd2be43f999da3babdc0276ae2d2769938fe56c8
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Fri Feb 27 10:40:47 2015 -0500
Bug 14631: Improve profile access error msgs (strings).
To allow for localization, get profile-related error strings from Torbutton.
---
src/chrome/locale/en/torbutton.properties | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/src/chrome/locale/en/torbutton.properties b/src/chrome/locale/en/torbutton.properties
index 505f31b..50985a4 100644
--- a/src/chrome/locale/en/torbutton.properties
+++ b/src/chrome/locale/en/torbutton.properties
@@ -61,3 +61,10 @@ canvas.allow=Allow in the future
canvas.allowAccessKey=A
canvas.never=Never for this site (recommended)
canvas.neverAccessKey=e
+
+# Profile/startup error messages. Strings are kept here for ease of translation.
+# LOCALIZATION NOTE: %S is the application name.
+profileProblemTitle=%S Profile Problem
+profileReadOnly=You cannot run %S from a read-only file system. Please copy %S to another location before trying to use it.
+profileReadOnlyMac=You cannot run %S from a read-only file system. Please copy %S to your Desktop or Applications folder before trying to use it.
+profileAccessDenied=%S does not have permission to access the profile. Please adjust your file system permissions and try again.
1
0

[torbutton/master] Merge remote-tracking branch 'brade/bug14631-01'
by mikeperry@torproject.org 18 Mar '15
by mikeperry@torproject.org 18 Mar '15
18 Mar '15
commit dc2fae0f80f156a2f0d80004b3a631687e4c7128
Merge: 4394ffb fd2be43
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Tue Mar 17 21:01:02 2015 -0700
Merge remote-tracking branch 'brade/bug14631-01'
src/chrome/locale/en/torbutton.properties | 7 +++++++
1 file changed, 7 insertions(+)
1
0

[tor-browser/tor-browser-31.5.0esr-4.5-1] Bug 14631: Improve profile access error messages.
by mikeperry@torproject.org 18 Mar '15
by mikeperry@torproject.org 18 Mar '15
18 Mar '15
commit bebc69b8e8e919abec272f9cff6ab13fb9ea51f7
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Tue Feb 24 13:50:23 2015 -0500
Bug 14631: Improve profile access error messages.
Instead of always reporting that the profile is locked, display specific
messages for "access denied" and "read-only file system".
---
.../mozapps/profile/profileSelection.properties | 5 +
toolkit/xre/nsAppRunner.cpp | 112 +++++++++++++++++---
2 files changed, 103 insertions(+), 14 deletions(-)
diff --git a/toolkit/locales/en-US/chrome/mozapps/profile/profileSelection.properties b/toolkit/locales/en-US/chrome/mozapps/profile/profileSelection.properties
index adac95a..3cf48ff 100644
--- a/toolkit/locales/en-US/chrome/mozapps/profile/profileSelection.properties
+++ b/toolkit/locales/en-US/chrome/mozapps/profile/profileSelection.properties
@@ -12,6 +12,11 @@ restartMessageUnlocker=%S is already running, but is not responding. The old %S
restartMessageNoUnlockerMac=A copy of %S is already open. Only one copy of %S can be open at a time.
restartMessageUnlockerMac=A copy of %S is already open. The running copy of %S will quit in order to open this one.
+# LOCALIZATION NOTE (profileProblemTitle, profileReadOnly, profileReadOnlyMac, profileAccessDenied): Messages displayed when the browser profile cannot be accessed or written to. %S is the application name.
+profileProblemTitle=%S Profile Problem
+profileReadOnly=You cannot run %S from a read-only file system. Please copy %S to another location before trying to use it.
+profileReadOnlyMac=You cannot run %S from a read-only file system. Please copy %S to your Desktop or Applications folder before trying to use it.
+profileAccessDenied=%S does not have permission to access the profile. Please adjust your file system permissions and try again.
# Profile manager
# LOCALIZATION NOTE (profileTooltip): First %S is the profile name, second %S is the path to the profile folder.
profileTooltip=Profile: '%S' - Path: '%S'
diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp
index cadc46d..dbd1376 100644
--- a/toolkit/xre/nsAppRunner.cpp
+++ b/toolkit/xre/nsAppRunner.cpp
@@ -1682,12 +1682,20 @@ static nsresult LaunchChild(nsINativeAppSupport* aNative,
return NS_ERROR_LAUNCHED_CHILD_PROCESS;
}
+enum ProfileStatus {
+ PROFILE_STATUS_OK,
+ PROFILE_STATUS_ACCESS_DENIED,
+ PROFILE_STATUS_READ_ONLY,
+ PROFILE_STATUS_IS_LOCKED,
+ PROFILE_STATUS_OTHER_ERROR
+};
+
static const char kProfileProperties[] =
"chrome://mozapps/locale/profile/profileSelection.properties";
static nsresult
-ProfileLockedDialog(nsIFile* aProfileDir, nsIFile* aProfileLocalDir,
- nsIProfileUnlocker* aUnlocker,
+ProfileErrorDialog(nsIFile* aProfileDir, nsIFile* aProfileLocalDir,
+ ProfileStatus aStatus, nsIProfileUnlocker* aUnlocker,
nsINativeAppSupport* aNative, nsIProfileLock* *aResult)
{
nsresult rv;
@@ -1717,17 +1725,29 @@ ProfileLockedDialog(nsIFile* aProfileDir, nsIFile* aProfileLocalDir,
#ifndef XP_MACOSX
static const char16_t kRestartNoUnlocker[] = {'r','e','s','t','a','r','t','M','e','s','s','a','g','e','N','o','U','n','l','o','c','k','e','r','\0'}; // "restartMessageNoUnlocker"
static const char16_t kRestartUnlocker[] = {'r','e','s','t','a','r','t','M','e','s','s','a','g','e','U','n','l','o','c','k','e','r','\0'}; // "restartMessageUnlocker"
+ static const char16_t kReadOnly[] = {'p','r','o','f','i','l','e','R','e','a','d','O','n','l','y','\0'}; // "profileReadOnly"
#else
static const char16_t kRestartNoUnlocker[] = {'r','e','s','t','a','r','t','M','e','s','s','a','g','e','N','o','U','n','l','o','c','k','e','r','M','a','c','\0'}; // "restartMessageNoUnlockerMac"
static const char16_t kRestartUnlocker[] = {'r','e','s','t','a','r','t','M','e','s','s','a','g','e','U','n','l','o','c','k','e','r','M','a','c','\0'}; // "restartMessageUnlockerMac"
+ static const char16_t kReadOnly[] = {'p','r','o','f','i','l','e','R','e','a','d','O','n','l','y','M','a','c','\0'}; // "profileReadOnlyMac"
#endif
- sb->FormatStringFromName(aUnlocker ? kRestartUnlocker : kRestartNoUnlocker,
- params, 2, getter_Copies(killMessage));
+ static const char16_t kAccessDenied[] = {'p','r','o','f','i','l','e','A','c','c','e','s','s','D','e','n','i','e','d','\0'}; // "profileAccessDenied"
+ const char16_t *errorKey = aUnlocker ? kRestartUnlocker
+ : kRestartNoUnlocker;
+ if (PROFILE_STATUS_READ_ONLY == aStatus)
+ errorKey = kReadOnly;
+ else if (PROFILE_STATUS_ACCESS_DENIED == aStatus)
+ errorKey = kAccessDenied;
+ sb->FormatStringFromName(errorKey, params, 2, getter_Copies(killMessage));
+
+ const char16_t *titleKey = ((PROFILE_STATUS_READ_ONLY == aStatus) ||
+ (PROFILE_STATUS_ACCESS_DENIED == aStatus))
+ ? MOZ_UTF16("profileProblemTitle")
+ : MOZ_UTF16("restartTitle");
nsXPIDLString killTitle;
- sb->FormatStringFromName(MOZ_UTF16("restartTitle"),
- params, 1, getter_Copies(killTitle));
+ sb->FormatStringFromName(titleKey, params, 1, getter_Copies(killTitle));
if (!killMessage || !killTitle)
return NS_ERROR_FAILURE;
@@ -1828,8 +1848,9 @@ ProfileMissingDialog(nsINativeAppSupport* aNative)
}
static nsresult
-ProfileLockedDialog(nsIToolkitProfile* aProfile, nsIProfileUnlocker* aUnlocker,
- nsINativeAppSupport* aNative, nsIProfileLock* *aResult)
+ProfileErrorDialog(nsIToolkitProfile* aProfile, ProfileStatus aStatus,
+ nsIProfileUnlocker* aUnlocker, nsINativeAppSupport* aNative,
+ nsIProfileLock* *aResult)
{
nsCOMPtr<nsIFile> profileDir;
nsresult rv = aProfile->GetRootDir(getter_AddRefs(profileDir));
@@ -1845,8 +1866,8 @@ ProfileLockedDialog(nsIToolkitProfile* aProfile, nsIProfileUnlocker* aUnlocker,
rv = aProfile->GetLocalDir(getter_AddRefs(profileLocalDir));
if (NS_FAILED(rv)) return rv;
- return ProfileLockedDialog(profileDir, profileLocalDir, aUnlocker, aNative,
- aResult);
+ return ProfileErrorDialog(profileDir, profileLocalDir, aStatus, aUnlocker,
+ aNative, aResult);
}
static const char kProfileManagerURL[] =
@@ -2007,6 +2028,53 @@ SetCurrentProfileAsDefault(nsIToolkitProfileService* aProfileSvc,
return rv;
}
+// Check for write permission to the profile directory by trying to create a
+// new file (after ensuring that no file with the same name exists).
+static ProfileStatus CheckProfileWriteAccess(nsIFile* aProfileDir)
+{
+#if defined(XP_UNIX)
+ NS_NAMED_LITERAL_STRING(writeTestFileName, ".parentwritetest");
+#else
+ NS_NAMED_LITERAL_STRING(writeTestFileName, "parent.writetest");
+#endif
+
+ nsCOMPtr<nsIFile> writeTestFile;
+ nsresult rv = aProfileDir->Clone(getter_AddRefs(writeTestFile));
+ if (NS_SUCCEEDED(rv))
+ rv = writeTestFile->Append(writeTestFileName);
+
+ if (NS_SUCCEEDED(rv)) {
+ bool doesExist = false;
+ rv = writeTestFile->Exists(&doesExist);
+ if (NS_SUCCEEDED(rv) && doesExist)
+ rv = writeTestFile->Remove(true);
+ }
+
+ if (NS_SUCCEEDED(rv)) {
+ rv = writeTestFile->Create(nsIFile::NORMAL_FILE_TYPE, 0666);
+ (void)writeTestFile->Remove(true);
+ }
+
+ ProfileStatus status = NS_SUCCEEDED(rv) ? PROFILE_STATUS_OK
+ : PROFILE_STATUS_OTHER_ERROR;
+ if (NS_ERROR_FILE_ACCESS_DENIED == rv)
+ status = PROFILE_STATUS_ACCESS_DENIED;
+ else if (NS_ERROR_FILE_READ_ONLY == rv)
+ status = PROFILE_STATUS_READ_ONLY;
+
+ return status;
+}
+
+static ProfileStatus CheckProfileWriteAccess(nsIToolkitProfile* aProfile)
+{
+ nsCOMPtr<nsIFile> profileDir;
+ nsresult rv = aProfile->GetRootDir(getter_AddRefs(profileDir));
+ if (NS_FAILED(rv))
+ return PROFILE_STATUS_OTHER_ERROR;
+
+ return CheckProfileWriteAccess(profileDir);
+}
+
static bool gDoMigration = false;
static bool gDoProfileReset = false;
@@ -2140,13 +2208,18 @@ SelectProfile(nsIProfileLock* *aResult, nsIToolkitProfileService* aProfileSvc, n
NS_ENSURE_SUCCESS(rv, rv);
}
+ ProfileStatus status = CheckProfileWriteAccess(lf);
+ if (PROFILE_STATUS_OK != status)
+ return ProfileErrorDialog(lf, lf, status, nullptr, aNative, aResult);
+
// If a profile path is specified directory on the command line, then
// assume that the temp directory is the same as the given directory.
rv = NS_LockProfilePath(lf, lf, getter_AddRefs(unlocker), aResult);
if (NS_SUCCEEDED(rv))
return rv;
- return ProfileLockedDialog(lf, lf, unlocker, aNative, aResult);
+ return ProfileErrorDialog(lf, lf, PROFILE_STATUS_IS_LOCKED, unlocker,
+ aNative, aResult);
}
ar = CheckArg("createprofile", true, &arg);
@@ -2231,6 +2304,10 @@ SelectProfile(nsIProfileLock* *aResult, nsIToolkitProfileService* aProfileSvc, n
gDoProfileReset = false;
}
+ ProfileStatus status = CheckProfileWriteAccess(profile);
+ if (PROFILE_STATUS_OK != status)
+ return ProfileErrorDialog(profile, status, nullptr, aNative, aResult);
+
nsCOMPtr<nsIProfileUnlocker> unlocker;
rv = profile->Lock(getter_AddRefs(unlocker), aResult);
if (NS_SUCCEEDED(rv)) {
@@ -2239,7 +2316,8 @@ SelectProfile(nsIProfileLock* *aResult, nsIToolkitProfileService* aProfileSvc, n
return NS_OK;
}
- return ProfileLockedDialog(profile, unlocker, aNative, aResult);
+ return ProfileErrorDialog(profile, PROFILE_STATUS_IS_LOCKED, unlocker,
+ aNative, aResult);
}
if (CanShowProfileManager()) {
@@ -2293,7 +2371,8 @@ SelectProfile(nsIProfileLock* *aResult, nsIToolkitProfileService* aProfileSvc, n
nsCOMPtr<nsIProfileUnlocker> unlocker;
rv = profile->Lock(getter_AddRefs(unlocker), &tempProfileLock);
if (NS_FAILED(rv))
- return ProfileLockedDialog(profile, unlocker, aNative, &tempProfileLock);
+ return ProfileErrorDialog(profile, PROFILE_STATUS_IS_LOCKED,
+ unlocker, aNative, &tempProfileLock);
}
nsCOMPtr<nsIToolkitProfile> newProfile;
@@ -2304,6 +2383,10 @@ SelectProfile(nsIProfileLock* *aResult, nsIToolkitProfileService* aProfileSvc, n
gDoProfileReset = false;
}
+ ProfileStatus status = CheckProfileWriteAccess(profile);
+ if (PROFILE_STATUS_OK != status)
+ return ProfileErrorDialog(profile, status, nullptr, aNative, aResult);
+
// If you close Firefox and very quickly reopen it, the old Firefox may
// still be closing down. Rather than immediately showing the
// "Firefox is running but is not responding" message, we spend a few
@@ -2329,7 +2412,8 @@ SelectProfile(nsIProfileLock* *aResult, nsIToolkitProfileService* aProfileSvc, n
PR_Sleep(kLockRetrySleepMS);
} while (TimeStamp::Now() - start < TimeDuration::FromSeconds(kLockRetrySeconds));
- return ProfileLockedDialog(profile, unlocker, aNative, aResult);
+ return ProfileErrorDialog(profile, PROFILE_STATUS_IS_LOCKED, unlocker,
+ aNative, aResult);
}
}
1
0

[tor-browser/tor-browser-31.5.0esr-4.5-1] Bug 14631: Improve profile access error msgs (strings).
by mikeperry@torproject.org 18 Mar '15
by mikeperry@torproject.org 18 Mar '15
18 Mar '15
commit ce2343957e7617ffa47c5b2b8b2a3128916ac92e
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Fri Feb 27 10:38:40 2015 -0500
Bug 14631: Improve profile access error msgs (strings).
To allow for localization, get profile-related error strings from Torbutton.
Use app display name ("Tor Browser") in profile-related error alerts.
---
toolkit/xre/moz.build | 4 +-
toolkit/xre/nsAppRunner.cpp | 116 ++++++++++++++++++++++++++++++++++++++++---
2 files changed, 111 insertions(+), 9 deletions(-)
diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build
index a13a9ef..a1a875b 100644
--- a/toolkit/xre/moz.build
+++ b/toolkit/xre/moz.build
@@ -109,8 +109,8 @@ FINAL_LIBRARY = 'xul'
if CONFIG['MOZ_GL_DEFAULT_PROVIDER'] == 'GLX':
DEFINES['USE_GLX_TEST'] = True
-for var in ('MOZ_APP_NAME', 'MOZ_APP_BASENAME', 'MOZ_APP_VERSION', 'OS_TARGET',
- 'MOZ_WIDGET_TOOLKIT'):
+for var in ('MOZ_APP_NAME', 'MOZ_APP_BASENAME', 'MOZ_APP_DISPLAYNAME',
+ 'MOZ_APP_VERSION', 'OS_TARGET', 'MOZ_WIDGET_TOOLKIT'):
DEFINES[var] = '"%s"' % CONFIG[var]
if CONFIG['MOZ_UPDATER'] and CONFIG['MOZ_WIDGET_TOOLKIT'] != 'android':
diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp
index dbd1376..dc7d424 100644
--- a/toolkit/xre/nsAppRunner.cpp
+++ b/toolkit/xre/nsAppRunner.cpp
@@ -1682,6 +1682,104 @@ static nsresult LaunchChild(nsINativeAppSupport* aNative,
return NS_ERROR_LAUNCHED_CHILD_PROCESS;
}
+static nsresult
+GetOverrideStringBundleForLocale(nsIStringBundleService* aSBS,
+ const char* aTorbuttonURI, const char* aLocale,
+ nsIStringBundle* *aResult)
+{
+ NS_ENSURE_ARG(aSBS);
+ NS_ENSURE_ARG(aTorbuttonURI);
+ NS_ENSURE_ARG(aLocale);
+ NS_ENSURE_ARG(aResult);
+
+ const char* kFormatStr = "jar:%s!/chrome/locale/%s/torbutton.properties";
+ nsPrintfCString strBundleURL(kFormatStr, aTorbuttonURI, aLocale);
+ nsresult rv = aSBS->CreateBundle(strBundleURL.get(), aResult);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ // To ensure that we have a valid string bundle, try to retrieve a string
+ // that we know exists.
+ nsXPIDLString val;
+ rv = (*aResult)->GetStringFromName(MOZ_UTF16("profileProblemTitle"),
+ getter_Copies(val));
+ if (!NS_SUCCEEDED(rv))
+ *aResult = nullptr; // No good. Discard it.
+
+ return rv;
+}
+
+static void
+GetOverrideStringBundle(nsIStringBundleService* aSBS, nsIStringBundle* *aResult)
+{
+ if (!aSBS || !aResult)
+ return;
+
+ *aResult = nullptr;
+
+ // Build Torbutton file URI string by starting from the profiles directory.
+ nsXREDirProvider* dirProvider = nsXREDirProvider::GetSingleton();
+ if (!dirProvider)
+ return;
+
+ bool persistent = false; // ignored
+ nsCOMPtr<nsIFile> profilesDir;
+ nsresult rv = dirProvider->GetFile(NS_APP_USER_PROFILES_ROOT_DIR, &persistent,
+ getter_AddRefs(profilesDir));
+ if (NS_FAILED(rv))
+ return;
+
+ // Create file URI, extract as string, and append Torbutton xpi relative path.
+ nsCOMPtr<nsIURI> uri;
+ nsAutoCString uriString;
+ if (NS_FAILED(NS_NewFileURI(getter_AddRefs(uri), profilesDir)) ||
+ NS_FAILED(uri->GetSpec(uriString))) {
+ return;
+ }
+
+ uriString.Append("profile.default/extensions/torbutton(a)torproject.org.xpi");
+
+ nsCString userAgentLocale;
+ if (!NS_SUCCEEDED(Preferences::GetCString("general.useragent.locale",
+ &userAgentLocale))) {
+ return;
+ }
+
+ rv = GetOverrideStringBundleForLocale(aSBS, uriString.get(),
+ userAgentLocale.get(), aResult);
+ if (NS_FAILED(rv)) {
+ // Try again using base locale, e.g., "en" vs. "en-US".
+ int16_t offset = userAgentLocale.FindChar('-', 1);
+ if (offset > 0) {
+ nsAutoCString shortLocale(Substring(userAgentLocale, 0, offset));
+ rv = GetOverrideStringBundleForLocale(aSBS, uriString.get(),
+ shortLocale.get(), aResult);
+ }
+ }
+}
+
+static nsresult
+GetFormattedString(nsIStringBundle* aOverrideBundle,
+ nsIStringBundle* aMainBundle,
+ const char16_t* aName,
+ const char16_t** aParams, uint32_t aLength,
+ char16_t* *aResult)
+{
+ NS_ENSURE_ARG(aName);
+ NS_ENSURE_ARG(aResult);
+
+ nsresult rv = NS_ERROR_FAILURE;
+ if (aOverrideBundle) {
+ rv = aOverrideBundle->FormatStringFromName(aName, aParams, aLength,
+ aResult);
+ }
+
+ // If string was not found in override bundle, use main (browser) bundle.
+ if (NS_FAILED(rv) && aMainBundle)
+ rv = aMainBundle->FormatStringFromName(aName, aParams, aLength, aResult);
+
+ return rv;
+}
+
enum ProfileStatus {
PROFILE_STATUS_OK,
PROFILE_STATUS_ACCESS_DENIED,
@@ -1718,7 +1816,10 @@ ProfileErrorDialog(nsIFile* aProfileDir, nsIFile* aProfileLocalDir,
sbs->CreateBundle(kProfileProperties, getter_AddRefs(sb));
NS_ENSURE_TRUE_LOG(sbs, NS_ERROR_FAILURE);
- NS_ConvertUTF8toUTF16 appName(gAppData->name);
+ nsCOMPtr<nsIStringBundle> overrideSB;
+ GetOverrideStringBundle(sbs, getter_AddRefs(overrideSB));
+
+ NS_ConvertUTF8toUTF16 appName(MOZ_APP_DISPLAYNAME);
const char16_t* params[] = {appName.get(), appName.get()};
nsXPIDLString killMessage;
@@ -1734,21 +1835,22 @@ ProfileErrorDialog(nsIFile* aProfileDir, nsIFile* aProfileLocalDir,
static const char16_t kAccessDenied[] = {'p','r','o','f','i','l','e','A','c','c','e','s','s','D','e','n','i','e','d','\0'}; // "profileAccessDenied"
- const char16_t *errorKey = aUnlocker ? kRestartUnlocker
+ const char16_t* errorKey = aUnlocker ? kRestartUnlocker
: kRestartNoUnlocker;
if (PROFILE_STATUS_READ_ONLY == aStatus)
errorKey = kReadOnly;
else if (PROFILE_STATUS_ACCESS_DENIED == aStatus)
errorKey = kAccessDenied;
- sb->FormatStringFromName(errorKey, params, 2, getter_Copies(killMessage));
+ GetFormattedString(overrideSB, sb, errorKey, params, 2,
+ getter_Copies(killMessage));
- const char16_t *titleKey = ((PROFILE_STATUS_READ_ONLY == aStatus) ||
+ const char16_t* titleKey = ((PROFILE_STATUS_READ_ONLY == aStatus) ||
(PROFILE_STATUS_ACCESS_DENIED == aStatus))
? MOZ_UTF16("profileProblemTitle")
: MOZ_UTF16("restartTitle");
nsXPIDLString killTitle;
- sb->FormatStringFromName(titleKey, params, 1, getter_Copies(killTitle));
-
+ GetFormattedString(overrideSB, sb, titleKey, params, 1,
+ getter_Copies(killTitle));
if (!killMessage || !killTitle)
return NS_ERROR_FAILURE;
@@ -1822,7 +1924,7 @@ ProfileMissingDialog(nsINativeAppSupport* aNative)
sbs->CreateBundle(kProfileProperties, getter_AddRefs(sb));
NS_ENSURE_TRUE_LOG(sbs, NS_ERROR_FAILURE);
- NS_ConvertUTF8toUTF16 appName(gAppData->name);
+ NS_ConvertUTF8toUTF16 appName(MOZ_APP_DISPLAYNAME);
const char16_t* params[] = {appName.get(), appName.get()};
nsXPIDLString missingMessage;
1
0

[torbutton/master] Bug 15334: Display Cookie Protections menu choice if disk records enabled.
by mikeperry@torproject.org 18 Mar '15
by mikeperry@torproject.org 18 Mar '15
18 Mar '15
commit 4394ffb289e78fbec0c772481570b55776e0d0dc
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Tue Mar 17 19:36:40 2015 -0700
Bug 15334: Display Cookie Protections menu choice if disk records enabled.
Regression caused during #14632.
---
src/chrome/content/torbutton.js | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index a14a097..09d6080 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -2107,10 +2107,6 @@ function torbutton_update_disk_prefs() {
m_tb_prefs.setIntPref("browser.download.manager.retention", 2);
}
- // XXX: Bug 14632: The cookie dialog is useless in private browsing mode in FF31ESR
- // See https://trac.torproject.org/projects/tor/ticket/10353 for more info.
- document.getElementById("torbutton-cookie-protector").hidden = mode;
-
// Force prefs to be synced to disk
var prefService = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefService);
@@ -2606,6 +2602,10 @@ function torbutton_check_protections()
var cookie_pref = m_tb_prefs.getBoolPref("extensions.torbutton.cookie_protections");
document.getElementById("torbutton-cookie-protector").disabled = !cookie_pref;
+ // XXX: Bug 14632: The cookie dialog is useless in private browsing mode in FF31ESR
+ // See https://trac.torproject.org/projects/tor/ticket/10353 for more info.
+ document.getElementById("torbutton-cookie-protector").hidden = m_tb_prefs.getBoolPref("extensions.torbutton.block_disk");
+
if (!m_tb_control_pass || !m_tb_control_port)
document.getElementById("torbutton-new-identity").disabled = true;
1
0

[torbutton/master] Add a extensions.torbutton.test_enabled boolean pref.
by mikeperry@torproject.org 17 Mar '15
by mikeperry@torproject.org 17 Mar '15
17 Mar '15
commit bc8f182fa3a5b13dbccc08ee1a21a3f8398d7851
Author: intrigeri <intrigeri(a)boum.org>
Date: Fri Nov 22 14:01:08 2013 +0000
Add a extensions.torbutton.test_enabled boolean pref.
Defaults to true. When disabled, no attempt is made to test if Tor is enabled.
---
src/chrome/content/torbutton.js | 3 ++-
src/defaults/preferences/preferences.js | 1 +
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index 69891c8..a14a097 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -1912,7 +1912,8 @@ function torbutton_do_tor_check()
{
let checkSvc = Cc["@torproject.org/torbutton-torCheckService;1"]
.getService(Ci.nsISupports).wrappedJSObject;
- if (checkSvc.kCheckNotInitiated != checkSvc.statusOfTorCheck)
+ if (checkSvc.kCheckNotInitiated != checkSvc.statusOfTorCheck ||
+ !m.tb_prefs.getBoolPref("extensions.torbutton.test_enabled"))
return; // Only do the check once.
// If we have a tor control port and transparent torification is off,
diff --git a/src/defaults/preferences/preferences.js b/src/defaults/preferences/preferences.js
index 3584581..fb1a702 100644
--- a/src/defaults/preferences/preferences.js
+++ b/src/defaults/preferences/preferences.js
@@ -25,6 +25,7 @@ pref("extensions.torbutton.socks_host","");
pref("extensions.torbutton.socks_port",0);
pref("extensions.torbutton.socks_version",5);
pref("extensions.torbutton.locked_mode",true);
+pref("extensions.torbutton.test_enabled",true);
pref("extensions.torbutton.test_url","https://check.torproject.org/?TorButton=true");
pref("extensions.torbutton.test_url_interactive", "https://check.torproject.org/?lang=__LANG__");
pref("extensions.torbutton.local_tor_check",true);
1
0

[torbutton/master] Bug 13891: Avoid undefined circuitStatuses/bridges
by gk@torproject.org 12 Mar '15
by gk@torproject.org 12 Mar '15
12 Mar '15
commit bf2ee7eddab0eaed16ea6825ab084a6a183054f6
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Tue Mar 10 16:08:55 2015 -0700
Bug 13891: Avoid undefined circuitStatuses/bridges
---
src/chrome/content/tor-circuit-display.js | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/src/chrome/content/tor-circuit-display.js b/src/chrome/content/tor-circuit-display.js
index b31953d..a4ba919 100644
--- a/src/chrome/content/tor-circuit-display.js
+++ b/src/chrome/content/tor-circuit-display.js
@@ -54,9 +54,11 @@ let trimQuotes = s => s ? s.match(/^\"(.*)\"$/)[1] : undefined;
// is not currently used as a bridge, returns null.
let getBridge = function* (controller, id) {
let bridges = yield controller.getConf("bridge");
- for (let bridge of bridges) {
- if (bridge.ID && bridge.ID.toUpperCase() === id.toUpperCase()) {
- return bridge;
+ if (bridges) {
+ for (let bridge of bridges) {
+ if (bridge.ID && bridge.ID.toUpperCase() === id.toUpperCase()) {
+ return bridge;
+ }
}
}
return null;
@@ -107,11 +109,14 @@ let nodeDataForCircuit = function* (controller, circuitEvent) {
// Returns the circuit status for the circuit with the given ID.
let getCircuitStatusByID = function* (aController, circuitID) {
let circuitStatuses = yield aController.getInfo("circuit-status");
- for (let circuitStatus of circuitStatuses) {
- if (circuitStatus.id === circuitID) {
- return circuitStatus;
+ if (circuitStatuses) {
+ for (let circuitStatus of circuitStatuses) {
+ if (circuitStatus.id === circuitID) {
+ return circuitStatus;
+ }
}
}
+ return null;
};
// __collectIsolationData(aController)__.
1
0

[torbutton/master] Bug 14324: Show HS circuit in Tor circuit display
by gk@torproject.org 12 Mar '15
by gk@torproject.org 12 Mar '15
12 Mar '15
commit c61487302e5056c561c7d50887807a320b354575
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Tue Mar 10 21:44:41 2015 -0700
Bug 14324: Show HS circuit in Tor circuit display
---
src/chrome/content/tor-circuit-display.js | 18 +++++++++++++-----
src/chrome/locale/en/torbutton.properties | 2 ++
src/chrome/skin/tor-circuit-display.css | 5 +++++
3 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/src/chrome/content/tor-circuit-display.js b/src/chrome/content/tor-circuit-display.js
index fc4da14..b31953d 100644
--- a/src/chrome/content/tor-circuit-display.js
+++ b/src/chrome/content/tor-circuit-display.js
@@ -181,10 +181,9 @@ let showCircuitDisplay = function (show) {
// Takes a nodeData array of node items, each like
// `{ ip : "12.34.56.78", country : "fr" }`
// and converts each node data to text, as
-// `"France (12.34.56.78)"`, prepended by "This browser"
-// and appended by "Internet".
+// `"France (12.34.56.78)"`.
let nodeLines = function (nodeData) {
- let result = [uiString("this_browser")];
+ let result = [];
for (let {ip, countryCode, type, bridgeType} of nodeData) {
let bridge = type === "bridge";
result.push(
@@ -203,7 +202,6 @@ let nodeLines = function (nodeData) {
// and right-to-left languages.
" ‭ (" + (ip || uiString("ip_unknown")) + ")‬"));
}
- result.push(uiString("internet"));
return result;
};
@@ -225,6 +223,10 @@ let getSOCKSCredentialsForBrowser = function (browser) {
return proxyInfo.username + ":" + proxyInfo.password;
};
+// __onionSiteRelayLine__.
+// When we have an onion site, we simply show the word '(relay)'.
+let onionSiteRelayLine = "<li class='relay'>(" + uiString("relay") + ")</li>";
+
// __updateCircuitDisplay()__.
// Updates the Tor circuit display, showing the current domain
// and the relay nodes for that domain.
@@ -242,10 +244,16 @@ let updateCircuitDisplay = function () {
document.getElementById("domain").innerHTML = "(" + domain + "):";
// Update the displayed information for the relay nodes.
let lines = nodeLines(nodeData),
- nodeInnerHTML = "";
+ nodeInnerHTML = "<li>" + uiString("this_browser") + "</li>";
for (let line of lines) {
nodeInnerHTML += "<li>" + line + "</li>";
}
+ nodeInnerHTML += domain.endsWith(".onion") ?
+ (onionSiteRelayLine +
+ onionSiteRelayLine +
+ onionSiteRelayLine +
+ "<li>" + uiString("onion_site") + "</li>") :
+ "<li>" + uiString("internet") + "</li>";
document.getElementById("circuit-nodes").innerHTML = nodeInnerHTML;
}
}
diff --git a/src/chrome/locale/en/torbutton.properties b/src/chrome/locale/en/torbutton.properties
index 505f31b..3ee41f6 100644
--- a/src/chrome/locale/en/torbutton.properties
+++ b/src/chrome/locale/en/torbutton.properties
@@ -2,7 +2,9 @@ torbutton.button.tooltip.disabled = Enable Tor
torbutton.button.tooltip.enabled = Disable Tor
torbutton.circuit_display.internet = Internet
torbutton.circuit_display.ip_unknown = IP unknown
+torbutton.circuit_display.onion_site = Onion site
torbutton.circuit_display.this_browser = This browser
+torbutton.circuit_display.relay = relay
torbutton.circuit_display.tor_bridge = Bridge
torbutton.circuit_display.unknown_country = Unknown country
torbutton.panel.tooltip.disabled = Click to enable Tor
diff --git a/src/chrome/skin/tor-circuit-display.css b/src/chrome/skin/tor-circuit-display.css
index b9d0638..004a68f 100644
--- a/src/chrome/skin/tor-circuit-display.css
+++ b/src/chrome/skin/tor-circuit-display.css
@@ -104,3 +104,8 @@ ul#circuit-nodes li:first-child:before {
ul#circuit-nodes li:last-child:before {
height: 50%;
}
+
+/* Onion site relay node text should be gray. */
+ul#circuit-nodes li.relay {
+ color: gray;
+}
\ No newline at end of file
1
0

[torbutton/master] Bug 15086: Handle RTL text in Tor circuit display
by gk@torproject.org 12 Mar '15
by gk@torproject.org 12 Mar '15
12 Mar '15
commit 6d0c5e64ce8e104e3f9bfe648356a4f40fdde404
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Sun Mar 1 17:04:48 2015 -0800
Bug 15086: Handle RTL text in Tor circuit display
Also fixes #13704 (circuit display now accomodates more than 3 relays).
---
src/chrome/content/popup.xul | 56 +++++++--------
src/chrome/content/tor-circuit-display.js | 41 +++++++----
src/chrome/skin/tor-circuit-display.css | 106 +++++++++++++++++++++++++++++
3 files changed, 156 insertions(+), 47 deletions(-)
diff --git a/src/chrome/content/popup.xul b/src/chrome/content/popup.xul
index e0c1f74..6511b6c 100644
--- a/src/chrome/content/popup.xul
+++ b/src/chrome/content/popup.xul
@@ -1,18 +1,21 @@
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://torbutton/skin/torbutton.css" type="text/css"?>
+<?xml-stylesheet href="chrome://torbutton/skin/tor-circuit-display.css" type="text/css"?>
<!DOCTYPE overlay SYSTEM "chrome://torbutton/locale/torbutton.dtd">
<overlay id="torbutton-popup-overlay"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
- <stringbundleset id="torbutton-stringbundleset">
- <stringbundle id="torbutton-bundle" src="chrome://torbutton/locale/torbutton.properties"/>
- </stringbundleset>
- <panel id="torbutton-context-menu" onpopupshowing="torbutton_check_protections();" titlebar="normal" noautohide="true"
- anchor="torbutton-button" position="after_start" >
- <hbox align="start">
- <vbox>
+ <stringbundleset id="torbutton-stringbundleset">
+ <stringbundle id="torbutton-bundle" src="chrome://torbutton/locale/torbutton.properties"/>
+ </stringbundleset>
+ <panel id="torbutton-context-menu"
+ onpopupshowing="torbutton_check_protections();"
+ titlebar="normal" noautohide="true"
+ anchor="torbutton-button" position="after_start" >
+ <hbox align="start">
+ <vbox>
<menuitem id="torbutton-new-identity"
label="&torbutton.context_menu.new_identity;"
accesskey="&torbutton.context_menu.new_identity_key;"
@@ -45,29 +48,18 @@
accesskey="&torbutton.context_menu.downloadUpdate.key;"
insertafter="context-stop"
oncommand="torbutton_check_for_update()"/>
- </vbox>
- <vbox>
- <!-- The following SVG is used to display a Tor circuit diagram for the current tab.
- It is not displayed unless activated by tor-circuit-display.js. -->
- <svg xmlns="http://www.w3.org/2000/svg" version="1.1" baseProfile="full"
- width="290" height="140" id="tor-circuit" style="display:none;">
- <rect x="0" y="0" width="100%" height="100%" fill="#e8f4f4" />
- <text id="title" style="font-size:14px;font-weight:bold;" x="10" y="20" fill="#2c26a7">&torbutton.circuit_display.title;</text>
- <text id="domain" style="font-size:13px;" x="10" y="38" fill="black">(trac.torproject.org)</text>
- <rect x="18.5" width="3" y="56" height="64" fill="#4d363a" stroke-width="0"/>
- <circle class="node-circle" cx="20" cy="56" r="4" />
- <text class="node-text" x="32" y="56">This Browser</text>
- <circle class="node-circle" cx="20" cy="72" r="4" />
- <text class="node-text" x="32" y="72">Test123 (54.67.87.34)</text>
- <circle class="node-circle" cx="20" cy="88" r="4" />
- <text class="node-text" x="32" y="88">TestABC (121.4.56.67)</text>
- <circle class="node-circle" cx="20" cy="104" r="4" />
- <text class="node-text" x="32" y="104">TestXYZ (74.3.30.9)</text>
- <circle class="node-circle" cx="20" cy="120" r="4" />
- <text class="node-text" x="32" y="120">Internet</text>
- </svg>
- </vbox>
- </hbox>
- </panel>
-
+ </vbox>
+ <vbox id="circuit-display-container">
+ <div id="circuit-display" xmlns="http://www.w3.org/1999/xhtml" dir="auto">
+ <p id="title">&torbutton.circuit_display.title;</p>
+ <p id="domain">(example.com)</p>
+ <ul id="circuit-nodes" dir="auto">
+ <li>example A</li>
+ <li>example B</li>
+ <li>example C</li>
+ </ul>
+ </div>
+ </vbox>
+ </hbox>
+ </panel>
</overlay>
diff --git a/src/chrome/content/tor-circuit-display.js b/src/chrome/content/tor-circuit-display.js
index bcda03a..fc4da14 100644
--- a/src/chrome/content/tor-circuit-display.js
+++ b/src/chrome/content/tor-circuit-display.js
@@ -173,26 +173,37 @@ let localizedCountryNameFromCode = function (countryCode) {
// __showCircuitDisplay(show)__.
// If show === true, makes the circuit display visible.
let showCircuitDisplay = function (show) {
- document.querySelector("svg#tor-circuit").style.display = show ?
+ document.getElementById("circuit-display-container").style.display = show ?
'block' : 'none';
};
// __nodeLines(nodeData)__.
-// Takes a nodeData array of three items each like
+// Takes a nodeData array of node items, each like
// `{ ip : "12.34.56.78", country : "fr" }`
// and converts each node data to text, as
-// `"France (12.34.56.78)"`.
+// `"France (12.34.56.78)"`, prepended by "This browser"
+// and appended by "Internet".
let nodeLines = function (nodeData) {
let result = [uiString("this_browser")];
for (let {ip, countryCode, type, bridgeType} of nodeData) {
let bridge = type === "bridge";
- result.push((countryCode ? localizedCountryNameFromCode(countryCode)
+ result.push(
+ // For each relay, show its apparent host country.
+ (countryCode ? localizedCountryNameFromCode(countryCode)
: uiString("unknown_country")) +
- " (" + (bridge ? (uiString("tor_bridge") +
- ((bridgeType !== "vanilla") ? (": " + bridgeType) : ""))
- : (ip || uiString("ip_unknown"))) + ")");
+ (bridge ?
+ // As we have a bridge, don't show the IP address
+ // but show the bridge type.
+ " (" + uiString("tor_bridge") +
+ ((bridgeType !== "vanilla") ? (": " + bridgeType) : "") + ")"
+ :
+ // As we don't have a bridge, show the IP address
+ // of the node. Use unicode escapes to ensure that
+ // parentheses behave properly in both left-to-right
+ // and right-to-left languages.
+ " ‭ (" + (ip || uiString("ip_unknown")) + ")‬"));
}
- result[4] = uiString("internet");
+ result.push(uiString("internet"));
return result;
};
@@ -215,7 +226,7 @@ let getSOCKSCredentialsForBrowser = function (browser) {
};
// __updateCircuitDisplay()__.
-// Updates the Tor circuit display SVG, showing the current domain
+// Updates the Tor circuit display, showing the current domain
// and the relay nodes for that domain.
let updateCircuitDisplay = function () {
let selectedBrowser = gBrowser.selectedBrowser;
@@ -228,14 +239,14 @@ let updateCircuitDisplay = function () {
if (nodeData) {
// Update the displayed domain.
let domain = credentials.split(":")[0];
- document.querySelector("svg#tor-circuit text#domain").innerHTML = "(" + domain + "):";
+ document.getElementById("domain").innerHTML = "(" + domain + "):";
// Update the displayed information for the relay nodes.
- let diagramNodes = document.querySelectorAll("svg#tor-circuit text.node-text"),
- lines = nodeLines(nodeData);
- for (let i = 0; i < diagramNodes.length; ++i) {
- let line = lines[i];
- diagramNodes[i].innerHTML = line ? line : "";
+ let lines = nodeLines(nodeData),
+ nodeInnerHTML = "";
+ for (let line of lines) {
+ nodeInnerHTML += "<li>" + line + "</li>";
}
+ document.getElementById("circuit-nodes").innerHTML = nodeInnerHTML;
}
}
// Only show the Tor circuit if we have credentials and node data.
diff --git a/src/chrome/skin/tor-circuit-display.css b/src/chrome/skin/tor-circuit-display.css
new file mode 100644
index 0000000..b9d0638
--- /dev/null
+++ b/src/chrome/skin/tor-circuit-display.css
@@ -0,0 +1,106 @@
+/*
+This CSS file is for styling the tor circuit display. It consists of a title,
+a domain, and a bulleted list.
+
+Each bullet in the circuit node list is supposed to represent a Tor circuit node,
+and lines drawn between them to represent Tor network inter-relay connections.
+
+CSS for line between bullets is Derived in part from https://jsfiddle.net/5JP8Q/
+
+Color the background to make circuit display distinct from the rest of popup.
+*/
+
+/* The circuit-display div encloses all other HTML elements. */
+div#circuit-display {
+ background-color: #e8f4f4;
+ font-family: Arial;
+ width: 100%;
+ height: 100%;
+ padding: 8px;
+ /* Magically keep popup menu from clipping div: */
+ display: table-cell;
+}
+
+/* Format the title text. */
+div#circuit-display p#title {
+ font-size: 15px;
+ font-weight: bold;
+ color: #2c26a7;
+ margin: 0;
+}
+
+/* Format the domain text. */
+div#circuit-display p#domain {
+ font-size: 13px;
+ color: black;
+ margin: 4px;
+}
+
+/* Format the circuit node list. */
+ul#circuit-nodes {
+ font-family: Arial;
+ font-size: 14px;
+ margin-top: 8px;
+ padding-left: 8px;
+ padding-right: 8px;
+}
+
+/* Hide default bullets, and position pseudoelements (our new bullets) relative
+ to the list items. */
+ul#circuit-nodes li {
+ list-style: none;
+ position:relative;
+}
+
+/* Pad the list item text at left or right to be tastefully
+ separated from bullets. */
+ul#circuit-nodes li:-moz-dir(ltr) {
+ padding-left: 18px;
+}
+ul#circuit-nodes li:-moz-dir(rtl) {
+ padding-right: 18px;
+}
+
+/* Drawn bullets, centered vertically for each list item. */
+ul#circuit-nodes li:after {
+ /* bullets */
+ content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%2711%27%20height%3D%2711%27%3E%3Ccircle%20cx%3D%275.5%27%20cy%3D%275.5%27%20r%3D%274%27%20style%3D%27stroke%3A%20%23195021%3B%20stroke-width%3A%202px%3B%20fill%3A%20white%3B%27%2F%3E%3C%2Fsvg%3E");
+ position: absolute;
+ top: 1px;
+}
+
+/* Move the bullets to the far left or right,
+ depending on text directionality. */
+ul#circuit-nodes li:-moz-dir(ltr):after {
+ left: 0px;
+}
+ul#circuit-nodes li:-moz-dir(rtl):after {
+ right: 0px;
+}
+
+/* Draw a connecting vertical line through the bullets. */
+ul#circuit-nodes li:before {
+ content: "";
+ position: absolute;
+ border-left: 3px solid #4d363a;
+ height: 100%;
+ width: 0px;
+}
+
+/* Position lines through the middle of the bullet. */
+ul#circuit-nodes li:-moz-dir(ltr):before {
+ left: 4px;
+}
+ul#circuit-nodes li:-moz-dir(rtl):before {
+ right: 4px;
+}
+
+/* Shorten the first list item's line so that it starts under the bullet. */
+ul#circuit-nodes li:first-child:before {
+ top: 50%;
+}
+
+/* Shorten the last list item's line so that it ends under the bullet. */
+ul#circuit-nodes li:last-child:before {
+ height: 50%;
+}
1
0

[tor-browser-bundle/master] Bug 15023: Adding Linux MAR tools to SHA256 sums
by gk@torproject.org 10 Mar '15
by gk@torproject.org 10 Mar '15
10 Mar '15
commit 8fc54b8ab6e96ff8fc722066bc7756b25d23619f
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Mar 10 11:34:07 2015 +0000
Bug 15023: Adding Linux MAR tools to SHA256 sums
---
gitian/mkbundle-linux.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gitian/mkbundle-linux.sh b/gitian/mkbundle-linux.sh
index c71981f..f1ef984 100755
--- a/gitian/mkbundle-linux.sh
+++ b/gitian/mkbundle-linux.sh
@@ -257,7 +257,7 @@ then
mkdir -p $WRAPPER_DIR/$TORBROWSER_BUILDDIR/
cp -a build/out/tor-browser-linux*xz* $WRAPPER_DIR/$TORBROWSER_BUILDDIR/ || exit 1
cp -a build/out/*.mar $WRAPPER_DIR/$TORBROWSER_BUILDDIR/ || exit 1
- #cp -a inputs/mar-tools-linux*.zip $WRAPPER_DIR/$TORBROWSER_BUILDDIR/ || exit 1
+ cp -a inputs/mar-tools-linux*.zip $WRAPPER_DIR/$TORBROWSER_BUILDDIR/ || exit 1
cp -a inputs/*debug.zip $WRAPPER_DIR/$TORBROWSER_BUILDDIR/ || exit 1
touch inputs/bundle-linux.gbuilt
else
1
0

[torbutton/master] Bug #15207: Check first if bridge.ID exists before using it
by gk@torproject.org 10 Mar '15
by gk@torproject.org 10 Mar '15
10 Mar '15
commit 9714d5a8abfcc19c6c5667a8c4e3b7d064401df0
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Mon Mar 9 17:24:05 2015 -0700
Bug #15207: Check first if bridge.ID exists before using it
---
src/chrome/content/tor-circuit-display.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/chrome/content/tor-circuit-display.js b/src/chrome/content/tor-circuit-display.js
index e2628b4..bcda03a 100644
--- a/src/chrome/content/tor-circuit-display.js
+++ b/src/chrome/content/tor-circuit-display.js
@@ -55,7 +55,7 @@ let trimQuotes = s => s ? s.match(/^\"(.*)\"$/)[1] : undefined;
let getBridge = function* (controller, id) {
let bridges = yield controller.getConf("bridge");
for (let bridge of bridges) {
- if (bridge.ID.toUpperCase() === id.toUpperCase()) {
+ if (bridge.ID && bridge.ID.toUpperCase() === id.toUpperCase()) {
return bridge;
}
}
1
0

[tor-browser-bundle/maint-4.0] Bug 14992: regenerate existing incremental MAR files
by boklm@torproject.org 09 Mar '15
by boklm@torproject.org 09 Mar '15
09 Mar '15
commit 9415032ccc373f96d3b7be4cf98ebe4d7bdf20e0
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Mon Mar 9 19:50:27 2015 +0100
Bug 14992: regenerate existing incremental MAR files
---
tools/update-responses/update_responses | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/tools/update-responses/update_responses b/tools/update-responses/update_responses
index f982637..8b8c217 100755
--- a/tools/update-responses/update_responses
+++ b/tools/update-responses/update_responses
@@ -168,7 +168,7 @@ sub create_incremental_mar {
$pm->finish;
}
-sub create_missing_incremental_mars_for_version {
+sub create_incremental_mars_for_version {
my ($config, $version) = @_;
my $pm = Parallel::ForkManager->new(get_nbprocs);
$pm->run_on_finish(sub { $_[2]->(@_) });
@@ -179,7 +179,6 @@ sub create_missing_incremental_mars_for_version {
my $from_v = $config->{versions}{$from_version};
foreach my $os (keys %{$v->{files}}) {
foreach my $lang (keys %{$v->{files}{$os}}) {
- next if defined $v->{files}{$os}{$lang}{partial}{$from_version};
next unless defined $from_v->{files}{$os}{$lang}{complete};
create_incremental_mar($config, $pm, $from_version, $version, $os, $lang);
}
@@ -451,7 +450,7 @@ my %actions = (
check_deps;
foreach my $version (channel_to_version($config, @ARGV)) {
get_version_files($config, $version);
- create_missing_incremental_mars_for_version($config, $version);
+ create_incremental_mars_for_version($config, $version);
}
},
check_update_responses_deployement => \&check_update_responses,
1
0

[tor-browser-bundle/master] Bug 14992: regenerate existing incremental MAR files
by boklm@torproject.org 09 Mar '15
by boklm@torproject.org 09 Mar '15
09 Mar '15
commit 010d6f55a4060b0dbb8e0c779f857bb35fbf0f36
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Mon Mar 9 19:50:27 2015 +0100
Bug 14992: regenerate existing incremental MAR files
---
tools/update-responses/update_responses | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/tools/update-responses/update_responses b/tools/update-responses/update_responses
index f982637..8b8c217 100755
--- a/tools/update-responses/update_responses
+++ b/tools/update-responses/update_responses
@@ -168,7 +168,7 @@ sub create_incremental_mar {
$pm->finish;
}
-sub create_missing_incremental_mars_for_version {
+sub create_incremental_mars_for_version {
my ($config, $version) = @_;
my $pm = Parallel::ForkManager->new(get_nbprocs);
$pm->run_on_finish(sub { $_[2]->(@_) });
@@ -179,7 +179,6 @@ sub create_missing_incremental_mars_for_version {
my $from_v = $config->{versions}{$from_version};
foreach my $os (keys %{$v->{files}}) {
foreach my $lang (keys %{$v->{files}{$os}}) {
- next if defined $v->{files}{$os}{$lang}{partial}{$from_version};
next unless defined $from_v->{files}{$os}{$lang}{complete};
create_incremental_mar($config, $pm, $from_version, $version, $os, $lang);
}
@@ -451,7 +450,7 @@ my %actions = (
check_deps;
foreach my $version (channel_to_version($config, @ARGV)) {
get_version_files($config, $version);
- create_missing_incremental_mars_for_version($config, $version);
+ create_incremental_mars_for_version($config, $version);
}
},
check_update_responses_deployement => \&check_update_responses,
1
0

[tor-browser-bundle/master] Bug 15023: Build MAR tools archive deterministically.
by gk@torproject.org 09 Mar '15
by gk@torproject.org 09 Mar '15
09 Mar '15
commit bc8eb2befd19fd13798f9a0527b2fa821555408e
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Fri Mar 6 16:38:48 2015 -0500
Bug 15023: Build MAR tools archive deterministically.
Use dzip.sh to create the mar-tools-*.zip files.
---
gitian/descriptors/linux/gitian-firefox.yml | 2 +-
gitian/descriptors/mac/gitian-firefox.yml | 2 +-
gitian/descriptors/windows/gitian-firefox.yml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/gitian/descriptors/linux/gitian-firefox.yml b/gitian/descriptors/linux/gitian-firefox.yml
index a1abf2e..3a144ca 100644
--- a/gitian/descriptors/linux/gitian-firefox.yml
+++ b/gitian/descriptors/linux/gitian-firefox.yml
@@ -154,7 +154,7 @@ script: |
cp -p obj-*/dist/bin/$LIB $MARTOOLS/
done
cd ~/build
- zip -r mar-tools-linux${GBUILD_BITS}.zip mar-tools
+ ~/build/dzip.sh mar-tools-linux${GBUILD_BITS}.zip mar-tools
cp -p mar-tools-linux${GBUILD_BITS}.zip $OUTDIR/
#
# Strip and generate debuginfo for the firefox binary that we keep, all *.so
diff --git a/gitian/descriptors/mac/gitian-firefox.yml b/gitian/descriptors/mac/gitian-firefox.yml
index 9126f03..f609268 100644
--- a/gitian/descriptors/mac/gitian-firefox.yml
+++ b/gitian/descriptors/mac/gitian-firefox.yml
@@ -92,7 +92,7 @@ script: |
cp -p obj-*/dist/host/bin/mar $MARTOOLS/
cp -p obj-*/dist/host/bin/mbsdiff $MARTOOLS/
cd ~/build
- zip -r mar-tools-mac${GBUILD_BITS}.zip mar-tools
+ ~/build/dzip.sh mar-tools-mac${GBUILD_BITS}.zip mar-tools
cp -p mar-tools-mac${GBUILD_BITS}.zip $OUTDIR/
#
cd $INSTDIR
diff --git a/gitian/descriptors/windows/gitian-firefox.yml b/gitian/descriptors/windows/gitian-firefox.yml
index 07c082b..c5f2c41 100644
--- a/gitian/descriptors/windows/gitian-firefox.yml
+++ b/gitian/descriptors/windows/gitian-firefox.yml
@@ -116,7 +116,7 @@ script: |
cp -p obj-*/dist/host/bin/mar $MARTOOLS/
cp -p obj-*/dist/host/bin/mbsdiff $MARTOOLS/
cd ~/build
- zip -r mar-tools-win32.zip mar-tools
+ ~/build/dzip.sh mar-tools-win32.zip mar-tools
cp mar-tools-win32.zip $OUTDIR/
# Making the .ja files deterministic and grabbing the results
1
0

[torbutton/master] Bug 15085: Fix about:tor RTL text alignment problems.
by brade@torproject.org 04 Mar '15
by brade@torproject.org 04 Mar '15
04 Mar '15
commit 31b174a2ca518663d756bcb7aff92be119eefb58
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Wed Mar 4 14:56:51 2015 -0500
Bug 15085: Fix about:tor RTL text alignment problems.
---
src/chrome/locale/ar/aboutTor.dtd | 2 +-
src/chrome/locale/fa/aboutTor.dtd | 2 +-
src/chrome/skin/aboutTor.css | 9 +++++++++
3 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/src/chrome/locale/ar/aboutTor.dtd b/src/chrome/locale/ar/aboutTor.dtd
index 4ab6609..da6be21 100644
--- a/src/chrome/locale/ar/aboutTor.dtd
+++ b/src/chrome/locale/ar/aboutTor.dtd
@@ -44,6 +44,6 @@
<!ENTITY aboutTor.helpInfo5.label "تبرع »">
<!ENTITY aboutTor.helpInfo5.link "https://www.torproject.org/donate/donate.html.en">
-<!ENTITY aboutTor.footer.label "مشروع تور هو US 501(c)(3) غير ربحي مُكرس للبحث، و التطوير، و التوعية بإخفاء الهوية والخصوصية.">
+<!ENTITY aboutTor.footer.label "مشروع تور هو ‭US 501(c)(3)‬ غير ربحي مُكرس للبحث، و التطوير، و التوعية بإخفاء الهوية والخصوصية.">
<!ENTITY aboutTor.learnMore.label "تعلم المزيد عن مشروع تور »">
<!ENTITY aboutTor.learnMore.link "https://www.torproject.org/about/overview.html.en">
diff --git a/src/chrome/locale/fa/aboutTor.dtd b/src/chrome/locale/fa/aboutTor.dtd
index a7bd20f..aaa04be 100644
--- a/src/chrome/locale/fa/aboutTor.dtd
+++ b/src/chrome/locale/fa/aboutTor.dtd
@@ -44,6 +44,6 @@
<!ENTITY aboutTor.helpInfo5.label "اهدا كنيد »">
<!ENTITY aboutTor.helpInfo5.link "https://www.torproject.org/donate/donate.html.en">
-<!ENTITY aboutTor.footer.label "پروژهٔ تور سازمان غیر انتفاعی آمریکایی 501(c)3 مختص پژوهش, توسعه و آموزش در زمین ناشناسی و حریم شخصی آنلاين هست.">
+<!ENTITY aboutTor.footer.label "پروژهٔ تور سازمان غیر انتفاعی آمریکایی ‭501(c)(3)‬ مختص پژوهش, توسعه و آموزش در زمین ناشناسی و حریم شخصی آنلاين هست.">
<!ENTITY aboutTor.learnMore.label "اطلاعات بیشتر در پروژهٔ تور كسب كنيد">
<!ENTITY aboutTor.learnMore.link "https://www.torproject.org/about/overview.html.en">
diff --git a/src/chrome/skin/aboutTor.css b/src/chrome/skin/aboutTor.css
index 0c12374..1342404 100644
--- a/src/chrome/skin/aboutTor.css
+++ b/src/chrome/skin/aboutTor.css
@@ -224,6 +224,10 @@ body .top div.hideIfTorIsUpToDate h1.hideIfTorOff {
text-align: left;
}
+#middle p:-moz-dir(rtl) {
+ text-align: right;
+}
+
#middle a {
font-size: 1.35em;
}
@@ -238,6 +242,11 @@ body .top div.hideIfTorIsUpToDate h1.hideIfTorOff {
padding: 5px 0 0 22px;
}
+#middle ul:-moz-dir(rtl) {
+ text-align: right;
+ padding: 5px 22px 0 0;
+}
+
#middle li {
padding-top: 2px;
}
1
0

20 Feb '15
commit aa080184ec1c8101f719c9245e679a7b1dde99dd
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Fri Feb 20 12:05:51 2015 -0800
Update NoScript to 2.6.9.15.
---
Bundle-Data/Docs/ChangeLog.txt | 4 ++--
gitian/versions.alpha | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/Bundle-Data/Docs/ChangeLog.txt b/Bundle-Data/Docs/ChangeLog.txt
index 5998b60..0734bc9 100644
--- a/Bundle-Data/Docs/ChangeLog.txt
+++ b/Bundle-Data/Docs/ChangeLog.txt
@@ -3,7 +3,7 @@ Tor Browser 4.5a4 -- Feb 24 2015
* Update Firefox to 31.5.0esr
* Update Tor to 0.2.6.3-alpha
* Update OpenSSL to 1.0.1l
- * Update NoScript to 2.6.9.14
+ * Update NoScript to 2.6.9.15
* Update obfs4proxy to 0.0.4
* Use obfs4proxy for ScrambleSuit bridges
* Update Torbutton to 1.9.0.0
@@ -50,7 +50,7 @@ Tor Browser 4.0.4 -- Feb 24 2015
* All Platforms
* Update Firefox to 31.5.0esr
* Update OpenSSL to 1.0.1l
- * Update NoScript to 2.6.9.14
+ * Update NoScript to 2.6.9.15
* Update HTTPS-Everywhere to 4.0.3
* Bug 14203: Prevent meek from displaying an extra update notification
* Bug 14849: Remove new NoScript menu option to make permissions permanent
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index 1f8b145..0f49a23 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -57,7 +57,7 @@ GO_VER=1.3.3
## File names for the source packages
OPENSSL_PACKAGE=openssl-${OPENSSL_VER}.tar.gz
GMP_PACKAGE=gmp-${GMP_VER}.tar.bz2
-NOSCRIPT_PACKAGE=noscript_security_suite-2.6.9.14-fn+fx+sm.xpi
+NOSCRIPT_PACKAGE=noscript_security_suite-2.6.9.15-sm+fn+fx.xpi
HTTPSE_PACKAGE=https-everywhere-${HTTPSE_VER}.xpi
TOOLCHAIN4_PACKAGE=x86_64-apple-darwin10.tar.xz
TOOLCHAIN4_OLD_PACKAGE=multiarch-darwin11-cctools127.2-gcc42-5666.3-llvmgcc42-2336.1-Linux-120724.tar.xz
@@ -86,7 +86,7 @@ GMP_HASH=752079520b4690531171d0f4532e40f08600215feefede70b24fabdc6f1ab160
OSXSDK_HASH=6602d8d5ddb371fbc02e2a5967d9bd0cd7358d46f9417753c8234b923f2ea6fc
TOOLCHAIN4_HASH=7b71bfe02820409b994c5c33a7eab81a81c72550f5da85ff7af70da3da244645
TOOLCHAIN4_OLD_HASH=65c1b2d302358a6b95a26c6828a66908a199276193bb0b268f2dcc1a997731e9
-NOSCRIPT_HASH=67516200ef6ec7a3741a2b94d2257edd91f1862cec92c89251ea870839f8032f
+NOSCRIPT_HASH=63d866458e0261d20b612193f8f446728c991dd488c59e49d8f927c63e7eb9b4
HTTPSE_HASH=a42812dbd4b0103600ac5dce0e5f1366e8a7a7267e18743f5cd1e152615964e3
MSVCR100_HASH=1221a09484964a6f38af5e34ee292b9afefccb3dc6e55435fd3aaf7c235d9067
PYCRYPTO_HASH=f2ce1e989b272cfcb677616763e0a2e7ec659effa67a88aa92b3a65528f60a3c
1
0

20 Feb '15
commit f7b6c5ce1b0c0566689a0a5485a4dfabcf2b7524
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Fri Feb 20 12:03:28 2015 -0800
Update NoScript to 2.6.9.15.
---
Bundle-Data/Docs/ChangeLog.txt | 2 +-
gitian/versions | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/Bundle-Data/Docs/ChangeLog.txt b/Bundle-Data/Docs/ChangeLog.txt
index eb21975..8ac530f 100644
--- a/Bundle-Data/Docs/ChangeLog.txt
+++ b/Bundle-Data/Docs/ChangeLog.txt
@@ -2,7 +2,7 @@ Tor Browser 4.0.4 -- Feb 24 2015
* All Platforms
* Update Firefox to 31.5.0esr
* Update OpenSSL to 1.0.1l
- * Update NoScript to 2.6.9.14
+ * Update NoScript to 2.6.9.15
* Update HTTPS-Everywhere to 4.0.3
* Bug 14203: Prevent meek from displaying an extra update notification
* Bug 14849: Remove new NoScript menu option to make permissions permanent
diff --git a/gitian/versions b/gitian/versions
index a6220c7..9720cc1 100755
--- a/gitian/versions
+++ b/gitian/versions
@@ -53,7 +53,7 @@ GO_VER=1.3.3
## File names for the source packages
OPENSSL_PACKAGE=openssl-${OPENSSL_VER}.tar.gz
GMP_PACKAGE=gmp-${GMP_VER}.tar.bz2
-NOSCRIPT_PACKAGE=noscript_security_suite-2.6.9.14-fn+fx+sm.xpi
+NOSCRIPT_PACKAGE=noscript_security_suite-2.6.9.15-sm+fn+fx.xpi
HTTPSE_PACKAGE=https-everywhere-${HTTPSE_VER}.xpi
TOOLCHAIN4_PACKAGE=x86_64-apple-darwin10.tar.xz
TOOLCHAIN4_OLD_PACKAGE=multiarch-darwin11-cctools127.2-gcc42-5666.3-llvmgcc42-2336.1-Linux-120724.tar.xz
@@ -81,7 +81,7 @@ GMP_HASH=752079520b4690531171d0f4532e40f08600215feefede70b24fabdc6f1ab160
OSXSDK_HASH=6602d8d5ddb371fbc02e2a5967d9bd0cd7358d46f9417753c8234b923f2ea6fc
TOOLCHAIN4_HASH=7b71bfe02820409b994c5c33a7eab81a81c72550f5da85ff7af70da3da244645
TOOLCHAIN4_OLD_HASH=65c1b2d302358a6b95a26c6828a66908a199276193bb0b268f2dcc1a997731e9
-NOSCRIPT_HASH=67516200ef6ec7a3741a2b94d2257edd91f1862cec92c89251ea870839f8032f
+NOSCRIPT_HASH=63d866458e0261d20b612193f8f446728c991dd488c59e49d8f927c63e7eb9b4
HTTPSE_HASH=30891fc7bd73213a4d8386c44fc53ab8037c9ec3d4b90caefbe6a7558ef7ac2c
MSVCR100_HASH=1221a09484964a6f38af5e34ee292b9afefccb3dc6e55435fd3aaf7c235d9067
PYCRYPTO_HASH=f2ce1e989b272cfcb677616763e0a2e7ec659effa67a88aa92b3a65528f60a3c
1
0

[tor-browser-bundle/master] Remove bug8405 backport. It is merged in Tor 0.2.6.3.
by mikeperry@torproject.org 20 Feb '15
by mikeperry@torproject.org 20 Feb '15
20 Feb '15
commit 438a412b0e834cf8455973255c0d3c243723e860
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Thu Feb 19 17:58:29 2015 -0800
Remove bug8405 backport. It is merged in Tor 0.2.6.3.
---
gitian/descriptors/linux/gitian-tor.yml | 3 ---
gitian/descriptors/mac/gitian-tor.yml | 3 ---
gitian/descriptors/windows/gitian-tor.yml | 3 ---
3 files changed, 9 deletions(-)
diff --git a/gitian/descriptors/linux/gitian-tor.yml b/gitian/descriptors/linux/gitian-tor.yml
index 87f3f10..7338f2d 100644
--- a/gitian/descriptors/linux/gitian-tor.yml
+++ b/gitian/descriptors/linux/gitian-tor.yml
@@ -80,9 +80,6 @@ script: |
then
git am ~/build/bug8405.patch
git am ~/build/bug8402-master.patch
- elif [ ${TOR_TAG::9} == "tor-0.2.6" ];
- then
- git am ~/build/bug8405.patch
fi
mkdir -p $OUTDIR/src
#git archive HEAD | tar -x -C $OUTDIR/src
diff --git a/gitian/descriptors/mac/gitian-tor.yml b/gitian/descriptors/mac/gitian-tor.yml
index a772a74..08408f8 100644
--- a/gitian/descriptors/mac/gitian-tor.yml
+++ b/gitian/descriptors/mac/gitian-tor.yml
@@ -58,9 +58,6 @@ script: |
then
git am ~/build/bug8405.patch
git am ~/build/bug8402-master.patch
- elif [ ${TOR_TAG::9} == "tor-0.2.6" ];
- then
- git am ~/build/bug8405.patch
fi
mkdir -p $OUTDIR/src
#git archive HEAD | tar -x -C $OUTDIR/src
diff --git a/gitian/descriptors/windows/gitian-tor.yml b/gitian/descriptors/windows/gitian-tor.yml
index 9cbbb86..7db511b 100644
--- a/gitian/descriptors/windows/gitian-tor.yml
+++ b/gitian/descriptors/windows/gitian-tor.yml
@@ -58,9 +58,6 @@ script: |
then
git am ~/build/bug8405.patch
git am ~/build/bug8402-master.patch
- elif [ ${TOR_TAG::9} == "tor-0.2.6" ];
- then
- git am ~/build/bug8405.patch
fi
mkdir -p $OUTDIR/src
#git archive HEAD | tar -x -C $OUTDIR/src
1
0

[tor-browser-bundle/master] Bump Tor Tag to 0.2.6.3-alpha and add to Changelog.
by mikeperry@torproject.org 19 Feb '15
by mikeperry@torproject.org 19 Feb '15
19 Feb '15
commit defcd8d1c416804960662ea5548679d231f90984
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Thu Feb 19 15:33:04 2015 -0800
Bump Tor Tag to 0.2.6.3-alpha and add to Changelog.
---
Bundle-Data/Docs/ChangeLog.txt | 1 +
gitian/versions.alpha | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/Bundle-Data/Docs/ChangeLog.txt b/Bundle-Data/Docs/ChangeLog.txt
index 5137372..5998b60 100644
--- a/Bundle-Data/Docs/ChangeLog.txt
+++ b/Bundle-Data/Docs/ChangeLog.txt
@@ -1,6 +1,7 @@
Tor Browser 4.5a4 -- Feb 24 2015
* All Platforms
* Update Firefox to 31.5.0esr
+ * Update Tor to 0.2.6.3-alpha
* Update OpenSSL to 1.0.1l
* Update NoScript to 2.6.9.14
* Update obfs4proxy to 0.0.4
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index 8f6f915..1f8b145 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -9,7 +9,7 @@ FIREFOX_VERSION=31.5.0esr
TORBROWSER_UPDATE_CHANNEL=alpha
TORBROWSER_TAG=tor-browser-${FIREFOX_VERSION}-4.5-1-build1
-TOR_TAG=tor-0.2.6.2-alpha
+TOR_TAG=tor-0.2.6.3-alpha
TORLAUNCHER_TAG=0.2.7.2
TORBUTTON_TAG=1.9.0.0
HTTPSE_TAG=3.5.3 # XXX: HTTPSE_VER is used instead, pending #11630
1
0

[tor-browser-bundle/master] Add 4.0.4 changelog to master copy.
by mikeperry@torproject.org 19 Feb '15
by mikeperry@torproject.org 19 Feb '15
19 Feb '15
commit a55a359bc8e6dad3ae4bb73b1f2f683f61e96da6
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Thu Feb 19 12:57:40 2015 -0800
Add 4.0.4 changelog to master copy.
---
Bundle-Data/Docs/ChangeLog.txt | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/Bundle-Data/Docs/ChangeLog.txt b/Bundle-Data/Docs/ChangeLog.txt
index 210ac54..5137372 100644
--- a/Bundle-Data/Docs/ChangeLog.txt
+++ b/Bundle-Data/Docs/ChangeLog.txt
@@ -45,6 +45,16 @@ Tor Browser 4.5a4 -- Feb 24 2015
* Linux:
* Bug 13717: Make sure we use the bash shell on Linux
+Tor Browser 4.0.4 -- Feb 24 2015
+ * All Platforms
+ * Update Firefox to 31.5.0esr
+ * Update OpenSSL to 1.0.1l
+ * Update NoScript to 2.6.9.14
+ * Update HTTPS-Everywhere to 4.0.3
+ * Bug 14203: Prevent meek from displaying an extra update notification
+ * Bug 14849: Remove new NoScript menu option to make permissions permanent
+ * Bug 14851: Set NoScript pref to disable permanent permissions
+
Tor Browser 4.5a3 -- Jan 19 2015
* All Platforms
* Update Firefox to 31.4.0esr
1
0

[tor-browser-bundle/master] Bug 14422: Make incrementals by default.
by mikeperry@torproject.org 19 Feb '15
by mikeperry@torproject.org 19 Feb '15
19 Feb '15
commit 59aad368f24170654781fd4cd538337b0ec2312c
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Tue Jan 27 08:46:08 2015 -0800
Bug 14422: Make incrementals by default.
Also create a "resume" rule to make it easier to resume a build, including
remaking incrementals, and update the documentation.
Also remove the -beta rules, as we don't use those.
---
gitian/Makefile | 44 ++++++++++----------------------------------
gitian/README.build | 17 +++--------------
gitian/hash-bundles.sh | 23 +++++++++++++++++------
3 files changed, 30 insertions(+), 54 deletions(-)
diff --git a/gitian/Makefile b/gitian/Makefile
index eaa22c2..ea82151 100644
--- a/gitian/Makefile
+++ b/gitian/Makefile
@@ -1,18 +1,21 @@
TORSOCKS = torsocks
-all: clean prep build
+all: clean resume
-nightly: clean prep-nightly build-nightly
+nightly: clean resume-nightly
-alpha: clean prep-alpha build-alpha
+alpha: clean resume-alpha
-beta: clean prep-beta build-beta
+resume: prep build incrementals hash
+
+resume-nightly: prep-nightly build-nightly
+
+resume-alpha: prep-alpha build-alpha incrementals-alpha hash-alpha
build:
./mkbundle-linux.sh
./mkbundle-windows.sh
./mkbundle-mac.sh
- ./hash-bundles.sh
build-nightly:
./mkbundle-linux.sh versions.nightly
@@ -24,22 +27,12 @@ build-alpha:
./mkbundle-linux.sh versions.alpha
./mkbundle-windows.sh versions.alpha
./mkbundle-mac.sh versions.alpha
- ./hash-bundles.sh versions.alpha
-
-build-beta:
- ./mkbundle-linux.sh versions.beta
- ./mkbundle-windows.sh versions.beta
- ./mkbundle-mac.sh versions.beta
- ./hash-bundles.sh versions.beta
incrementals:
- ../tools/update-responses/gen_incrementals release
+ ../tools/update-responses/gen_incrementals release || echo 'Warning: could not generate incremental MARs.' >&2
incrementals-alpha:
- ../tools/update-responses/gen_incrementals alpha
-
-incrementals-beta:
- ../tools/update-responses/gen_incrementals beta
+ ../tools/update-responses/gen_incrementals alpha || echo 'Warning: could not generate incremental MARs.' >&2
signmars:
./signmars.sh versions
@@ -47,9 +40,6 @@ signmars:
signmars-alpha:
./signmars.sh versions.alpha
-signmars-beta:
- ./signmars.sh versions.beta
-
signmars-nightly:
./signmars.sh versions.nightly
@@ -59,8 +49,6 @@ update_responses:
update_responses-alpha:
../tools/update-responses/update_responses alpha
-update_responses-beta:
- ../tools/update-responses/update_responses beta
hash:
./hash-bundles.sh versions
@@ -68,9 +56,6 @@ hash:
hash-alpha:
./hash-bundles.sh versions.alpha
-hash-beta:
- ./hash-bundles.sh versions.beta
-
hash-nightly:
./hash-bundles.sh versions.nightly
@@ -83,9 +68,6 @@ sign-alpha:
sign-nightly:
./upload-signature.sh versions.nightly
-sign-beta:
- $(TORSOCKS) ./upload-signature.sh versions.beta
-
match:
$(TORSOCKS) ./check-match.sh versions
@@ -95,9 +77,6 @@ match-nightly:
match-alpha:
$(TORSOCKS) ./check-match.sh versions.alpha
-match-beta:
- $(TORSOCKS) ./check-match.sh versions.beta
-
prep:
./check-prerequisites.sh
$(TORSOCKS) ./fetch-inputs.sh ../../gitian-builder/inputs/ versions
@@ -110,9 +89,6 @@ prep-alpha:
./check-prerequisites.sh
$(TORSOCKS) ./fetch-inputs.sh ../../gitian-builder/inputs/ versions.alpha
-prep-beta:
- ./check-prerequisites.sh
- $(TORSOCKS) ./fetch-inputs.sh ../../gitian-builder/inputs/ versions.beta
clean: clean-utils clean-tor clean-browser clean-pt clean-bundle
rm -f ../../gitian-builder/inputs/*.yml
diff --git a/gitian/README.build b/gitian/README.build
index 4caf690..8d8f008 100644
--- a/gitian/README.build
+++ b/gitian/README.build
@@ -62,33 +62,22 @@ Detailed Explanation of Scripts:
To build beta/alpha/nightly bundles, alternate targets are provided:
- nightly: The equivalent to the 'all' rule for nightly packages
- alpha: The equivalent to the 'all' rule for alpha packages
- - beta: The equivalent to the 'all' rule for beta packages
- prep-nightly: The equivalent to the 'prep' rule for nightly packages
- prep-alpha: The equivalent to the 'prep' rule for alpha packages
- - prep-beta: The equivalent to the 'prep' rule for beta packages
- build-nightly: The equivalent to the 'build' rule for nightly packages
- build-alpha: The equivalent to the 'build' rule for alpha packages
- - build-beta: The equivalent to the 'build' rule for beta packages
- sign-nightly: The equivalent to the 'sign' rule for nightly packages
- sign-alpha: The equivalent to the 'sign' rule for alpha packages
- - sign-beta: The equivalent to the 'sign' rule for beta packages
- match-nightly: The equivalent to the 'match' rule for nightly packages
- match-alpha: The equivalent to the 'match' rule for alpha packages
- - match-beta: The equivalent to the 'match' rule for beta packages
- hash-nightly: The equivalent to the 'hash' rule for nightly packages
- hash-alpha: The equivalent to the 'hash' rule for alpha packages
- - hash-beta: The equivalent to the 'hash' rule for beta packages
- incrementals-alpha: The equivalent to the 'incrementals' rule for
alpha packages
- - incrementals-beta: The equivalent to the 'incrementals' rule for
- beta packages
- update_responses-alpha: The equivalent to the 'update_responses' rule
for alpha packages
- - update_responses-beta: The equivalent to the 'update_responses' rule
- for beta packages
- signmars-nightly: The equivalent to the 'signmars' rule for nightly packages
- signmars-alpha: The equivalent to the 'signmars' rule for alpha packages
- - signmars-beta: The equivalent to the 'signmars' rule for beta packages
1. check-prerequisites.sh: This script checks if your system is capable of
running Gitian, and if it is not, it tells you what you need to do.
@@ -156,13 +145,13 @@ Partial Rebuilds:
Each stage leaves build artifacts in ../../gitian-builder/inputs/ for use
in later stages. If the artifact files for a given stage are present, that
- stage is skipped by a 'make build'.
+ stage is skipped by a 'make resume'.
No other dependency checking on build stages is performed.
If you wish to rebuild only a given stage, there are several 'make clean-'
targets to remove the artifacts for that stage. Running a subsequent
- 'make build' after that will rebuild only those targets that have been
+ 'make resume' after that will rebuild only those targets that have been
cleaned, and then re-package everything again as well.
Note that if any of the source inputs, or the Ubuntu buildchain tools, or
@@ -178,7 +167,7 @@ Known Issues and Quirks:
1. Sometimes, fresh VM installs can fail. If your build hangs while trying
to connect to the target or during the SSH banner, it might be worth
- running 'make vmclean && make build' to clean your VM images, but still
+ running 'make vmclean && make resume' to clean your VM images, but still
resume the build process as the component you left off at. Remember,
'make' by itself runs a clean rule that will wipe your previous builds by
default.
diff --git a/gitian/hash-bundles.sh b/gitian/hash-bundles.sh
index 37efdb1..fe04699 100755
--- a/gitian/hash-bundles.sh
+++ b/gitian/hash-bundles.sh
@@ -24,11 +24,22 @@ sha256sum `ls -1 | grep -v '\.incremental\.mar$' | sort` > sha256sums.txt
if ls -1 | grep -q '\.incremental\.mar$'
then
sha256sum `ls -1 | grep '\.incremental\.mar$' | sort` > sha256sums.incrementals.txt
+ echo
+ echo "If this is an official build, you should now sign your result with: "
+ echo " make sign"
+ echo
+ echo "In either case, you can check against any official builds with: "
+ echo " make match"
+else
+ echo
+ echo "It appears that this build did not generate any incremental update (.mar) files"
+ echo
+ echo "If your goal is to reproduce the entire release, you still need to download"
+ echo "the mar files from the previous release from the appropriate directory in: "
+ echo " https://archive.torproject.org/tor-package-archive/torbrowser/"
+ echo
+ echo "After that, you will need to make the incremental updates with: "
+ echo " make incrementals && make hash"
fi
-echo
-echo "If this is an official build, you should now sign your result with: "
-echo " make sign"
-echo
-echo "In either case, you can check against any official builds with: "
-echo " make match"
+
1
0

19 Feb '15
commit 906f7b19b0efd6b502b31c59d36ad30559d5efd7
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Thu Feb 19 12:28:16 2015 -0800
Use build2 for langpacks.
---
gitian/versions | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gitian/versions b/gitian/versions
index 24a5f8e..a6220c7 100755
--- a/gitian/versions
+++ b/gitian/versions
@@ -33,7 +33,7 @@ GITIAN_TAG=tor-browser-builder-3.x-7
OPENSSL_VER=1.0.1l
GMP_VER=5.1.3
FIREFOX_LANG_VER=$FIREFOX_VERSION
-FIREFOX_LANG_BUILD=build1
+FIREFOX_LANG_BUILD=build2
BINUTILS_VER=2.24
GCC_VER=4.9.1
PYTHON_VER=2.7.5
1
0

[tor-browser-bundle/maint-4.0] Add https-e to changelog for 4.0.4
by mikeperry@torproject.org 19 Feb '15
by mikeperry@torproject.org 19 Feb '15
19 Feb '15
commit ba4b081e623de576f6746aeb38c8f3996a915f26
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Thu Feb 19 12:27:22 2015 -0800
Add https-e to changelog for 4.0.4
---
Bundle-Data/Docs/ChangeLog.txt | 1 +
1 file changed, 1 insertion(+)
diff --git a/Bundle-Data/Docs/ChangeLog.txt b/Bundle-Data/Docs/ChangeLog.txt
index 2da5786..eb21975 100644
--- a/Bundle-Data/Docs/ChangeLog.txt
+++ b/Bundle-Data/Docs/ChangeLog.txt
@@ -3,6 +3,7 @@ Tor Browser 4.0.4 -- Feb 24 2015
* Update Firefox to 31.5.0esr
* Update OpenSSL to 1.0.1l
* Update NoScript to 2.6.9.14
+ * Update HTTPS-Everywhere to 4.0.3
* Bug 14203: Prevent meek from displaying an extra update notification
* Bug 14849: Remove new NoScript menu option to make permissions permanent
* Bug 14851: Set NoScript pref to disable permanent permissions
1
0

19 Feb '15
commit dc24c3635cc1162af49114e9ba0b16171e03c4ea
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Thu Feb 19 12:05:38 2015 -0800
Update config.yml for 4.0.4.
---
tools/update-responses/config.yml | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/tools/update-responses/config.yml b/tools/update-responses/config.yml
index 7cd1a03..8357544 100644
--- a/tools/update-responses/config.yml
+++ b/tools/update-responses/config.yml
@@ -6,15 +6,15 @@ build_targets:
osx32: Darwin_x86-gcc3
osx64: Darwin_x86_64-gcc3
channels:
- release: 4.0.3
+ release: 4.0.4
alpha: 4.5-alpha-2
versions:
- 4.0.3:
- platformVersion: 31.4.0
+ 4.0.4:
+ platformVersion: 31.5.0
detailsURL: https://www.torproject.org/projects/torbrowser.html.en
- download_url: https://www.torproject.org/dist/torbrowser/4.0.3
+ download_url: https://www.torproject.org/dist/torbrowser/4.0.4
incremental_from:
- - 4.0.2
+ - 4.0.3
4.5-alpha-2:
platformVersion: 31.3.0
detailsURL: https://www.torproject.org/projects/torbrowser.html.en
1
0

[tor-browser-bundle/maint-4.0] Bug 14422: Make incrementals by default.
by mikeperry@torproject.org 19 Feb '15
by mikeperry@torproject.org 19 Feb '15
19 Feb '15
commit 52cb62cd7bd24ba03f3939457c7c2309b3a746e8
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed Feb 18 18:47:48 2015 -0800
Bug 14422: Make incrementals by default.
Also create a "resume" rule to make it easier to resume a build, including
remaking incrementals, and update the documentation.
Also remove the -beta rules, as we don't use those.
---
gitian/Makefile | 41 ++++++++++-------------------------------
gitian/README.build | 6 +++---
gitian/hash-bundles.sh | 23 +++++++++++++++++------
3 files changed, 30 insertions(+), 40 deletions(-)
diff --git a/gitian/Makefile b/gitian/Makefile
index 33403b5..ce362ff 100644
--- a/gitian/Makefile
+++ b/gitian/Makefile
@@ -1,18 +1,21 @@
TORSOCKS = torsocks
-all: clean prep build
+all: clean resume
-nightly: clean prep-nightly build-nightly
+nightly: clean resume-nightly
-alpha: clean prep-alpha build-alpha
+alpha: clean resume-alpha
-beta: clean prep-beta build-beta
+resume: prep build incrementals hash
+
+resume-nightly: prep-nightly build-nightly
+
+resume-alpha: prep-alpha build-alpha incrementals-alpha hash-alpha
build:
./mkbundle-linux.sh
./mkbundle-windows.sh
./mkbundle-mac.sh
- ./hash-bundles.sh
build-nightly:
./mkbundle-linux.sh versions.nightly
@@ -24,22 +27,12 @@ build-alpha:
./mkbundle-linux.sh versions.alpha
./mkbundle-windows.sh versions.alpha
./mkbundle-mac.sh versions.alpha
- ./hash-bundles.sh versions.alpha
-
-build-beta:
- ./mkbundle-linux.sh versions.beta
- ./mkbundle-windows.sh versions.beta
- ./mkbundle-mac.sh versions.beta
- ./hash-bundles.sh versions.beta
incrementals:
- ../tools/update-responses/gen_incrementals release
+ ../tools/update-responses/gen_incrementals release || echo 'Warning: could not generate incremental MARs.' >&2
incrementals-alpha:
- ../tools/update-responses/gen_incrementals alpha
-
-incrementals-beta:
- ../tools/update-responses/gen_incrementals beta
+ ../tools/update-responses/gen_incrementals alpha || echo 'Warning: could not generate incremental MARs.' >&2
update_responses:
../tools/update-responses/update_responses release
@@ -47,8 +40,6 @@ update_responses:
update_responses-alpha:
../tools/update-responses/update_responses alpha
-update_responses-beta:
- ../tools/update-responses/update_responses beta
hash:
./hash-bundles.sh versions
@@ -56,9 +47,6 @@ hash:
hash-alpha:
./hash-bundles.sh versions.alpha
-hash-beta:
- ./hash-bundles.sh versions.beta
-
hash-nightly:
./hash-bundles.sh versions.nightly
@@ -71,9 +59,6 @@ sign-alpha:
sign-nightly:
./upload-signature.sh versions.nightly
-sign-beta:
- $(TORSOCKS) ./upload-signature.sh versions.beta
-
match:
$(TORSOCKS) ./check-match.sh versions
@@ -83,9 +68,6 @@ match-nightly:
match-alpha:
$(TORSOCKS) ./check-match.sh versions.alpha
-match-beta:
- $(TORSOCKS) ./check-match.sh versions.beta
-
prep:
./check-prerequisites.sh
$(TORSOCKS) ./fetch-inputs.sh ../../gitian-builder/inputs/ versions
@@ -98,9 +80,6 @@ prep-alpha:
./check-prerequisites.sh
$(TORSOCKS) ./fetch-inputs.sh ../../gitian-builder/inputs/ versions.alpha
-prep-beta:
- ./check-prerequisites.sh
- $(TORSOCKS) ./fetch-inputs.sh ../../gitian-builder/inputs/ versions.beta
clean: clean-utils clean-tor clean-browser clean-pt clean-bundle
rm -f ../../gitian-builder/inputs/*.yml
diff --git a/gitian/README.build b/gitian/README.build
index b3e8be5..e4f5d58 100644
--- a/gitian/README.build
+++ b/gitian/README.build
@@ -143,13 +143,13 @@ Partial Rebuilds:
Each stage leaves build artifacts in ../../gitian-builder/inputs/ for use
in later stages. If the artifact files for a given stage are present, that
- stage is skipped by a 'make build'.
+ stage is skipped by a 'make resume'.
No other dependency checking on build stages is performed.
If you wish to rebuild only a given stage, there are several 'make clean-'
targets to remove the artifacts for that stage. Running a subsequent
- 'make build' after that will rebuild only those targets that have been
+ 'make resume' after that will rebuild only those targets that have been
cleaned, and then re-package everything again as well.
Note that if any of the source inputs, or the Ubuntu buildchain tools, or
@@ -165,7 +165,7 @@ Known Issues and Quirks:
1. Sometimes, fresh VM installs can fail. If your build hangs while trying
to connect to the target or during the SSH banner, it might be worth
- running 'make vmclean && make build' to clean your VM images, but still
+ running 'make vmclean && make resume' to clean your VM images, but still
resume the build process as the component you left off at. Remember,
'make' by itself runs a clean rule that will wipe your previous builds by
default.
diff --git a/gitian/hash-bundles.sh b/gitian/hash-bundles.sh
index 2684158..962630a 100755
--- a/gitian/hash-bundles.sh
+++ b/gitian/hash-bundles.sh
@@ -23,11 +23,22 @@ sha256sum `ls -1 | grep -v '\.incremental\.mar$' | sort` > sha256sums.txt
if ls -1 | grep -q '\.incremental\.mar$'
then
sha256sum `ls -1 | grep '\.incremental\.mar$' | sort` > sha256sums.incrementals.txt
+ echo
+ echo "If this is an official build, you should now sign your result with: "
+ echo " make sign"
+ echo
+ echo "In either case, you can check against any official builds with: "
+ echo " make match"
+else
+ echo
+ echo "It appears that this build did not generate any incremental update (.mar) files"
+ echo
+ echo "If your goal is to reproduce the entire release, you still need to download"
+ echo "the mar files from the previous release from the appropriate directory in: "
+ echo " https://archive.torproject.org/tor-package-archive/torbrowser/"
+ echo
+ echo "After that, you will need to make the incremental updates with: "
+ echo " make incrementals && make hash"
fi
-echo
-echo "If this is an official build, you should now sign your result with: "
-echo " make sign"
-echo
-echo "In either case, you can check against any official builds with: "
-echo " make match"
+
1
0

19 Feb '15
commit 03d9d9df1912d5c55dbe3e36f8664a434ba32d78
Author: Georg Koppen <gk(a)torproject.org>
Date: Thu Feb 19 10:26:02 2015 +0000
There is a build2, let's use it then
---
gitian/versions.alpha | 2 +-
gitian/versions.nightly | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index 0869d4e..8f6f915 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -37,7 +37,7 @@ GITIAN_TAG=tor-browser-builder-3.x-7
OPENSSL_VER=1.0.1l
GMP_VER=5.1.3
FIREFOX_LANG_VER=$FIREFOX_VERSION
-FIREFOX_LANG_BUILD=build1
+FIREFOX_LANG_BUILD=build2
BINUTILS_VER=2.24
GCC_VER=4.9.1
PYTHON_VER=2.7.5
diff --git a/gitian/versions.nightly b/gitian/versions.nightly
index 2f078b2..8bbba6e 100755
--- a/gitian/versions.nightly
+++ b/gitian/versions.nightly
@@ -41,7 +41,7 @@ GITIAN_TAG=tor-browser-builder-3.x-7
OPENSSL_VER=1.0.1l
GMP_VER=5.1.3
FIREFOX_LANG_VER=$FIREFOX_VERSION
-FIREFOX_LANG_BUILD=build1
+FIREFOX_LANG_BUILD=build2
BINUTILS_VER=2.24
GCC_VER=4.9.1
PYTHON_VER=2.7.5
1
0
commit 7b46a3ce22e9b7760850b73e24271ce7e09a6a67
Author: Georg Koppen <gk(a)torproject.org>
Date: Thu Feb 19 09:57:51 2015 +0000
Update config.yml for 4.5a4
---
tools/update-responses/config.yml | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/tools/update-responses/config.yml b/tools/update-responses/config.yml
index 7f1d7c9..a338745 100644
--- a/tools/update-responses/config.yml
+++ b/tools/update-responses/config.yml
@@ -6,14 +6,14 @@ build_targets:
osx32: Darwin_x86-gcc3
osx64: Darwin_x86_64-gcc3
channels:
- alpha: 4.5a3
+ alpha: 4.5a4
versions:
- 4.5a3:
- platformVersion: 31.4.0
+ 4.5a4:
+ platformVersion: 31.5.0
detailsURL: https://www.torproject.org/projects/torbrowser.html.en
- download_url: https://www.torproject.org/dist/torbrowser/4.5a3
+ download_url: https://www.torproject.org/dist/torbrowser/4.5a4
incremental_from:
- - 4.5-alpha-2
+ - 4.5a3
migrate_archs:
osx32: osx64
osx32:
1
0

[tor-browser-bundle/maint-4.0] Changelog and tag bump for 4.0.4.
by mikeperry@torproject.org 19 Feb '15
by mikeperry@torproject.org 19 Feb '15
19 Feb '15
commit 09f79a8e0a565d1cc60c2af21cbc442ad5a883bd
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed Feb 18 16:41:22 2015 -0800
Changelog and tag bump for 4.0.4.
---
Bundle-Data/Docs/ChangeLog.txt | 9 +++++++++
gitian/versions | 12 ++++++------
2 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/Bundle-Data/Docs/ChangeLog.txt b/Bundle-Data/Docs/ChangeLog.txt
index 953ae64..2da5786 100644
--- a/Bundle-Data/Docs/ChangeLog.txt
+++ b/Bundle-Data/Docs/ChangeLog.txt
@@ -1,3 +1,12 @@
+Tor Browser 4.0.4 -- Feb 24 2015
+ * All Platforms
+ * Update Firefox to 31.5.0esr
+ * Update OpenSSL to 1.0.1l
+ * Update NoScript to 2.6.9.14
+ * Bug 14203: Prevent meek from displaying an extra update notification
+ * Bug 14849: Remove new NoScript menu option to make permissions permanent
+ * Bug 14851: Set NoScript pref to disable permanent permissions
+
Tor Browser 4.0.3 -- Jan 13 2015
* All Platforms
* Update Firefox to 31.4.0esr
diff --git a/gitian/versions b/gitian/versions
index d9135d3..24a5f8e 100755
--- a/gitian/versions
+++ b/gitian/versions
@@ -1,10 +1,10 @@
-TORBROWSER_VERSION=4.0.3
+TORBROWSER_VERSION=4.0.4
BUNDLE_LOCALES="ar de es-ES fa fr it ko nl pl pt-PT ru tr vi zh-CN"
BUILD_PT_BUNDLES=1
VERIFY_TAGS=1
-FIREFOX_VERSION=31.4.0esr
+FIREFOX_VERSION=31.5.0esr
TORBROWSER_UPDATE_CHANNEL=release
@@ -47,13 +47,13 @@ PY2EXE_VER=0.6.9
SETUPTOOLS_VER=1.4
LXML_VER=3.3.5
PARSLEY_VER=1.2
-HTTPSE_VER=4.0.2
+HTTPSE_VER=4.0.3
GO_VER=1.3.3
## File names for the source packages
OPENSSL_PACKAGE=openssl-${OPENSSL_VER}.tar.gz
GMP_PACKAGE=gmp-${GMP_VER}.tar.bz2
-NOSCRIPT_PACKAGE=noscript_security_suite-2.6.9.10-sm+fx+fn.xpi
+NOSCRIPT_PACKAGE=noscript_security_suite-2.6.9.14-fn+fx+sm.xpi
HTTPSE_PACKAGE=https-everywhere-${HTTPSE_VER}.xpi
TOOLCHAIN4_PACKAGE=x86_64-apple-darwin10.tar.xz
TOOLCHAIN4_OLD_PACKAGE=multiarch-darwin11-cctools127.2-gcc42-5666.3-llvmgcc42-2336.1-Linux-120724.tar.xz
@@ -81,8 +81,8 @@ GMP_HASH=752079520b4690531171d0f4532e40f08600215feefede70b24fabdc6f1ab160
OSXSDK_HASH=6602d8d5ddb371fbc02e2a5967d9bd0cd7358d46f9417753c8234b923f2ea6fc
TOOLCHAIN4_HASH=7b71bfe02820409b994c5c33a7eab81a81c72550f5da85ff7af70da3da244645
TOOLCHAIN4_OLD_HASH=65c1b2d302358a6b95a26c6828a66908a199276193bb0b268f2dcc1a997731e9
-NOSCRIPT_HASH=e1670ebc03810f82f61179fa158085df86b8f2a01d63ea16fa3f031242e4ec42
-HTTPSE_HASH=c83f9bc10f3da6e33e2242c7944fd2bb534708821685bef7b9d16850550cc858
+NOSCRIPT_HASH=67516200ef6ec7a3741a2b94d2257edd91f1862cec92c89251ea870839f8032f
+HTTPSE_HASH=30891fc7bd73213a4d8386c44fc53ab8037c9ec3d4b90caefbe6a7558ef7ac2c
MSVCR100_HASH=1221a09484964a6f38af5e34ee292b9afefccb3dc6e55435fd3aaf7c235d9067
PYCRYPTO_HASH=f2ce1e989b272cfcb677616763e0a2e7ec659effa67a88aa92b3a65528f60a3c
ARGPARSE_HASH=ddaf4b0a618335a32b6664d4ae038a1de8fbada3b25033f9021510ed2b3941a4
1
0

[tor-browser-bundle/master] Update NoScript and all tags for 4.5a4.
by mikeperry@torproject.org 19 Feb '15
by mikeperry@torproject.org 19 Feb '15
19 Feb '15
commit 7d63a2e025c359ff2d6e6e201aeab47e1da9f998
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed Feb 18 16:12:26 2015 -0800
Update NoScript and all tags for 4.5a4.
---
Bundle-Data/Docs/ChangeLog.txt | 1 +
gitian/versions.alpha | 10 +++++-----
2 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/Bundle-Data/Docs/ChangeLog.txt b/Bundle-Data/Docs/ChangeLog.txt
index 793404a..210ac54 100644
--- a/Bundle-Data/Docs/ChangeLog.txt
+++ b/Bundle-Data/Docs/ChangeLog.txt
@@ -2,6 +2,7 @@ Tor Browser 4.5a4 -- Feb 24 2015
* All Platforms
* Update Firefox to 31.5.0esr
* Update OpenSSL to 1.0.1l
+ * Update NoScript to 2.6.9.14
* Update obfs4proxy to 0.0.4
* Use obfs4proxy for ScrambleSuit bridges
* Update Torbutton to 1.9.0.0
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index 0e258aa..0869d4e 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -4,14 +4,14 @@ BUILD_PT_BUNDLES=1
VERIFY_TAGS=1
-FIREFOX_VERSION=31.4.0esr
+FIREFOX_VERSION=31.5.0esr
TORBROWSER_UPDATE_CHANNEL=alpha
TORBROWSER_TAG=tor-browser-${FIREFOX_VERSION}-4.5-1-build1
TOR_TAG=tor-0.2.6.2-alpha
-TORLAUNCHER_TAG=0.2.7.1
-TORBUTTON_TAG=1.8.1.3
+TORLAUNCHER_TAG=0.2.7.2
+TORBUTTON_TAG=1.9.0.0
HTTPSE_TAG=3.5.3 # XXX: HTTPSE_VER is used instead, pending #11630
NSIS_TAG=v0.2
ZLIB_TAG=v1.2.8
@@ -57,7 +57,7 @@ GO_VER=1.3.3
## File names for the source packages
OPENSSL_PACKAGE=openssl-${OPENSSL_VER}.tar.gz
GMP_PACKAGE=gmp-${GMP_VER}.tar.bz2
-NOSCRIPT_PACKAGE=noscript_security_suite-2.6.9.10-sm+fx+fn.xpi
+NOSCRIPT_PACKAGE=noscript_security_suite-2.6.9.14-fn+fx+sm.xpi
HTTPSE_PACKAGE=https-everywhere-${HTTPSE_VER}.xpi
TOOLCHAIN4_PACKAGE=x86_64-apple-darwin10.tar.xz
TOOLCHAIN4_OLD_PACKAGE=multiarch-darwin11-cctools127.2-gcc42-5666.3-llvmgcc42-2336.1-Linux-120724.tar.xz
@@ -86,7 +86,7 @@ GMP_HASH=752079520b4690531171d0f4532e40f08600215feefede70b24fabdc6f1ab160
OSXSDK_HASH=6602d8d5ddb371fbc02e2a5967d9bd0cd7358d46f9417753c8234b923f2ea6fc
TOOLCHAIN4_HASH=7b71bfe02820409b994c5c33a7eab81a81c72550f5da85ff7af70da3da244645
TOOLCHAIN4_OLD_HASH=65c1b2d302358a6b95a26c6828a66908a199276193bb0b268f2dcc1a997731e9
-NOSCRIPT_HASH=e1670ebc03810f82f61179fa158085df86b8f2a01d63ea16fa3f031242e4ec42
+NOSCRIPT_HASH=67516200ef6ec7a3741a2b94d2257edd91f1862cec92c89251ea870839f8032f
HTTPSE_HASH=a42812dbd4b0103600ac5dce0e5f1366e8a7a7267e18743f5cd1e152615964e3
MSVCR100_HASH=1221a09484964a6f38af5e34ee292b9afefccb3dc6e55435fd3aaf7c235d9067
PYCRYPTO_HASH=f2ce1e989b272cfcb677616763e0a2e7ec659effa67a88aa92b3a65528f60a3c
1
0

[tor-launcher/master] Update translations and bump version for 0.2.7.2.
by mikeperry@torproject.org 19 Feb '15
by mikeperry@torproject.org 19 Feb '15
19 Feb '15
commit 24067de9e08569d3783272155db471360a80ec54
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed Feb 18 18:39:23 2015 -0800
Update translations and bump version for 0.2.7.2.
---
src/chrome/locale/ach/network-settings.dtd | 8 ++--
src/chrome/locale/ady/network-settings.dtd | 8 ++--
src/chrome/locale/af/network-settings.dtd | 8 ++--
src/chrome/locale/ak/network-settings.dtd | 8 ++--
src/chrome/locale/am/network-settings.dtd | 8 ++--
src/chrome/locale/ar/network-settings.dtd | 8 ++--
src/chrome/locale/arn/network-settings.dtd | 8 ++--
src/chrome/locale/ast/network-settings.dtd | 8 ++--
src/chrome/locale/az/network-settings.dtd | 8 ++--
src/chrome/locale/be/network-settings.dtd | 8 ++--
src/chrome/locale/bg/network-settings.dtd | 38 ++++++++--------
src/chrome/locale/bn-IN/network-settings.dtd | 8 ++--
src/chrome/locale/bn/network-settings.dtd | 8 ++--
src/chrome/locale/bo/network-settings.dtd | 8 ++--
src/chrome/locale/br/network-settings.dtd | 8 ++--
src/chrome/locale/bs/network-settings.dtd | 8 ++--
src/chrome/locale/ca/network-settings.dtd | 8 ++--
src/chrome/locale/cs/network-settings.dtd | 8 ++--
src/chrome/locale/csb/network-settings.dtd | 8 ++--
src/chrome/locale/cv/network-settings.dtd | 8 ++--
src/chrome/locale/cy/network-settings.dtd | 8 ++--
src/chrome/locale/da/network-settings.dtd | 8 ++--
src/chrome/locale/de/network-settings.dtd | 8 ++--
src/chrome/locale/de/torlauncher.properties | 4 +-
src/chrome/locale/dz/network-settings.dtd | 8 ++--
src/chrome/locale/el/network-settings.dtd | 8 ++--
src/chrome/locale/en-GB/network-settings.dtd | 8 ++--
src/chrome/locale/eo/network-settings.dtd | 8 ++--
src/chrome/locale/es-AR/network-settings.dtd | 8 ++--
src/chrome/locale/es-CL/network-settings.dtd | 8 ++--
src/chrome/locale/es-CO/network-settings.dtd | 8 ++--
src/chrome/locale/es-MX/network-settings.dtd | 10 ++---
src/chrome/locale/es-MX/torlauncher.properties | 8 ++--
src/chrome/locale/es/network-settings.dtd | 8 ++--
src/chrome/locale/et/network-settings.dtd | 8 ++--
src/chrome/locale/eu/network-settings.dtd | 8 ++--
src/chrome/locale/fa/network-settings.dtd | 8 ++--
src/chrome/locale/fi/network-settings.dtd | 28 ++++++------
src/chrome/locale/fil/network-settings.dtd | 8 ++--
src/chrome/locale/fo/network-settings.dtd | 8 ++--
src/chrome/locale/fr-CA/network-settings.dtd | 10 ++---
src/chrome/locale/fr-CA/torlauncher.properties | 2 +-
src/chrome/locale/fr/network-settings.dtd | 8 ++--
src/chrome/locale/fur/network-settings.dtd | 8 ++--
src/chrome/locale/fy/network-settings.dtd | 8 ++--
src/chrome/locale/ga/network-settings.dtd | 8 ++--
src/chrome/locale/gl/network-settings.dtd | 8 ++--
src/chrome/locale/gu-IN/network-settings.dtd | 8 ++--
src/chrome/locale/gu/network-settings.dtd | 8 ++--
src/chrome/locale/gun/network-settings.dtd | 8 ++--
src/chrome/locale/ha/network-settings.dtd | 8 ++--
src/chrome/locale/he/network-settings.dtd | 8 ++--
src/chrome/locale/hi/network-settings.dtd | 8 ++--
src/chrome/locale/hr-HR/network-settings.dtd | 39 ++++++++---------
src/chrome/locale/hr-HR/torlauncher.properties | 26 +++++------
src/chrome/locale/hr/network-settings.dtd | 8 ++--
src/chrome/locale/ht/network-settings.dtd | 8 ++--
src/chrome/locale/hu/network-settings.dtd | 8 ++--
src/chrome/locale/hy-AM/network-settings.dtd | 8 ++--
src/chrome/locale/hy/network-settings.dtd | 8 ++--
src/chrome/locale/ia/network-settings.dtd | 8 ++--
src/chrome/locale/id/network-settings.dtd | 32 +++++++-------
src/chrome/locale/is/network-settings.dtd | 8 ++--
src/chrome/locale/it/network-settings.dtd | 8 ++--
src/chrome/locale/ja/network-settings.dtd | 8 ++--
src/chrome/locale/jv/network-settings.dtd | 8 ++--
src/chrome/locale/ka/network-settings.dtd | 8 ++--
src/chrome/locale/kk/network-settings.dtd | 8 ++--
src/chrome/locale/km/network-settings.dtd | 8 ++--
src/chrome/locale/kn/network-settings.dtd | 8 ++--
src/chrome/locale/kn/progress.dtd | 2 +-
src/chrome/locale/ko-KR/network-settings.dtd | 8 ++--
src/chrome/locale/ko/network-settings.dtd | 4 +-
src/chrome/locale/ku/network-settings.dtd | 8 ++--
src/chrome/locale/kw/network-settings.dtd | 8 ++--
src/chrome/locale/ky/network-settings.dtd | 8 ++--
src/chrome/locale/lb/network-settings.dtd | 8 ++--
src/chrome/locale/lg/network-settings.dtd | 8 ++--
src/chrome/locale/ln/network-settings.dtd | 8 ++--
src/chrome/locale/lo/network-settings.dtd | 8 ++--
src/chrome/locale/lo/progress.dtd | 2 +-
src/chrome/locale/lt/network-settings.dtd | 8 ++--
src/chrome/locale/lv/network-settings.dtd | 8 ++--
src/chrome/locale/mg/network-settings.dtd | 8 ++--
src/chrome/locale/mi/network-settings.dtd | 8 ++--
src/chrome/locale/mk/network-settings.dtd | 8 ++--
src/chrome/locale/ml/network-settings.dtd | 8 ++--
src/chrome/locale/mn/network-settings.dtd | 8 ++--
src/chrome/locale/mr/network-settings.dtd | 8 ++--
src/chrome/locale/ms-MY/network-settings.dtd | 8 ++--
src/chrome/locale/mt/network-settings.dtd | 8 ++--
src/chrome/locale/my/network-settings.dtd | 8 ++--
src/chrome/locale/nah/network-settings.dtd | 8 ++--
src/chrome/locale/nap/network-settings.dtd | 8 ++--
src/chrome/locale/nb/network-settings.dtd | 8 ++--
src/chrome/locale/nds/network-settings.dtd | 8 ++--
src/chrome/locale/ne/network-settings.dtd | 8 ++--
src/chrome/locale/nl-BE/network-settings.dtd | 8 ++--
src/chrome/locale/nl/network-settings.dtd | 8 ++--
src/chrome/locale/nn/network-settings.dtd | 8 ++--
src/chrome/locale/nso/network-settings.dtd | 8 ++--
src/chrome/locale/oc/network-settings.dtd | 8 ++--
src/chrome/locale/or/network-settings.dtd | 8 ++--
src/chrome/locale/pa/network-settings.dtd | 8 ++--
src/chrome/locale/pap/network-settings.dtd | 8 ++--
src/chrome/locale/pl/network-settings.dtd | 8 ++--
src/chrome/locale/pms/network-settings.dtd | 8 ++--
src/chrome/locale/ps/network-settings.dtd | 8 ++--
src/chrome/locale/pt-BR/network-settings.dtd | 10 ++---
src/chrome/locale/pt/network-settings.dtd | 46 ++++++++++----------
src/chrome/locale/ro/network-settings.dtd | 8 ++--
src/chrome/locale/ru/network-settings.dtd | 8 ++--
src/chrome/locale/ru/torlauncher.properties | 8 ++--
src/chrome/locale/ru(a)petr1708/network-settings.dtd | 8 ++--
src/chrome/locale/sco/network-settings.dtd | 8 ++--
src/chrome/locale/si-LK/network-settings.dtd | 8 ++--
src/chrome/locale/sk-SK/network-settings.dtd | 8 ++--
src/chrome/locale/sk/network-settings.dtd | 14 +++---
src/chrome/locale/sl-SI/network-settings.dtd | 8 ++--
src/chrome/locale/sl/network-settings.dtd | 8 ++--
src/chrome/locale/sn/network-settings.dtd | 8 ++--
src/chrome/locale/so/network-settings.dtd | 8 ++--
src/chrome/locale/son/network-settings.dtd | 8 ++--
src/chrome/locale/sq/network-settings.dtd | 8 ++--
src/chrome/locale/sr/network-settings.dtd | 8 ++--
src/chrome/locale/sr/torlauncher.properties | 2 +-
src/chrome/locale/sr(a)latin/network-settings.dtd | 8 ++--
src/chrome/locale/st/network-settings.dtd | 8 ++--
src/chrome/locale/su/network-settings.dtd | 8 ++--
src/chrome/locale/sv/network-settings.dtd | 6 +--
src/chrome/locale/sw/network-settings.dtd | 8 ++--
src/chrome/locale/szl/network-settings.dtd | 8 ++--
src/chrome/locale/ta/network-settings.dtd | 8 ++--
src/chrome/locale/ta/progress.dtd | 4 +-
src/chrome/locale/te-IN/network-settings.dtd | 8 ++--
src/chrome/locale/te/network-settings.dtd | 8 ++--
src/chrome/locale/tg/network-settings.dtd | 8 ++--
src/chrome/locale/th/network-settings.dtd | 8 ++--
src/chrome/locale/ti/network-settings.dtd | 8 ++--
src/chrome/locale/tk/network-settings.dtd | 8 ++--
src/chrome/locale/tr/network-settings.dtd | 8 ++--
src/chrome/locale/uk/network-settings.dtd | 8 ++--
src/chrome/locale/ur-PK/network-settings.dtd | 10 ++---
src/chrome/locale/ur-PK/progress.dtd | 2 +-
src/chrome/locale/ur/network-settings.dtd | 8 ++--
src/chrome/locale/uz/network-settings.dtd | 8 ++--
src/chrome/locale/ve/network-settings.dtd | 8 ++--
src/chrome/locale/vi/network-settings.dtd | 8 ++--
src/chrome/locale/wa/network-settings.dtd | 8 ++--
src/chrome/locale/wo/network-settings.dtd | 8 ++--
src/chrome/locale/zh-CN/network-settings.dtd | 8 ++--
src/chrome/locale/zh-HK/network-settings.dtd | 8 ++--
src/chrome/locale/zh-TW/network-settings.dtd | 8 ++--
src/chrome/locale/zu/network-settings.dtd | 8 ++--
src/install.rdf | 2 +-
155 files changed, 681 insertions(+), 684 deletions(-)
diff --git a/src/chrome/locale/ach/network-settings.dtd b/src/chrome/locale/ach/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/ach/network-settings.dtd
+++ b/src/chrome/locale/ach/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/ady/network-settings.dtd b/src/chrome/locale/ady/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/ady/network-settings.dtd
+++ b/src/chrome/locale/ady/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/af/network-settings.dtd b/src/chrome/locale/af/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/af/network-settings.dtd
+++ b/src/chrome/locale/af/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/ak/network-settings.dtd b/src/chrome/locale/ak/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/ak/network-settings.dtd
+++ b/src/chrome/locale/ak/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/am/network-settings.dtd b/src/chrome/locale/am/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/am/network-settings.dtd
+++ b/src/chrome/locale/am/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/ar/network-settings.dtd b/src/chrome/locale/ar/network-settings.dtd
index c307e6c..a4d92b1 100644
--- a/src/chrome/locale/ar/network-settings.dtd
+++ b/src/chrome/locale/ar/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "أي مما يلي يعتبر وصف افضل لموقفك؟">
<!ENTITY torSettings.configurePrompt1 "اتصال هذا الحاسب بالإنترنت محجوب أو له بروكسي.">
-<!ENTITY torSettings.configurePrompt2 "علي تكوين إعدادات الجسر أو بروكسي.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "تكوين">
<!ENTITY torSettings.connectPrompt2 "أود الاتصال مباشرة إلى شبكة تور.">
<!ENTITY torSettings.connectPrompt3 "سيصلح هذا في معظم الحالات.">
<!ENTITY torSettings.connect "اتصل">
-<!ENTITY torSettings.proxyQuestion "هل يحتاج هذا الجهاز إلي بروكسي حتي يصل إلي شبكة الإنترنت؟">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "إذا لم تكن متأكدا من كيفية الإجابة على هذا السؤال، إلقي نظرة على إعدادات الإنترنت في متصفح آخر حتي تتأكد إذا كان يستخدام بروكسي.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "أدخل إعدادات البروكسي.">
<!ENTITY torSettings.bridgeQuestion "هل يقوم مقدم خدمة الإنترنت (ISP) الذي تتعامل معه بحجب الاتصالات بشبكة Tor أو مراقبتها بطريقة أخرى؟">
<!ENTITY torSettings.bridgeHelp "إذا لم تكن متأكدا من إجابة هذا السؤال، قم باختيار لا.   إذا قمت باختيار نعم، فسيطلب منك تكوين جسور Tor والتي هي منافذ ترحيل غير مدرجة تصعب عملية حظر الاتصالات بشبكة Tor.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "اختياري">
-<!ENTITY torsettings.useProxy.checkbox "يحتاج هذا الجهاز إلي استخدام بروكسي للوصل إلي شبكة الإنترنت">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "نوع البروكسي:">
<!ENTITY torsettings.useProxy.address "العنوان:">
<!ENTITY torsettings.useProxy.address.placeholder "عنوان الإنترنت IP أو اسم المضيف">
diff --git a/src/chrome/locale/arn/network-settings.dtd b/src/chrome/locale/arn/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/arn/network-settings.dtd
+++ b/src/chrome/locale/arn/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/ast/network-settings.dtd b/src/chrome/locale/ast/network-settings.dtd
index a97dd47..48aa53c 100644
--- a/src/chrome/locale/ast/network-settings.dtd
+++ b/src/chrome/locale/ast/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/az/network-settings.dtd b/src/chrome/locale/az/network-settings.dtd
index 356db72..12b8d4b 100644
--- a/src/chrome/locale/az/network-settings.dtd
+++ b/src/chrome/locale/az/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Aşağıdakılardan hansı sizin vəziyyətinizi tam təsvir edir?">
<!ENTITY torSettings.configurePrompt1 "Bu kompüterin internet şəbəkəsi senzorlu vəya proksilidir.">
-<!ENTITY torSettings.configurePrompt2 "Mən proksi və ya körpü quraşdırmalıyam.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Quraşdır">
<!ENTITY torSettings.connectPrompt2 "Mən birbaşa Tor şəbəkəsinə qoşulmaq istəyirəm.">
<!ENTITY torSettings.connectPrompt3 "Bu əksər hallarda işləyir.">
<!ENTITY torSettings.connect "Qoşul">
-<!ENTITY torSettings.proxyQuestion "Bu kompüterin İnernetə qoşulmaq üçün proksiyə ehtiyacı var?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Əgər siz bu suala nə cavab verəcəyinizə əmin deyilsinizsə, proksinin necə konfiqurasiya edildiyini öyrənmək üçün başqa bir brauzerin parametrlərinə nəzər salın ">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Proksy parametrlərini daxil edin">
<!ENTITY torSettings.bridgeQuestion "Sizin internet provayderiniz(İSP) Tor şəbəkəsinə hər-hansı qadağa qoyub?">
<!ENTITY torSettings.bridgeHelp "Əgər bu saula nə cavab verəcəyinizi bilirsinizsə Xeyr seçin.No. 
@@ -31,7 +31,7 @@
<!ENTITY torsettings.optional "Əlavə">
-<!ENTITY torsettings.useProxy.checkbox "Bu kompüte İnternetə qoşulmaq üçün proksi istifadə etməlidir">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Tipi:">
<!ENTITY torsettings.useProxy.address "Ünvan:">
<!ENTITY torsettings.useProxy.address.placeholder "İP ünvanı və ya anakompüterin adı">
diff --git a/src/chrome/locale/be/network-settings.dtd b/src/chrome/locale/be/network-settings.dtd
index 352d7c9..edf6ef9 100644
--- a/src/chrome/locale/be/network-settings.dtd
+++ b/src/chrome/locale/be/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/bg/network-settings.dtd b/src/chrome/locale/bg/network-settings.dtd
index ebd1fbc..56f17d4 100644
--- a/src/chrome/locale/bg/network-settings.dtd
+++ b/src/chrome/locale/bg/network-settings.dtd
@@ -8,20 +8,20 @@
<!ENTITY torSettings.no "Не">
<!ENTITY torSettings.firstQuestion "Кое от следните описва най-добре вашата ситуация?">
-<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt1 "Интернет връзката на този компютър е цензурирана или минава през proxy сървър.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Конфигурирай">
<!ENTITY torSettings.connectPrompt2 "Бих искал да се свържа директно към Tor мрежата.">
<!ENTITY torSettings.connectPrompt3 "Това ще работи при повечето ситуации.">
<!ENTITY torSettings.connect "Свържи се">
-<!ENTITY torSettings.proxyQuestion "Нуждае ли се този компютър от прокси за свързване към Интернет?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Ако не сте сигурни как да отговорите на този въпрос проверете интернет настройките на друг браузър,за да видите дали е настроен да използва прокси.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Въведете настройките за прокси.">
<!ENTITY torSettings.bridgeQuestion "Блокирани или цензурирани ли са връзките към Tor Мрежата от вашият Интернет Доставчик(ISP)?">
-<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
-<!ENTITY torSettings.bridgeSettingsPrompt "You may use the provided set of bridges or you may obtain and enter a custom set of bridges.">
+<!ENTITY torSettings.bridgeHelp "Ако не сте сигурни как да отговорите на този въпрос, изберете No.  Ако изберете Yes, вие ще бъдете помолен да конфигурирате Tor Bridges, непубликувани relays които правят блокирането на връзката към Tor Network по трудна.">
+<!ENTITY torSettings.bridgeSettingsPrompt "Вие може да използвате предложените комплекти от bridges или може да изисквате персонализиран комплект от тях.">
<!-- Other: -->
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Допълнителен">
-<!ENTITY torsettings.useProxy.checkbox "Този компютър се нуждае от прокси за да се свърже към Интернет.">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Прокси Тип:">
<!ENTITY torsettings.useProxy.address "Адрес:">
<!ENTITY torsettings.useProxy.address.placeholder "IP адрес или хост">
@@ -43,20 +43,20 @@
<!ENTITY torsettings.firewall.checkbox "Този компютър се свързва през firewall,който позволява връзки само към определени портове.">
<!ENTITY torsettings.firewall.allowedPorts "Позволени портове:">
<!ENTITY torsettings.useBridges.checkbox "Моят Интернет Доставчик (ISP) блокира връзките към Tor мрежата">
-<!ENTITY torsettings.useBridges.default "Connect with provided bridges">
-<!ENTITY torsettings.useBridges.type "Transport type:">
-<!ENTITY torsettings.useBridges.custom "Enter custom bridges">
-<!ENTITY torsettings.useBridges.label "Enter one or more bridge relays (one per line).">
+<!ENTITY torsettings.useBridges.default "Свържи се с предоставените bridges">
+<!ENTITY torsettings.useBridges.type "Тип транспортиране:">
+<!ENTITY torsettings.useBridges.custom "Въведи персонални bridges">
+<!ENTITY torsettings.useBridges.label "Въведи един или повече bridge relays (по един на линия).">
<!ENTITY torsettings.useBridges.placeholder "въведете адрес:порт">
<!ENTITY torsettings.copyLog "Копирай Tor лога в клипборда">
-<!ENTITY torsettings.bridgeHelpTitle "Bridge Relay Help">
-<!ENTITY torsettings.bridgeHelp1 "If you are unable to connect to the Tor network, it could be that your Internet Service Provider (ISP) or another agency is blocking Tor.  Often, you can work around this problem by using Tor Bridges, which are unlisted relays that are more difficult to block.">
-<!ENTITY torsettings.bridgeHelp1B "You may use the preconfigured, provided set of bridge addresses or you may obtain a custom set of addresses by using one of these three methods:">
+<!ENTITY torsettings.bridgeHelpTitle "Bridge Relay помощ">
+<!ENTITY torsettings.bridgeHelp1 "Ако не може да се свържете към Tor network, причината може да бъде във вашия Интернет доставчик (ISP) или определена агенция интернет наблюдение блокира Tor.  Често, вие може да заобиколите този проблем с използване на Tor Bridges, които са непубликувани relays и са много по трудни за блокиране.">
+<!ENTITY torsettings.bridgeHelp1B "Вие може да използвате пре-конфигурирани, предоставени комплекти от bridge адреси или може да изисквате собствен персонализиран комплект от адреси като използвате един от следните три метода:">
<!ENTITY torsettings.bridgeHelp2Heading "През Web">
<!ENTITY torsettings.bridgeHelp2 "Използвайте уеб браузър за да посетите https://bridges.torproject.org">
-<!ENTITY torsettings.bridgeHelp3Heading "Through the Email Autoresponder">
-<!ENTITY torsettings.bridgeHelp3.emailDesc "Send email to bridges(a)torproject.org with the line 'get bridges' by itself in the body of the message.  However, to make it harder for an attacker to learn a lot of bridge addresses, you must send this request from one of the following email providers (listed in order of preference):">
-<!ENTITY torsettings.bridgeHelp3.emailList "https://www.riseup.net, https://mail.google.com, or https://mail.yahoo.com">
-<!ENTITY torsettings.bridgeHelp4Heading "Through the Help Desk">
-<!ENTITY torsettings.bridgeHelp4 "As a last resort, you can request bridge addresses by sending a polite email message to help(a)rt.torproject.org.  Please note that a person will need to respond to each request.">
+<!ENTITY torsettings.bridgeHelp3Heading "През автоматично отговарящия у-мейл">
+<!ENTITY torsettings.bridgeHelp3.emailDesc "Пратете и-мейл до bridges(a)torproject.org с ред 'get bridges' в съдържанието на съобщението.  Така или иначе за да направите по трудно за атакуващия да научи повече от bridge адреса, вие трябва да пратите молба от един от следните и-мейл доставчици (подредени по реда на предпочитания):">
+<!ENTITY torsettings.bridgeHelp3.emailList "https://www.riseup.net, https://mail.google.com, или https://mail.yahoo.com">
+<!ENTITY torsettings.bridgeHelp4Heading "През Help Desk">
+<!ENTITY torsettings.bridgeHelp4 "Като последна стъпка, вие може да изисквате адреси чрез пращане на учтив и-мейл до help(a)rt.torproject.org.  Моля обърнете внимание, че на всяка молба за bridge се отговаря персонално.">
diff --git a/src/chrome/locale/bn-IN/network-settings.dtd b/src/chrome/locale/bn-IN/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/bn-IN/network-settings.dtd
+++ b/src/chrome/locale/bn-IN/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/bn/network-settings.dtd b/src/chrome/locale/bn/network-settings.dtd
index 3e6b70c..e8ccb67 100644
--- a/src/chrome/locale/bn/network-settings.dtd
+++ b/src/chrome/locale/bn/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/bo/network-settings.dtd b/src/chrome/locale/bo/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/bo/network-settings.dtd
+++ b/src/chrome/locale/bo/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/br/network-settings.dtd b/src/chrome/locale/br/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/br/network-settings.dtd
+++ b/src/chrome/locale/br/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/bs/network-settings.dtd b/src/chrome/locale/bs/network-settings.dtd
index 8f9ec4d..439c213 100644
--- a/src/chrome/locale/bs/network-settings.dtd
+++ b/src/chrome/locale/bs/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/ca/network-settings.dtd b/src/chrome/locale/ca/network-settings.dtd
index 0d8fea2..15025b4 100644
--- a/src/chrome/locale/ca/network-settings.dtd
+++ b/src/chrome/locale/ca/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Quina de les següuens descriula teva situació?">
<!ENTITY torSettings.configurePrompt1 "La connexió a internet d'aquest ordinador està censurada o configurada amb un proxy. ">
-<!ENTITY torSettings.configurePrompt2 "Necessito configurar ajustos de pont o de proxy">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configura">
<!ENTITY torSettings.connectPrompt2 "M'agradaria conectar-me directament a la xarxa Tor.">
<!ENTITY torSettings.connectPrompt3 "Això funciona en la majoria dels casos.">
<!ENTITY torSettings.connect "Conectar">
-<!ENTITY torSettings.proxyQuestion "Necessita aquest ordinador usar un proxy per accedir a internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Si no estas segur de com respondre a aquesta pregunta, observa els paràmetres d'Internet en un altre navegador per veure si està configurat per utilitzar un proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Introdueix les opcions del proxy.">
<!ENTITY torSettings.bridgeQuestion "El vostre proveïdor d'Internet (ISP) bloqueja o censura les connexions a la Xarxa Tor?">
<!ENTITY torSettings.bridgeHelp "Si no esteu segurs de com respondre a aquesta pregunta, escolliu No.  Si escolliu Sí, se us demanarà que configureu Ponts Tor, que són relés no llistats que fan més dificil de bloquejar les connexions a la Xarxa Tor">
@@ -31,7 +31,7 @@
<!ENTITY torsettings.optional "Opcional
">
-<!ENTITY torsettings.useProxy.checkbox "Aquest ordinador ha de fer servir un proxy per accedir a Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Tipus de Proxy:">
<!ENTITY torsettings.useProxy.address "Adreça:">
<!ENTITY torsettings.useProxy.address.placeholder "Direcció IP o nom del host">
diff --git a/src/chrome/locale/cs/network-settings.dtd b/src/chrome/locale/cs/network-settings.dtd
index 86edf65..ad8842d 100644
--- a/src/chrome/locale/cs/network-settings.dtd
+++ b/src/chrome/locale/cs/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Která možnost nejlépe popisuje Vaši situaci?">
<!ENTITY torSettings.configurePrompt1 "Připojení k internetu u tohoto pořítače je cenzorováno nebo proxováno.">
-<!ENTITY torSettings.configurePrompt2 "Potřebuji nakonfigurovat mosty nebo nastavení proxy.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Konfigurovat">
<!ENTITY torSettings.connectPrompt2 "Chtěl bych se přímo připojit k Tor síti.">
<!ENTITY torSettings.connectPrompt3 "Toto bude fungovat ve většině případů.">
<!ENTITY torSettings.connect "Připojit">
-<!ENTITY torSettings.proxyQuestion "Potřebuje Váš počítač připojení k internetu přes proxy?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Jestli nevíte jak odpovědět na tuto otázku, podívejte se na internetové nastavení v jiném prohlížeči, aby jste zjistili, zda je nakonfigurován k použití proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Zadejte nastavení serveru proxy.">
<!ENTITY torSettings.bridgeQuestion "Blokuje nebo jinak cenzuruje váš poskytovatel internetového připojení (ISP) spojení se sítí TORu?">
<!ENTITY torSettings.bridgeHelp "Pokud si nejste jistí jak odpovědět na tuto otázku, zvolte No.  Pokud vyberete Ano, budete vyzváni k nastavení Mostů TORu, což jsou přenašeče neuvedené v seznamu, které dělají blokování spojení se sítí TORu složitější.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Volitelný">
-<!ENTITY torsettings.useProxy.checkbox "Tento počítač musí používat server proxy pro přístup k Internetu">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Typ Proxy:">
<!ENTITY torsettings.useProxy.address "Adresa:">
<!ENTITY torsettings.useProxy.address.placeholder "IP adresa nebo jméno hosta">
diff --git a/src/chrome/locale/csb/network-settings.dtd b/src/chrome/locale/csb/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/csb/network-settings.dtd
+++ b/src/chrome/locale/csb/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/cv/network-settings.dtd b/src/chrome/locale/cv/network-settings.dtd
index c8a555d..37c1d3d 100644
--- a/src/chrome/locale/cv/network-settings.dtd
+++ b/src/chrome/locale/cv/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Çыхăнтар">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Прокси:">
<!ENTITY torsettings.useProxy.address "Адрĕс:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/cy/network-settings.dtd b/src/chrome/locale/cy/network-settings.dtd
index 541f1cd..6cd3362 100644
--- a/src/chrome/locale/cy/network-settings.dtd
+++ b/src/chrome/locale/cy/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Pa un o'r canlynol sy'n disgrifio'ch sefyllfa orau?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Ffurfweddu">
<!ENTITY torSettings.connectPrompt2 "Hoffwn gysylltu'n uniongyrchol â rhwydwaith Tor.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Cysylltu">
-<!ENTITY torSettings.proxyQuestion "A oes y cyfrifiadur hwn angen ddirprwy i gyrchu'r Rhyngrwyd?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Rhowch osodiadau'r dirprwy.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Dewisiol">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Math Dirprwy:">
<!ENTITY torsettings.useProxy.address "Cyfeiriad:">
<!ENTITY torsettings.useProxy.address.placeholder "Cyfeiriad IP neu enw gwesteiwr">
diff --git a/src/chrome/locale/da/network-settings.dtd b/src/chrome/locale/da/network-settings.dtd
index 0ca0980..b7ca021 100644
--- a/src/chrome/locale/da/network-settings.dtd
+++ b/src/chrome/locale/da/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Hvilke af de følgende beskriver bedst din situation?">
<!ENTITY torSettings.configurePrompt1 "Denne computers internetforbindelse er censureret eller er etableret gennem en proxy.">
-<!ENTITY torSettings.configurePrompt2 "Jeg skal konfigurere bro- eller proxy-indstillinger.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Indstil">
<!ENTITY torSettings.connectPrompt2 "Jeg vil forbinde direkte til Tor netværket.">
<!ENTITY torSettings.connectPrompt3 "Dette vil virker i de fleste situationer">
<!ENTITY torSettings.connect "Tilslut">
-<!ENTITY torSettings.proxyQuestion "Skal denne computer bruge en proxy for at forbinde til internettet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Hvis du ikke kender svaret på dette spørgsmål, så kig på internetindstillingerne i en anden browser for at se om den er konfigureret til at bruge en proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Indtast proxy-indstillinger.">
<!ENTITY torSettings.bridgeQuestion "Blokerer eller censurerer din internetudbyder (ISP) forbindelser til Tor netværket?">
<!ENTITY torSettings.bridgeHelp "Hvis du er usikker på svaret til dette spørgsmål, vælg No.  Hvis du vælger Ja, vil du blive bedt om at konfigurere Tor Broer, der er ulistede relays, som gør det sværere at blokere forbindelser til Tor Netværket.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Valgfri">
-<!ENTITY torsettings.useProxy.checkbox "Denne computer skal bruge en proxy for at forbinde til internettet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy type:">
<!ENTITY torsettings.useProxy.address "Adresse:">
<!ENTITY torsettings.useProxy.address.placeholder "IP adresse eller værtsnavn">
diff --git a/src/chrome/locale/de/network-settings.dtd b/src/chrome/locale/de/network-settings.dtd
index 2ccb333..5562b20 100644
--- a/src/chrome/locale/de/network-settings.dtd
+++ b/src/chrome/locale/de/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Was beschreibt Ihre Situation am besten?">
<!ENTITY torSettings.configurePrompt1 "Die Internetverbindung dieses Rechner ist zensiert oder vermittelt.">
-<!ENTITY torSettings.configurePrompt2 "Ich muss die Brücken- und Vermittlungsservereinstellungen konfigurieren.">
+<!ENTITY torSettings.configurePrompt2 "Ich muss Bridge- oder lokale Proxy-Einstellungen konfigurieren">
<!ENTITY torSettings.configure "Konfigurieren">
<!ENTITY torSettings.connectPrompt2 "Ich würde gerne direkt eine Verbindung zum Tor-Netzwerk herstellen.">
<!ENTITY torSettings.connectPrompt3 "Das wird in den meisten Situationen funktionieren.">
<!ENTITY torSettings.connect "Verbinden">
-<!ENTITY torSettings.proxyQuestion "Benötigt dieser Rechner einen Vermittlungsserver um eine Verbindung zum Internet herzustellen?">
+<!ENTITY torSettings.proxyQuestion "Benötigt dieser Rechner einen lokalen Proxy um auf das Internet zuzugreifen?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Wenn Sie sich nicht sicher sind, dann schauen Sie in die Einstellungen ihres normalen Browsers ob dort ein Vermittlungsserver eingerichtet ist.">
+<!ENTITY torSettings.proxyHelp "Wenn Sie unsicher sind, schauen Sie in den Internet-Einstellungen in einem andern Browser nach, um zu erkennen ob ein lokaler Proxy konfiguriert ist.">
<!ENTITY torSettings.enterProxy "Vermittlungseinstellungen eingeben.">
<!ENTITY torSettings.bridgeQuestion "Blockiert oder zensiert Ihr Internetdienstanbieter (ISP) Verbindungen zum Tor-Netzwerk?">
<!ENTITY torSettings.bridgeHelp "Wenn Sie sich nicht sicher sind, wie Sie diese Frage beantworten sollen, wählen Sie Nr.  Wenn Sie Ja wählen, werden Sie aufgefordert, die Torbrücken zu konfigurieren. Die nicht aufgeführte Relais sind, was es schwieriger macht, Verbindungen zum Tor-Netzwerk zu blockieren.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "Dieser Rechner benötigt einen Vermittlungsserver, um sich mit dem Internet zu verbinden">
+<!ENTITY torsettings.useProxy.checkbox "Dieser Rechner benötigt einen lokalen Proxy um auf das Internet zuzugreifen">
<!ENTITY torsettings.useProxy.type "Vermittlungstyp:">
<!ENTITY torsettings.useProxy.address "Adresse:">
<!ENTITY torsettings.useProxy.address.placeholder "IP-Adresse oder Rechnername">
diff --git a/src/chrome/locale/de/torlauncher.properties b/src/chrome/locale/de/torlauncher.properties
index 5a24e5d..0da42da 100644
--- a/src/chrome/locale/de/torlauncher.properties
+++ b/src/chrome/locale/de/torlauncher.properties
@@ -46,9 +46,9 @@ torlauncher.bootstrapStatus.loading_status=Netzwerkstatus wird geladen
torlauncher.bootstrapStatus.loading_keys=Autorisierungszertifikate werden geladen
torlauncher.bootstrapStatus.requesting_descriptors=Relaisinformationen werden angefordert
torlauncher.bootstrapStatus.loading_descriptors=Relaisinformationen werden geladen
-torlauncher.bootstrapStatus.conn_or=Zum Tor-Netzwerk wird verbinden
+torlauncher.bootstrapStatus.conn_or=Zum Tor-Netzwerk wird verbunden
torlauncher.bootstrapStatus.handshake_or=Tor-Verbindung wird hergestellt
-torlauncher.bootstrapStatus.done=Zum Tor-Netzwerk wird verbunden!
+torlauncher.bootstrapStatus.done=Zum Tor-Netzwerk wurde verbunden!
torlauncher.bootstrapWarning.done=abgeschlossen
torlauncher.bootstrapWarning.connectrefused=Verbindung verweigert
diff --git a/src/chrome/locale/dz/network-settings.dtd b/src/chrome/locale/dz/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/dz/network-settings.dtd
+++ b/src/chrome/locale/dz/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/el/network-settings.dtd b/src/chrome/locale/el/network-settings.dtd
index 5393cb2..7a5aca2 100644
--- a/src/chrome/locale/el/network-settings.dtd
+++ b/src/chrome/locale/el/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Ποιο από τα παρακάτω περιγράφει καλύτερα την κατάστασή σας;">
<!ENTITY torSettings.configurePrompt1 "Σύνδεση στο Internet αυτού του υπολογιστή λογοκρίνεται ή προσεγγίζεται">
-<!ENTITY torSettings.configurePrompt2 "Χρειάζονται ρυθμίσεις για τις γέφυρες, για το firewall, ή για τον proxy μου.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Ρύθμιση ">
<!ENTITY torSettings.connectPrompt2 "Θα ήθελα να συνδεθεί άμεσα με το δίκτυο Tor.">
<!ENTITY torSettings.connectPrompt3 "Αυτό θα λειτουργήσει στις περισσότερες περιπτώσεις.">
<!ENTITY torSettings.connect "Σύνδεση">
-<!ENTITY torSettings.proxyQuestion "Μήπως αυτός ο υπολογιστής πρέπει να χρησιμοποιήση έναν διακομιστή μεσολάβησης για πρόσβαση στο Διαδίκτυο;">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Εάν δεν είστε βέβαιοι πώς να απαντήσετε στο ερώτημα αυτό, δείτε τις ρυθμίσεις διαδικτυου σε άλλο φυλλομετρητή για να δείτε αν έχει ρυθμιστεί να χρησιμοποιεί διακομιστή μεσολάβησης.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Εισάγωγη των ρυθμίσεων διακομιστή μεσολάβησης.">
<!ENTITY torSettings.bridgeQuestion "Γνωρίζετε αν ο πάροχος (ISP) σας μπλοκάρει ή με οποιοδήποτε τρόπο ελέγχει συνδέσεις
στο δίκτυο Tor?">
@@ -31,7 +31,7 @@
<!ENTITY torsettings.optional "Προεραιτικα">
-<!ENTITY torsettings.useProxy.checkbox "Αυτός ο υπολογιστής θα πρέπει να χρησιμοποιήση έναν διακομιστή μεσολάβησης για πρόσβαση στο διαδικτυο">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Τύπος διακομιστή μεσολάβησης:">
<!ENTITY torsettings.useProxy.address "Διεύθυνση:">
<!ENTITY torsettings.useProxy.address.placeholder "Διεύθυνση ΙΡ η όνομα υπολογιστή ">
diff --git a/src/chrome/locale/en-GB/network-settings.dtd b/src/chrome/locale/en-GB/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/en-GB/network-settings.dtd
+++ b/src/chrome/locale/en-GB/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/eo/network-settings.dtd b/src/chrome/locale/eo/network-settings.dtd
index de02431..11da817 100644
--- a/src/chrome/locale/eo/network-settings.dtd
+++ b/src/chrome/locale/eo/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Konekti">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Adreso:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/es-AR/network-settings.dtd b/src/chrome/locale/es-AR/network-settings.dtd
index d398aa6..6c8290a 100644
--- a/src/chrome/locale/es-AR/network-settings.dtd
+++ b/src/chrome/locale/es-AR/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "¿Cuál de las siguientes opciones describe mejor su situación?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configurar">
<!ENTITY torSettings.connectPrompt2 "Me gustaría conectar directamente a la red Tor.">
<!ENTITY torSettings.connectPrompt3 "Esto debería funcionar en la mayoría de situaciones.">
<!ENTITY torSettings.connect "Conectar">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Opcional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Dirección:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/es-CL/network-settings.dtd b/src/chrome/locale/es-CL/network-settings.dtd
index b1daa5b..a03c321 100644
--- a/src/chrome/locale/es-CL/network-settings.dtd
+++ b/src/chrome/locale/es-CL/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/es-CO/network-settings.dtd b/src/chrome/locale/es-CO/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/es-CO/network-settings.dtd
+++ b/src/chrome/locale/es-CO/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/es-MX/network-settings.dtd b/src/chrome/locale/es-MX/network-settings.dtd
index f6960ea..723d88c 100644
--- a/src/chrome/locale/es-MX/network-settings.dtd
+++ b/src/chrome/locale/es-MX/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Conectar">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -26,11 +26,11 @@
<!-- Other: -->
<!ENTITY torsettings.startingTor "Waiting for Tor to start…">
-<!ENTITY torsettings.restartTor "Restart Tor">
+<!ENTITY torsettings.restartTor "Reiniciar Tor">
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/es-MX/torlauncher.properties b/src/chrome/locale/es-MX/torlauncher.properties
index 964c3b6..77aa158 100644
--- a/src/chrome/locale/es-MX/torlauncher.properties
+++ b/src/chrome/locale/es-MX/torlauncher.properties
@@ -3,8 +3,8 @@
torlauncher.error_title=Lanzador Tor
-torlauncher.tor_exited=Tor unexpectedly exited. This might be due to a bug in Tor itself, another program on your system, or faulty hardware. Until you restart Tor, the Tor Browser will not able to reach any websites. If the problem persists, please send a copy of your Tor Log to the support team.
-torlauncher.tor_exited2=Restarting Tor will not close your browser tabs.
+torlauncher.tor_exited=Tor cerró de manera inesperada. Esto puede deberse a un bug en el mismo Tor, otro programa en su sistema, o algún error de hardware. Hasta que reinicie Tor, el navegador Tor Browser no podrá acceder a ningún sitio web. Si el problema persiste, por favor mande una copia de su registro Tor al equipo de soporte.
+torlauncher.tor_exited2=Reiniciar Tor no cerrará las pestañas de su navegador.
torlauncher.tor_controlconn_failed=No se pudo conectar con el puerto de control Tor
torlauncher.tor_failed_to_start=Tor falló al iniciar.
torlauncher.tor_control_failed=Falló al tomar control de Tor.
@@ -30,14 +30,14 @@ torlauncher.error_bridge_bad_default_type=Ningún puente proporcionado que tenga
torlauncher.recommended_bridge=(recomendado)
torlauncher.connect=Conectar
-torlauncher.restart_tor=Restart Tor
+torlauncher.restart_tor=Reiniciar Tor
torlauncher.quit=Abandonar
torlauncher.quit_win=Salir
torlauncher.done=Hecho
torlauncher.forAssistance=Si necesitas ayuda, contacta a %S
-torlauncher.copiedNLogMessages=Copy complete. %S Tor log messages are ready to be pasted into a text editor or an email message.
+torlauncher.copiedNLogMessages=Copia completa. %S mensajes del registro de Tor están listos para ser pegados en un editor de texto o mensaje de correo electrónico.
torlauncher.bootstrapStatus.conn_dir=Conectando a un directorio de retransmisión
torlauncher.bootstrapStatus.handshake_dir=Estableciendo conexión con un directorio encriptado.
diff --git a/src/chrome/locale/es/network-settings.dtd b/src/chrome/locale/es/network-settings.dtd
index 73b9f80..246fe19 100644
--- a/src/chrome/locale/es/network-settings.dtd
+++ b/src/chrome/locale/es/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "¿Cuál de las siguientes describe mejor su situación?">
<!ENTITY torSettings.configurePrompt1 "La conexión a Internet de este equipo está censurada o proxyficada.">
-<!ENTITY torSettings.configurePrompt2 "Tengo que ajustar las configuraciones de puente ('bridge') o proxy.">
+<!ENTITY torSettings.configurePrompt2 "Necesito ajustar la configuración de repetidor puente (bridge) o de proxy local.">
<!ENTITY torSettings.configure "Configurar">
<!ENTITY torSettings.connectPrompt2 "Me gustaría conectar directamente a la red Tor.">
<!ENTITY torSettings.connectPrompt3 "Esto funcionará en la mayoría de las situaciones.">
<!ENTITY torSettings.connect "Conectar">
-<!ENTITY torSettings.proxyQuestion "¿Necesita esta computadora usar un proxy para acceder a Internet?">
+<!ENTITY torSettings.proxyQuestion "¿Necesita mi computadora utilizar un proxy local para acceder a Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Si no está seguro de cómo responder a esta pregunta, eche un vistazo a las configuraciones de Internet en otro navegador para ver si está configurado para usar un proxy.">
+<!ENTITY torSettings.proxyHelp "Si no está seguro de cómo responder a esta pregunta, mire la configuración de Internet en otro navegador para ver si está configurado para utilizar un proxy (interpuesto) local.">
<!ENTITY torSettings.enterProxy "Introduzca los ajustes del proxy.">
<!ENTITY torSettings.bridgeQuestion "Su proveedor de servicios de Internet (ISP) bloquea o censura de alguna forma las conexiones hacia la red Tor?">
<!ENTITY torSettings.bridgeHelp "Si no está seguro como responder a esta pregunta, elija No.  Si usted elige Sí, se le pedirá configurar puentes Tor, los cuales son repetidores no listados que hacen más difícil el bloqueo de conexiones hacia la red Tor.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Opcional">
-<!ENTITY torsettings.useProxy.checkbox "Esta computadora necesita usar usar un proxy de acceso a Internet">
+<!ENTITY torsettings.useProxy.checkbox "Esta computadora necesita utilizar un proxy local para acceder a Internet">
<!ENTITY torsettings.useProxy.type "Tipo de proxy:">
<!ENTITY torsettings.useProxy.address "Dirección:">
<!ENTITY torsettings.useProxy.address.placeholder "Dirección IP o nombre de máquina ('hostname')">
diff --git a/src/chrome/locale/et/network-settings.dtd b/src/chrome/locale/et/network-settings.dtd
index 15fa9d4..e409a7e 100644
--- a/src/chrome/locale/et/network-settings.dtd
+++ b/src/chrome/locale/et/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/eu/network-settings.dtd b/src/chrome/locale/eu/network-settings.dtd
index aab8b06..c6da9ae 100644
--- a/src/chrome/locale/eu/network-settings.dtd
+++ b/src/chrome/locale/eu/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Hurrengoetako zeinek deskribatzen du zure egoera hobekien?">
<!ENTITY torSettings.configurePrompt1 "Ordenagailu honen Interneteko konexioa zentsuratuta dago edo proxy batetik igarotzen da.">
-<!ENTITY torSettings.configurePrompt2 "Zubi edo proxy ezarpenak konfiguratu behar ditut.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Konfiguratu">
<!ENTITY torSettings.connectPrompt2 "Tor sarera zuzenean konektatu nahiko nuke.">
<!ENTITY torSettings.connectPrompt3 "Hau egoera gehienetan funtzionatuko du.">
<!ENTITY torSettings.connect "Konektatu">
-<!ENTITY torSettings.proxyQuestion "Ordenagailu honek Internetera sartzeko proxyren bat erabili behar al du?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Galdera hau nola erantzuteaz zalantzan bazaude, begiratu beste nabigatzaile batean Interneteko ezarpenak proxy bat erabiltzeko konfiguratuta dagoen ikusteko.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Sartu proxy ezarpenak.">
<!ENTITY torSettings.bridgeQuestion "Zure Interneteko Zerbitzu Hornitzaileak (ISP ingeleraz) Tor sarera doazen konexioak blokeatu edo zentsuratu egiten ditu?">
<!ENTITY torSettings.bridgeHelp "Galdera hau nola erantzuteaz ziur ez bazaude, aukeratu Ez.  Bai aukeratzen baduzu, Tor zubiak konfigura ditzazun eskatuko zaizu, hau da zerrendatuta ez dauden eta Tor sarera doazen konexioak blokeatzea zailago egiten duten erreleak.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Hautazkoa">
-<!ENTITY torsettings.useProxy.checkbox "Ordenagailu honek proxy bat erabili behar du Internetera sartzeko">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy mota:">
<!ENTITY torsettings.useProxy.address "Helbidea:">
<!ENTITY torsettings.useProxy.address.placeholder "IP helbide edo ostalari izena">
diff --git a/src/chrome/locale/fa/network-settings.dtd b/src/chrome/locale/fa/network-settings.dtd
index f42720d..659eb3e 100644
--- a/src/chrome/locale/fa/network-settings.dtd
+++ b/src/chrome/locale/fa/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "کدام یک از موارد زیر وضعیت شما را بهتر بیان میکند؟">
<!ENTITY torSettings.configurePrompt1 "اتصال به اینترنت این کامپیوتر یا فیلترینگ شدید دارد و یا پراکسی دارد.">
-<!ENTITY torSettings.configurePrompt2 "من نیاز به پیکربندی پل و یا تنظیمات پروکسی دارم.">
+<!ENTITY torSettings.configurePrompt2 "من نیاز به پیکربندی پل و یا تنظیمات پروکسی محلی دارم.">
<!ENTITY torSettings.configure "پیکربندی">
<!ENTITY torSettings.connectPrompt2 "تمایل دارم مستقیما به شبکهی تور متصل شوم.">
<!ENTITY torSettings.connectPrompt3 "این در بیشتر مواقع کار خواهد کرد.">
<!ENTITY torSettings.connect "اتصال">
-<!ENTITY torSettings.proxyQuestion "آیا این رایانه برای اتصال به اینترنت نیاز به استفاده از پراکسی دارد؟">
+<!ENTITY torSettings.proxyQuestion "آیا این کامپیوتر نیاز به استفاده از یک پروکسی محلی برای دسترسی به اینترنت دارد؟">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "اگر مطمئن نیستید چطور به این سوال پاسخ دهید، به تنظیمات سایر مرورگرهای خود نگاهی بیاندازید تا متوجه شوید که آیا باید یک پروکسی استفاده شود یا خیر.">
+<!ENTITY torSettings.proxyHelp "اگر شما مطمئن نیستید که چگونه به این سوال پاسخ دهید، به تنظیمات سایر مرورگرهای خود نگاهی بیاندازید تا متوجه شوید که آیا باید یک پروکسی محلی استفاده شود؟">
<!ENTITY torSettings.enterProxy "تنظیمات پراکسی را وارد کنید.">
<!ENTITY torSettings.bridgeQuestion "آیا شرکتی که از آن اینترنت گرفته اید (ISP)، دسترسی به شبکه تور را فیلتر، سانسور و یا مسدود می کند؟">
<!ENTITY torSettings.bridgeHelp "اگر مطمئن نیستید چطور به این سوال پاسخ دهید، «نه» یا انتخاب کنید.  اگر «بله» را انتخاب کنید، می بایست تنظیمات مربوط به «پل های» تور را انجام دهید. پل ها مسیرهای دور زدن فیلتر هستند که لیست مشخصی از آن ها وجود ندارد و فیلتر کردن آن ها بسیار مشکل است.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "اختیاری">
-<!ENTITY torsettings.useProxy.checkbox "این رایانه برای اتصال به اینترنت نیاز به استفاده از پراکسی دارد.">
+<!ENTITY torsettings.useProxy.checkbox "این کامپیوتر نیاز به استفاده از یک پروکسی محلی برای دسترسی به اینترنت دارد">
<!ENTITY torsettings.useProxy.type "نوع پراکسی:">
<!ENTITY torsettings.useProxy.address "آدرس:">
<!ENTITY torsettings.useProxy.address.placeholder "آدرس آیپی یا نام میزبان">
diff --git a/src/chrome/locale/fi/network-settings.dtd b/src/chrome/locale/fi/network-settings.dtd
index 071bc91..92d2dfe 100644
--- a/src/chrome/locale/fi/network-settings.dtd
+++ b/src/chrome/locale/fi/network-settings.dtd
@@ -8,20 +8,20 @@
<!ENTITY torSettings.no "Ei">
<!ENTITY torSettings.firstQuestion "Mikä seuraavista kuvailee parhaiten tilannettasi?">
-<!ENTITY torSettings.configurePrompt1 "Tämän tietokoneen internet-yhteys on sensuroitu, suodatettu tai kulkee välityspalvelimen kautta.">
-<!ENTITY torSettings.configurePrompt2 "Minun täytyy määrittää silta-, palomuuri- tai välityspalvelinasetuksia.">
+<!ENTITY torSettings.configurePrompt1 "Tämän tietokoneen internet-yhteys on sensuroitu tai kulkee välityspalvelimen kautta.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Määritä">
<!ENTITY torSettings.connectPrompt2 "Haluan yhdistää suoraan Tor-verkkoon.">
<!ENTITY torSettings.connectPrompt3 "Tämä toimii useimmissa tilanteissa.">
<!ENTITY torSettings.connect "Yhdistä">
-<!ENTITY torSettings.proxyQuestion "Tarvitseeko tämä tietokone välityspalvelinta päästäkseen internettiin?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Ellet ole varma, kuinka vastata tähän kysymykseen, katso Internet-asetukset toisessa selaimessa nähdäksesi onko se määritetty käyttämään välityspalvelinta.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Kirjoita välityspalvelinasetukset.">
<!ENTITY torSettings.bridgeQuestion "Sensuroiko tai estääkö sinun operaattorisi (ISP) yhteydet Tor-verkkoon?">
<!ENTITY torSettings.bridgeHelp "Ellet ole varma kuinka vastata tähän kysymykseen, valitse No.  Jos valitset Kyllä, sinua pyydetään määrittämään Torin Sillat, jotka ovat listaamattomia releitä, jotta yhteyksiä olisi vaikeampi estää Torin verkkoon yhdistettäessä.">
-<!ENTITY torSettings.bridgeSettingsPrompt "Voit käyttää edellytettyjä silta-yhteyksiä tai voit saada ja osallistua mukautettuihin siltasarjaan.">
+<!ENTITY torSettings.bridgeSettingsPrompt "Voit käyttää tarjottua siltajoukkoa tai voit hankkia ja kirjoittaa oman siltojen joukon.">
<!-- Other: -->
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Vaihtoehtoinen">
-<!ENTITY torsettings.useProxy.checkbox "Tämän tietokoneen on käytettävä välityspalvelinta päästäkseen internettiin.">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Välityspalvelintyyppi:">
<!ENTITY torsettings.useProxy.address "Osoite:">
<!ENTITY torsettings.useProxy.address.placeholder "IP-osoite tai palvelinnimi">
@@ -45,18 +45,18 @@
<!ENTITY torsettings.useBridges.checkbox "Minun internet-yhteyden tarjoajani (ISP) estää yhteydet Tor-verkkoon">
<!ENTITY torsettings.useBridges.default "Yhdistä tarjotuilla silloilla">
<!ENTITY torsettings.useBridges.type "Siirtotyyppi:">
-<!ENTITY torsettings.useBridges.custom "Mene mukautettuihin siltoihin">
-<!ENTITY torsettings.useBridges.label "Mene yhteen tai useampaan silta releeseen (yksi per rivi).">
-<!ENTITY torsettings.useBridges.placeholder "syötä osoite:portti">
+<!ENTITY torsettings.useBridges.custom "Kirjoita omat sillat">
+<!ENTITY torsettings.useBridges.label "Kirjoita yksi tai useampi siltarele (yksi per rivi).">
+<!ENTITY torsettings.useBridges.placeholder "kirjoita osoite:portti">
<!ENTITY torsettings.copyLog "Kopioi Tor-loki leikepöydälle">
-<!ENTITY torsettings.bridgeHelpTitle "Siltarele-apu">
-<!ENTITY torsettings.bridgeHelp1 "Jos et pysty yhdistämään Torin verkkoon, syy voi olla, että Internet palveluntarjoajasi (ISP) tai muu taho estää Tor.  Usein, voit kiertää tämän ongelman käyttämällä Torin siltoja, jotka ovat listaamattomia releitä, jotka on vaikeampi estää.">
-<!ENTITY torsettings.bridgeHelp1B "Voit käyttää esimääritettyjä, edellytettyjä siltaosoitesarjoja tai voit saada mukautetun osoitesarjan käyttämällä näitä kolmea menetelmää:">
+<!ENTITY torsettings.bridgeHelpTitle "Siltareleopaste">
+<!ENTITY torsettings.bridgeHelp1 "Jos et pysty yhdistämään Tor-verkkoon, syy voi olla, että Internet palveluntarjoajasi (ISP) tai muu taho estää Torin.  Usein voit kiertää tämän ongelman käyttämällä Tor-siltoja, jotka ovat listaamattomia releitä, joita on vaikeampi estää.">
+<!ENTITY torsettings.bridgeHelp1B "Voit käyttää esiasetettuja, tarjottuja siltaosoitejoukkoja tai voit hankkia oman osoitejoukon käyttämällä yhtä näistä kolmesta menetelmästä:">
<!ENTITY torsettings.bridgeHelp2Heading "Verkon yli">
<!ENTITY torsettings.bridgeHelp2 "Käytä internet-selainta vieraillaksesi osoitteessa: https://bridges.torproject.org">
-<!ENTITY torsettings.bridgeHelp3Heading "Sähköpostin Automaattivastaajan läpi">
-<!ENTITY torsettings.bridgeHelp3.emailDesc "Lähetä sähköpostia osoitteeseen bridges(a)torproject.org käyttäen viestissä tekstiä 'get bridges' pelkästään viestin rungossa.  Kuitenkin, tehdäksesi vaikeammaksi siltaosoitteiden opettelu hyökkääjälle sinun on lähetettävä tämä pyyntö yhdestä seuraavista sähköpostipalveluiden tarjoajan osoitteesta (listattu suosion mukaisessa järjestyksessä):">
+<!ENTITY torsettings.bridgeHelp3Heading "Sähköpostin automaattivastaajan läpi">
+<!ENTITY torsettings.bridgeHelp3.emailDesc "Lähetä sähköpostia osoitteeseen bridges(a)torproject.org käyttäen viestissä tekstiä 'get bridges' pelkästään viestin rungossa.  Jotta hyökkääjälle olisi kuitenkin vaikeampaa monien siltaosoiteiden oppiminen, sinun on lähetettävä pyyntö yhden seuraavan sähköpostitarjoajan kautta (lueteltu suosion mukaisessa järjestyksessä):">
<!ENTITY torsettings.bridgeHelp3.emailList "https://www.riseup.net, https://mail.google.com tai https:://mail.yahoo.com">
<!ENTITY torsettings.bridgeHelp4Heading "Neuvontapisteen läpi">
<!ENTITY torsettings.bridgeHelp4 "Viimeisenä keinona voit pyytää siltaosoitteita lähettämällä kohteliaan viestin osoitteeseen: help(a)rt.torproject.org.  Huomioi, että henkilön tulee vastata kuhunkin pyyntöön.">
diff --git a/src/chrome/locale/fil/network-settings.dtd b/src/chrome/locale/fil/network-settings.dtd
index ca5fe24..a85a21b 100644
--- a/src/chrome/locale/fil/network-settings.dtd
+++ b/src/chrome/locale/fil/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Alin dito ang pinaka angkop na nagsasaad ng iyong sitwasyon?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "Kailangan kong i-configure ang bridge o proxy settings">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Makipag-ugnay">
-<!ENTITY torSettings.proxyQuestion "Kailangan ba ng kompyuter na ito na gumamit ng proxy upang makagamit ng Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/fo/network-settings.dtd b/src/chrome/locale/fo/network-settings.dtd
index c2db870..d6fae0a 100644
--- a/src/chrome/locale/fo/network-settings.dtd
+++ b/src/chrome/locale/fo/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/fr-CA/network-settings.dtd b/src/chrome/locale/fr-CA/network-settings.dtd
index 5df779b..328088a 100644
--- a/src/chrome/locale/fr-CA/network-settings.dtd
+++ b/src/chrome/locale/fr-CA/network-settings.dtd
@@ -1,4 +1,4 @@
-<!ENTITY torsettings.dialog.title "Paramètres réseau de Tor">
+<!ENTITY torsettings.dialog.title "Paramètres du réseau Tor">
<!-- For "first run" wizard: -->
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Laquelle des suivantes décrit le mieux votre situation?">
<!ENTITY torSettings.configurePrompt1 "La connexion Internet de cet ordinateur est censurée ou relayée.">
-<!ENTITY torSettings.configurePrompt2 "Je dois configurer des paramètres de pont ou de serveur mandataire.">
+<!ENTITY torSettings.configurePrompt2 "Je dois configurer des paramètres de pont ou de serveur mandataire local.">
<!ENTITY torSettings.configure "Configurer">
<!ENTITY torSettings.connectPrompt2 "Je voudrais me connecter directement au réseau Tor.">
<!ENTITY torSettings.connectPrompt3 "Ceci fonctionnera dans la plupart des situations.">
<!ENTITY torSettings.connect "Se connecter">
-<!ENTITY torSettings.proxyQuestion "Est-ce que cet ordinateur à besoin d'utiliser un serveur mandataire pour accéder à internet?">
+<!ENTITY torSettings.proxyQuestion "Cet ordinateur doit-il utiliser un serveur mandataire local pour accéder à Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Si vous ne savez pas comment répondre à cette question, regarder les paramètres Internet d'un autre navigateur afin de voir s'il est configuré pour utiliser un mandataire.">
+<!ENTITY torSettings.proxyHelp "Si vous n'êtes pas certain de connaître la réponse à cette question, vérifiez les paramètres Internet d'un autre navigateur pour voir s'il est configuré pour utiliser un mandataire local.">
<!ENTITY torSettings.enterProxy "Saisir les paramètres du serveur mandataire.">
<!ENTITY torSettings.bridgeQuestion "Votre fournisseur de service Internet (FSI) bloque-t-il ou censure-t-il vos connexions au réseau Tor?">
<!ENTITY torSettings.bridgeHelp "Si vous ne savez pas comment répondre à cette question, choisissez Non.  Si vous choisissez Oui, on vous demandera de configurer les ponts Tor qui sont des relais non listés rendant le bloquage des connexions au réseau Tor plus difficile.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optionnel">
-<!ENTITY torsettings.useProxy.checkbox "Cet ordinateur doit utiliser un serveur mandataire pour accéder à Internet">
+<!ENTITY torsettings.useProxy.checkbox "Cet ordinateur doit utiliser un mandataire local pour accéder à Internet">
<!ENTITY torsettings.useProxy.type "Type de mandataire :">
<!ENTITY torsettings.useProxy.address "Adresse :">
<!ENTITY torsettings.useProxy.address.placeholder "Adresse IP ou nom d'hôte">
diff --git a/src/chrome/locale/fr-CA/torlauncher.properties b/src/chrome/locale/fr-CA/torlauncher.properties
index bd66071..d0ac833 100644
--- a/src/chrome/locale/fr-CA/torlauncher.properties
+++ b/src/chrome/locale/fr-CA/torlauncher.properties
@@ -25,7 +25,7 @@ torlauncher.error_proxy_addr_missing=Vous devez spécifier à la fois une adress
torlauncher.error_proxy_type_missing=Vous devez choisir le type de mandataire.
torlauncher.error_bridges_missing=Vous devez spécifier un ou plusieurs ponts.
torlauncher.error_default_bridges_type_missing=Vous devez choisir un type de transport pour les ponts fournis.
-torlauncher.error_bridge_bad_default_type=Aucun pont ayant le type de transport %S n'est disponible, Veuillez ajuster vos paramètres.
+torlauncher.error_bridge_bad_default_type=Aucun pont n'est disponible pour le type de transport %S, Veuillez ajuster vos paramètres.
torlauncher.recommended_bridge=(recommandé)
diff --git a/src/chrome/locale/fr/network-settings.dtd b/src/chrome/locale/fr/network-settings.dtd
index d82a436..b9c5b7d 100644
--- a/src/chrome/locale/fr/network-settings.dtd
+++ b/src/chrome/locale/fr/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Laquelle des phrases suivantes décrit le mieux votre situation ?">
<!ENTITY torSettings.configurePrompt1 "Le connexion internet de cet ordinateur est bloqué ou utilise un proxy.">
-<!ENTITY torSettings.configurePrompt2 "Je doit configurer le pont réseau ou les paramètres du proxy.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configurer">
<!ENTITY torSettings.connectPrompt2 "Je souhaite me connecter directement au réseau Tor.">
<!ENTITY torSettings.connectPrompt3 "Cela fonctionnera dans la plupart des situations.">
<!ENTITY torSettings.connect "Se connecter">
-<!ENTITY torSettings.proxyQuestion "Est-ce que cet ordinateur a besoin d'un proxy pour accéder à internet ?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Si vous ne savez pas comment répondre à cette question, vous pouvez regarder les paramètres de connexion d'un autre navigateur afin de voir s'il est configuré pour utiliser un proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Entrez les paramètres de votre proxy.">
<!ENTITY torSettings.bridgeQuestion "Est-ce que votre Fournisseur d'Accès Internet (FAI) bloque les connexions au réseau Tor ?">
<!ENTITY torSettings.bridgeHelp "Si vous ne savez pas comment répondre à cette question, choisissez Non.  Si vous choisissez Oui, il vous sera demandé de configurer les bridges Tor qui sont des relais non listés et qui rendent plus difficile le blocage du réseau Tor.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optionnel">
-<!ENTITY torsettings.useProxy.checkbox "Cet ordinateur a besoin d'utiliser un proxy pour accéder à Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Type de proxy :">
<!ENTITY torsettings.useProxy.address "Adresse :">
<!ENTITY torsettings.useProxy.address.placeholder "Adresse IP ou nom d'hôte">
diff --git a/src/chrome/locale/fur/network-settings.dtd b/src/chrome/locale/fur/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/fur/network-settings.dtd
+++ b/src/chrome/locale/fur/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/fy/network-settings.dtd b/src/chrome/locale/fy/network-settings.dtd
index e189a46..4e52d0c 100644
--- a/src/chrome/locale/fy/network-settings.dtd
+++ b/src/chrome/locale/fy/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/ga/network-settings.dtd b/src/chrome/locale/ga/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/ga/network-settings.dtd
+++ b/src/chrome/locale/ga/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/gl/network-settings.dtd b/src/chrome/locale/gl/network-settings.dtd
index 6586f28..efc2a2b 100644
--- a/src/chrome/locale/gl/network-settings.dtd
+++ b/src/chrome/locale/gl/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Cal das seguintes alternativas describe mellor a súa situación?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configurar">
<!ENTITY torSettings.connectPrompt2 "Gustaríame conectar directamente á rede Tor">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Conectar">
-<!ENTITY torSettings.proxyQuestion "Este computador precisa utilizar un proxy para acceder a Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Se non está seguro de como responder a esta pregunta, consulte as opcións de Internet en outro navegador para ver se está configurado para usar un proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Introduza a configuración do proxy.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Opcional">
-<!ENTITY torsettings.useProxy.checkbox "Este ordenador ten que usar un proxy para acceder a Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Tipo de Proxy:">
<!ENTITY torsettings.useProxy.address "Enderezo:">
<!ENTITY torsettings.useProxy.address.placeholder "Enderezo IP ou nome da máquina">
diff --git a/src/chrome/locale/gu-IN/network-settings.dtd b/src/chrome/locale/gu-IN/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/gu-IN/network-settings.dtd
+++ b/src/chrome/locale/gu-IN/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/gu/network-settings.dtd b/src/chrome/locale/gu/network-settings.dtd
index 47d5383..f3db690 100644
--- a/src/chrome/locale/gu/network-settings.dtd
+++ b/src/chrome/locale/gu/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/gun/network-settings.dtd b/src/chrome/locale/gun/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/gun/network-settings.dtd
+++ b/src/chrome/locale/gun/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/ha/network-settings.dtd b/src/chrome/locale/ha/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/ha/network-settings.dtd
+++ b/src/chrome/locale/ha/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/he/network-settings.dtd b/src/chrome/locale/he/network-settings.dtd
index 4d52e92..3e3aa28 100644
--- a/src/chrome/locale/he/network-settings.dtd
+++ b/src/chrome/locale/he/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "אילו מן הבאים מתאר את המצב שלך באופן הטוב ביותר?">
<!ENTITY torSettings.configurePrompt1 "חיבור האינטרנט של המחשב הזה מצונזר או עובר בשרת פרוקסי">
-<!ENTITY torSettings.configurePrompt2 "אני צריך להגדיר גשר או הגדרות פרוקסי">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "הגדר">
<!ENTITY torSettings.connectPrompt2 "ברצוני להתחבר ישירות אל הרשת Tor.">
<!ENTITY torSettings.connectPrompt3 "זה יעבוד ברוב המקרים.">
<!ENTITY torSettings.connect "התחבר">
-<!ENTITY torSettings.proxyQuestion "האם מחשב זה צריך להשתמש בפרוקסי כדי לגשת אל האינטרנט?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "אם אינך בטוח איך לענות לשאלה זו, תבדוק את הגדרות האינטרנט בדפדפן אחר, לראות האם הוא מוגדר להשתמש בפרוקסי.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "הזן את הגדרות הפרוקסי.">
<!ENTITY torSettings.bridgeQuestion "האם ספק שירותי האינטרנט (ISP) שלך חוסם או מצנזר אחרת חיבורים לרשת Tor ?">
<!ENTITY torSettings.bridgeHelp "אם אינך בטוח איך לענות לשאלה הזו, בחר No.  במידה ותבחר כן, תתבקש להגדיר את גשרי Tor, שהם ממסרים לא רשומים שמקשים לחסום חיבורים לרשת Tor.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "רשות">
-<!ENTITY torsettings.useProxy.checkbox "מחשב זה צריך להשתמש בפרוקסי כדי לגשת אל האינטרנט">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "טיפוס פרוקסי:">
<!ENTITY torsettings.useProxy.address "כתובת:">
<!ENTITY torsettings.useProxy.address.placeholder "כתובת IP או שם מארח">
diff --git a/src/chrome/locale/hi/network-settings.dtd b/src/chrome/locale/hi/network-settings.dtd
index f64da4b..df12b5d 100644
--- a/src/chrome/locale/hi/network-settings.dtd
+++ b/src/chrome/locale/hi/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "जोड़ें">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "पता :">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/hr-HR/network-settings.dtd b/src/chrome/locale/hr-HR/network-settings.dtd
index ba722f3..7cc1e6d 100644
--- a/src/chrome/locale/hr-HR/network-settings.dtd
+++ b/src/chrome/locale/hr-HR/network-settings.dtd
@@ -2,29 +2,28 @@
<!-- For "first run" wizard: -->
-<!ENTITY torsettings.prompt "Prije nego se spojite na Tor mrežu, trebate dati informacija o
+<!ENTITY torsettings.prompt "Prije nego se spojite na Tor mrežu, trebate dati informacije o
internetskoj vezi ovog računala.">
<!ENTITY torSettings.yes "Da">
<!ENTITY torSettings.no "Ne">
<!ENTITY torSettings.firstQuestion "Koje od sljedećeg najbolje opisuje Vašu situaciju?">
-<!ENTITY torSettings.configurePrompt1 "Veza s Internetom ovog računala je cenzurirana ili iza proxya.">
-<!ENTITY torSettings.configurePrompt2 "Trebam konfigurirati postavke mosta ili proxya.">
+<!ENTITY torSettings.configurePrompt1 "Veza ovog računal s Internetom je cenzurirana ili iza proxy-a.">
+<!ENTITY torSettings.configurePrompt2 "Trebam konfigurirati postavke mosta ili lokalnog proxy-a.">
<!ENTITY torSettings.configure "Podesi">
<!ENTITY torSettings.connectPrompt2 "Želim se izravno spojiti na Tor mrežu.">
<!ENTITY torSettings.connectPrompt3 "Ovo će raditi u većini situacija.">
<!ENTITY torSettings.connect "Spajanje">
-<!ENTITY torSettings.proxyQuestion "Koristi li ovo računalo proxy za pristup Internetu?">
+<!ENTITY torSettings.proxyQuestion "Treba li ovo računalo koristiti lokalni proxy da pristupi Internetu?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Ako niste sigurni kako odgovoriti na ovo pitanje, pogledajte Internet postavke u drugom pregledniku i provjerite je li podešen za korištenje proxyja.">
-<!ENTITY torSettings.enterProxy "Unesite postavke proxyja.">
-<!ENTITY torSettings.bridgeQuestion "Blokira li vaš Internet Service Provider (ISP) ili ikako cenzurira veze
+<!ENTITY torSettings.proxyHelp "Ako niste sigurni kako odgovoriti na ovo pitanje, pogledajte Internet postavke u drugom pregledniku da vidite jeli postavljen da koristi lokalni proxy.">
+<!ENTITY torSettings.enterProxy "Unesite postavke proxyj-a.">
+<!ENTITY torSettings.bridgeQuestion "Blokira li Vaš davetelj Internet usluge (ISP) ili drugačije cenzurira veze
s Tor mrežom?">
-<!ENTITY torSettings.bridgeHelp "Ako niste sigurni kako da odgovorite na ovo pitanje, odaberite Ne.  Ako odaberete Da, zatražit će vas da konfigurirate Tor Mostove, koji su neizlistani releji koji otežavaju
-blokiranje konekcija s Tor mrežom">
-<!ENTITY torSettings.bridgeSettingsPrompt "Možete koristiti osigurani set bridge adresa ili možete unijeti vlasiti set mostova.">
+<!ENTITY torSettings.bridgeHelp "Ako niste sigurni kako da odgovorite na ovo pitanje, odaberite Ne.  Ako odaberete Da, od Vas će se tražiti da konfigurirate Tor Mostove, koji su neizlistani releji koji otežavaju blokiranje povezivanja s Tor mrežom.">
+<!ENTITY torSettings.bridgeSettingsPrompt "Možete koristiti osigurani set adresa mostova ili možete unijeti vlasiti set mostova.">
<!-- Other: -->
@@ -33,8 +32,8 @@ blokiranje konekcija s Tor mrežom">
<!ENTITY torsettings.optional "Opcionalno">
-<!ENTITY torsettings.useProxy.checkbox "Ovo računalo koristi proxy za pristup internetu.">
-<!ENTITY torsettings.useProxy.type "Tip proxyja:">
+<!ENTITY torsettings.useProxy.checkbox "Ovo računalo treba koristiti lokalni proxy za pristup Internetu.">
+<!ENTITY torsettings.useProxy.type "Tip proxyj-a:">
<!ENTITY torsettings.useProxy.address "Adresa:">
<!ENTITY torsettings.useProxy.address.placeholder "IP adresa ili hostname">
<!ENTITY torsettings.useProxy.port "Port:">
@@ -50,18 +49,16 @@ blokiranje konekcija s Tor mrežom">
<!ENTITY torsettings.useBridges.type "Tip transporta:">
<!ENTITY torsettings.useBridges.custom "Unesi vlastite mostove">
<!ENTITY torsettings.useBridges.label "Unesite jedan ili više mostova (jedan po retku).">
-<!ENTITY torsettings.useBridges.placeholder "type address:port">
+<!ENTITY torsettings.useBridges.placeholder "unesite adresa:port">
<!ENTITY torsettings.copyLog "Kopiraj Tor zapisnik u međuspremnik">
-<!ENTITY torsettings.bridgeHelpTitle "Pomoć za bridge relej">
-<!ENTITY torsettings.bridgeHelp1 "Ako se ne možete spojiti na Tor mrežu, to može biti zato što vaš ISP ili druga agencija blokira Tor.  Najčešće možete zaobići ovaj problem koristeći Tor Bridges, koji su neizlistani releji koje je teže blokirati.">
-<!ENTITY torsettings.bridgeHelp1B "Možete koristiti već konfigurirani, osigurani set bridge adresa ili možete dobiti
-vlastiti set adresa koristeći jednu od ove tri metode:">
+<!ENTITY torsettings.bridgeHelpTitle "Pomoć za relej-mostove">
+<!ENTITY torsettings.bridgeHelp1 "Ako se ne možete spojiti na Tor mrežu, to može biti zato što Vaš pružatelj Internet usluge (ISP) ili druga agencija blokira Tor.  Najčešće možete zaobići ovaj problem koristeći Tor Mostove, koji su neizlistani releji koje je teže blokirati.">
+<!ENTITY torsettings.bridgeHelp1B "Možete koristiti već konfigurirani, osigurani set adresa mostova ili možete dobiti vlastiti set adresa koristeći jednu od ove tri metode:">
<!ENTITY torsettings.bridgeHelp2Heading "Kroz Web">
<!ENTITY torsettings.bridgeHelp2 "Koristite web preglednik kako bi posjetili https://bridges.torproject.org">
<!ENTITY torsettings.bridgeHelp3Heading "Kroz Email Autoresponder">
-<!ENTITY torsettings.bridgeHelp3.emailDesc "Pošaljite email na bridges(a)torproject.org tako što će te u poruku napisati samo 'get bridges'.  Kako bilo, da bi otežali napadaču da nauči puno o adresama mostova, morate poslati taj zahtjev koristeći jednog od sljedećih davatelja email usluge (poredano po preferabilnosti):">
+<!ENTITY torsettings.bridgeHelp3.emailDesc "Pošaljite email na bridges(a)torproject.org tako što će te u poruku napisati samo 'get bridges'.  Kako bilo, da bi otežali napadaču da nauči puno adresa mostova, morate poslati taj zahtjev koristeći jednog od sljedećih davatelja email usluge (poredano po preferabilnosti):">
<!ENTITY torsettings.bridgeHelp3.emailList "https://www.riseup.net, https://mail.google.com, ili https://mail.yahoo.com">
-<!ENTITY torsettings.bridgeHelp4Heading "Pomoću Help Deska">
-<!ENTITY torsettings.bridgeHelp4 "U najgorem slučaju, možete zatražiti bridge adrese tako što pošaljete pristojan email na help(a)rt.torproject.org.  Imajte na umu da neće odgovoriti na svaki
-zahtjev.">
+<!ENTITY torsettings.bridgeHelp4Heading "Pomoću Help Desk-a">
+<!ENTITY torsettings.bridgeHelp4 "Na kraju, možete zatražiti adrese mostova tako što će te poslati pristojan email na help(a)rt.torproject.org.  Imajte na umu da će na svaki zahtjev morati odgovoriti osoba.">
diff --git a/src/chrome/locale/hr-HR/torlauncher.properties b/src/chrome/locale/hr-HR/torlauncher.properties
index 47c42bb..dc68e08 100644
--- a/src/chrome/locale/hr-HR/torlauncher.properties
+++ b/src/chrome/locale/hr-HR/torlauncher.properties
@@ -1,13 +1,13 @@
### Copyright (c) 2014, The Tor Project, Inc.
### See LICENSE for licensing information.
-torlauncher.error_title=Pokretač Tora
+torlauncher.error_title=Pokretač Tor-a
-torlauncher.tor_exited=Tor je neočekivano izašao. Ovo bi moglo biti zbog greške u samom Tor-u, drugog programa na Vašem sustavu ili neispravnog hardware-a. Dok ne pokrenete Tor ponovno, Tor Preglednik neće biti u mogućnosti pristupiti web stranicama. Ako problem ustraje, molimo Vas da pošaljete Vašeg Tor Log-a timu za podršku.
+torlauncher.tor_exited=Tor je neočekivano izašao. Ovo bi moglo biti zbog greške u samom Tor-u, drugog programa na Vašem sustavu ili neispravnog hardware-a. Dok ne pokrenete Tor ponovno, Tor Preglednik neće biti u mogućnosti pristupiti web stranicama. Ako problem ustraje, molimo Vas da pošaljete kopiju Vašeg Tor zapisa timu za podršku.
torlauncher.tor_exited2=Ponovno pokretanje Tor-a neće zatvoriti Vaše kartice u pregledniku.
-torlauncher.tor_controlconn_failed=Nije se moguće spojiti na Torov upravljački port.
+torlauncher.tor_controlconn_failed=Nije se moguće spojiti na Tor-ov upravljački port.
torlauncher.tor_failed_to_start=Tor se nije uspio pokrenuti.
-torlauncher.tor_control_failed=Preuzimanje kontrole nad Torom nije uspjelo.
+torlauncher.tor_control_failed=Preuzimanje kontrole nad Tor-om nije uspjelo.
torlauncher.tor_bootstrap_failed=Tor nije uspio uspostaviti Tor mrežnu vezu.
torlauncher.tor_bootstrap_failed_details=%1$S neuspjelo (%2$S).
@@ -19,32 +19,32 @@ torlauncher.password_hash_missing=Nije moguće dobiti hash lozinke.
torlauncher.failed_to_get_settings=Nije moguće dobaviti Tor postavke.\n\n%S
torlauncher.failed_to_save_settings=Nije moguće spremiti Tor postavke.\n\n%S
-torlauncher.ensure_tor_is_running=Molimo osigurajte da Tor radi.
+torlauncher.ensure_tor_is_running=Molimo osigurajte da je Tor pokrenut.
-torlauncher.error_proxy_addr_missing=Morate navesti i IP adresu ili ime računala i broj porta da biste konfigurirali Tor za korištenje proxyja za pristup Internetu.
-torlauncher.error_proxy_type_missing=Morate odabrati tip proxyja.
+torlauncher.error_proxy_addr_missing=Morate navesti i IP adresu ili ime računala i broj porta da biste konfigurirali Tor za korištenje proxyj-a za pristup Internetu.
+torlauncher.error_proxy_type_missing=Morate odabrati tip proxy-a.
torlauncher.error_bridges_missing=Morate odrediti jedan ili više mostova.
torlauncher.error_default_bridges_type_missing=Morate odabrati vrstu transporta za pružene mostove.
torlauncher.error_bridge_bad_default_type=Nema dostupnih pruženih mostova koji imaju %S vrstu transporta. Molimo, prilagodite svoje postavke.
torlauncher.recommended_bridge=(preporučeno)
-torlauncher.connect=Spajanje
+torlauncher.connect=Spoji
torlauncher.restart_tor=Ponovno pokreni Tor
-torlauncher.quit=Odustani
+torlauncher.quit=Prekini
torlauncher.quit_win=Izlaz
torlauncher.done=Gotovo
torlauncher.forAssistance=Za pomoć, kontaktirajte %S
-torlauncher.copiedNLogMessages=Kopiranje završeno. %S Tor log poruke su spremne za lijepljenje u uređivač teksta ili email poruku.
+torlauncher.copiedNLogMessages=Kopiranje završeno. %S Tor zapisi su spremni za lijepljenje u uređivač teksta ili email poruku.
torlauncher.bootstrapStatus.conn_dir=Spajanje na mapu releja
torlauncher.bootstrapStatus.handshake_dir=Uspostavljanje šifrirane veze na mapu
torlauncher.bootstrapStatus.requesting_status=Dohvaćanje statusa mreže
torlauncher.bootstrapStatus.loading_status=Učitavanje statusa mreže
-torlauncher.bootstrapStatus.loading_keys=Učitavanje autoritetnih certifikata
-torlauncher.bootstrapStatus.requesting_descriptors=Zahtjevanje informacije o releju
+torlauncher.bootstrapStatus.loading_keys=Učitavanje autoriteta certifikata
+torlauncher.bootstrapStatus.requesting_descriptors=Zahtjevanje informacija o releju
torlauncher.bootstrapStatus.loading_descriptors=Učitavanje informacija o releju
torlauncher.bootstrapStatus.conn_or=Spajanje na Tor mrežu
torlauncher.bootstrapStatus.handshake_or=Uspostavljanje Tor kruga
@@ -58,4 +58,4 @@ torlauncher.bootstrapWarning.identity=nepodudaranje identiteta
torlauncher.bootstrapWarning.timeout=vrijeme čekanja veze isteklo
torlauncher.bootstrapWarning.noroute=nema rute do domaćina
torlauncher.bootstrapWarning.ioerror=greška čitanja/pisanja
-torlauncher.bootstrapWarning.pt_missing=nedostaje pluggable transport
+torlauncher.bootstrapWarning.pt_missing=nedostaje transport koji se može priključiti
diff --git a/src/chrome/locale/hr/network-settings.dtd b/src/chrome/locale/hr/network-settings.dtd
index e84fff5..62e0093 100644
--- a/src/chrome/locale/hr/network-settings.dtd
+++ b/src/chrome/locale/hr/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "Ovo će raditi u većini situacija.">
<!ENTITY torSettings.connect "Poveži se">
-<!ENTITY torSettings.proxyQuestion "Da li računalo treba koristiti proxy za pristup internetu?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Unesi proxy postavke.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Adresa:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/ht/network-settings.dtd b/src/chrome/locale/ht/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/ht/network-settings.dtd
+++ b/src/chrome/locale/ht/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/hu/network-settings.dtd b/src/chrome/locale/hu/network-settings.dtd
index cf616e4..2f95130 100644
--- a/src/chrome/locale/hu/network-settings.dtd
+++ b/src/chrome/locale/hu/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "A következők közül melyik illik jobban a szituációhoz?">
<!ENTITY torSettings.configurePrompt1 "Ennek a számítógépnek a forgalma cenzorált vagy proxizott.">
-<!ENTITY torSettings.configurePrompt2 "Szükségem van a bride és proxy beállítások megadására.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Beállít">
<!ENTITY torSettings.connectPrompt2 "Szeretnék közvetlenül kapcsolódni a Tor hálózathoz.">
<!ENTITY torSettings.connectPrompt3 "A legtöbb esetben ez működni fog.">
<!ENTITY torSettings.connect "Csatlakozás">
-<!ENTITY torSettings.proxyQuestion "A számítógépnek proxy használatára van szüksége az internet eléréséhez?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Ha nem vagy biztos a válaszban nézd meg az Internet beállításokat egy másik böngészőben. Nézd meg van-e proxy használat beállítva.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Adja meg a proxy beállításokat.">
<!ENTITY torSettings.bridgeQuestion "Az internet szolgáltatód (ISP) blokkolja vagy cenzúrázza a kapcsolatot a Tor hálózathoz?">
<!ENTITY torSettings.bridgeHelp "Ha nem vagy biztos a válaszban, válaszd a Nem-et.  Ha az Igen-t választod neked kell konfigurálni a Tor bridges amik nem listázott átjátszók és nehezebbé teszik a Tor hálózat kapcsolódásának a blokkolását.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Opcionális">
-<!ENTITY torsettings.useProxy.checkbox "A számítógépnek szüksége van a proxy használatára az internet kapcsolathoz.">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Típus:">
<!ENTITY torsettings.useProxy.address "Cím:">
<!ENTITY torsettings.useProxy.address.placeholder "IP cím vagy gépnév">
diff --git a/src/chrome/locale/hy-AM/network-settings.dtd b/src/chrome/locale/hy-AM/network-settings.dtd
index cfb3590..6d77c3d 100644
--- a/src/chrome/locale/hy-AM/network-settings.dtd
+++ b/src/chrome/locale/hy-AM/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Միանալ">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/hy/network-settings.dtd b/src/chrome/locale/hy/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/hy/network-settings.dtd
+++ b/src/chrome/locale/hy/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/ia/network-settings.dtd b/src/chrome/locale/ia/network-settings.dtd
index a391ea8..c570946 100644
--- a/src/chrome/locale/ia/network-settings.dtd
+++ b/src/chrome/locale/ia/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Adresse:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/id/network-settings.dtd b/src/chrome/locale/id/network-settings.dtd
index c1c6e5d..1acf78d 100644
--- a/src/chrome/locale/id/network-settings.dtd
+++ b/src/chrome/locale/id/network-settings.dtd
@@ -2,26 +2,26 @@
<!-- For "first run" wizard: -->
-<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
+<!ENTITY torsettings.prompt "Sebelum anda menyambung ke jaringan Tor, anda perlu memberikan informasi tentang koneksi internet komputer ini.">
<!ENTITY torSettings.yes "Ya">
<!ENTITY torSettings.no "Tidak">
<!ENTITY torSettings.firstQuestion "Yang mana dari di bawah ini cocok dengan situasi anda?">
-<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "Saya perlu mengkonfigurasi setelan Bridge atau proxy.">
+<!ENTITY torSettings.configurePrompt1 "Koneksi internet komputer ini disensor atau terproksi.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Konfigur">
<!ENTITY torSettings.connectPrompt2 "Saya ingin menghubungkan secara langsung ke jaringan Tor.">
-<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
+<!ENTITY torSettings.connectPrompt3 "Hal ini akan bekerja dalam kebanyakan situasi.">
<!ENTITY torSettings.connect "Hubungi">
-<!ENTITY torSettings.proxyQuestion "Apakah komputer ini perlu menggunakan proxy untuk mengakses internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Kalau anda tidak yakin bagaimana menjawab pertanyaan ini, periksalah pengaturan Internet di browser lain untuk melihat apakah dia diatur untuk menggunakan proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Masukkan pengaturan proxy.">
-<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
-<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
-<!ENTITY torSettings.bridgeSettingsPrompt "You may use the provided set of bridges or you may obtain and enter a custom set of bridges.">
+<!ENTITY torSettings.bridgeQuestion "Apakah Internet Service Provider (ISP) blok atau sensor koneksi lain ke Tor Jaringan?">
+<!ENTITY torSettings.bridgeHelp "Jika Anda tidak yakin bagaimana untuk menjawab pertanyaan ini, pilih No.  Jika Anda memilih Ya, Anda akan diminta untuk mengkonfigurasi Tor Bridges, yang relai terdaftar yang membuat lebih sulit untuk memblokir koneksi ke jaringan Tor.">
+<!ENTITY torSettings.bridgeSettingsPrompt "Anda dapat menggunakan set bridge yang disediakan atau Anda dapat memperoleh dan memasukkan seperangkat bridge yang biasa digunakan.">
<!-- Other: -->
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Opsional">
-<!ENTITY torsettings.useProxy.checkbox "Komputer ini perlu menggunakan proxy untuk mengakses Internet.">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Tipe Proxy:">
<!ENTITY torsettings.useProxy.address "Alamat:">
<!ENTITY torsettings.useProxy.address.placeholder "alamat IP atau nama host">
@@ -43,16 +43,16 @@
<!ENTITY torsettings.firewall.checkbox "Komputer ini pergi melalui firewall yang hanya mengizinkan koneksi untuk beberapa port">
<!ENTITY torsettings.firewall.allowedPorts "Port yang diizinkan:">
<!ENTITY torsettings.useBridges.checkbox "Internet Service Provider (ISP) saya memblokir koneksi ke jaringan Tor">
-<!ENTITY torsettings.useBridges.default "Connect with provided bridges">
-<!ENTITY torsettings.useBridges.type "Transport type:">
-<!ENTITY torsettings.useBridges.custom "Enter custom bridges">
+<!ENTITY torsettings.useBridges.default "Terhubung dengan bridge yang disediakan">
+<!ENTITY torsettings.useBridges.type "Jenis Transport :">
+<!ENTITY torsettings.useBridges.custom "Masukkan bridge yang biasa digunakan">
<!ENTITY torsettings.useBridges.label "Masukkan satu atau beberapa jembatan penyambung (satu per baris).">
-<!ENTITY torsettings.useBridges.placeholder "type address:port">
+<!ENTITY torsettings.useBridges.placeholder "ketik address:port">
<!ENTITY torsettings.copyLog "Salin Log Tor Ke Clipboard">
<!ENTITY torsettings.bridgeHelpTitle "Bantuan Bridge Relay">
-<!ENTITY torsettings.bridgeHelp1 "If you are unable to connect to the Tor network, it could be that your Internet Service Provider (ISP) or another agency is blocking Tor.  Often, you can work around this problem by using Tor Bridges, which are unlisted relays that are more difficult to block.">
-<!ENTITY torsettings.bridgeHelp1B "You may use the preconfigured, provided set of bridge addresses or you may obtain a custom set of addresses by using one of these three methods:">
+<!ENTITY torsettings.bridgeHelp1 "Jika Anda tidak dapat terhubung ke jaringan Tor, bisa jadi Provider Layanan Internet (ISP) atau lembaga lain yang menghalangi Tor.   Sering kali, Anda dapat mengatasi masalah ini dengan menggunakan Tor Bridges, yang relai terdaftar yang lebih sulit untuk memblokir.">
+<!ENTITY torsettings.bridgeHelp1B "Anda dapat menggunakan prekonfigurasi, disediakan alamat set bridge atau Anda mungkin mendapatkan satu set kebiasaan alamat dengan menggunakan salah satu dari tiga metode ini:">
<!ENTITY torsettings.bridgeHelp2Heading "Through the Web">
<!ENTITY torsettings.bridgeHelp2 "Use a web browser to visit https://bridges.torproject.org">
<!ENTITY torsettings.bridgeHelp3Heading "Through the Email Autoresponder">
diff --git a/src/chrome/locale/is/network-settings.dtd b/src/chrome/locale/is/network-settings.dtd
index 03787df..16dd691 100644
--- a/src/chrome/locale/is/network-settings.dtd
+++ b/src/chrome/locale/is/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Tengjast">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/it/network-settings.dtd b/src/chrome/locale/it/network-settings.dtd
index fa35a88..3343dec 100644
--- a/src/chrome/locale/it/network-settings.dtd
+++ b/src/chrome/locale/it/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Quale delle seguenti descrizioni raffigura meglio la tua situazione?">
<!ENTITY torSettings.configurePrompt1 "La connessione a Internet di questo computer è bloccata da censura o utilizza un proxy.">
-<!ENTITY torSettings.configurePrompt2 "Ho bisogno di configurare un ponte o un settaggio proxy">
+<!ENTITY torSettings.configurePrompt2 "Devo configurare un bridge o le impostazioni del proxy locale.">
<!ENTITY torSettings.configure "Configura">
<!ENTITY torSettings.connectPrompt2 "Vorrei connettermi direttamente alla rete Tor.">
<!ENTITY torSettings.connectPrompt3 "Questo funzionerà nella maggior parte delle situazioni.">
<!ENTITY torSettings.connect "Connetti">
-<!ENTITY torSettings.proxyQuestion "Questo computer usa un proxy per accedere ad Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Se non sei sicuro su come rispondere a questa domanda, controlla le impostazioni Internet di un altro browser web per vedere se sia configurato l'uso di un proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Inserisci le impostazioni del proxy.">
<!ENTITY torSettings.bridgeQuestion "Il tuo fornitore di servizi internet (ISP) blocca o censura la connessione alla rete Tor?">
<!ENTITY torSettings.bridgeHelp "Se non sei sicuro di come rispondere alla domanda, scegli No.  Se scegli Sì, ti verrà chiesto di configurare Tor Bridges, che consiste in relay non elencati che rendono più difficile bloccare le connessioni alla Rete Tor.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Facoltativo">
-<!ENTITY torsettings.useProxy.checkbox "Questo computer utilizza un proxy per accedere ad Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Tipo di proxy:">
<!ENTITY torsettings.useProxy.address "Indirizzo:">
<!ENTITY torsettings.useProxy.address.placeholder "Indirizzo IP oppure hostname">
diff --git a/src/chrome/locale/ja/network-settings.dtd b/src/chrome/locale/ja/network-settings.dtd
index a5a7768..820af62 100644
--- a/src/chrome/locale/ja/network-settings.dtd
+++ b/src/chrome/locale/ja/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "以下のうちあなたの状態に最も適しているのはどれですか?">
<!ENTITY torSettings.configurePrompt1 "このコンピュータのインターネット接続は、検閲されているかプロキシを通します。">
-<!ENTITY torSettings.configurePrompt2 "ブリッジやプロキシの設定を構成する必要があります。">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "構成">
<!ENTITY torSettings.connectPrompt2 "Torネットワークへ直接接続します。">
<!ENTITY torSettings.connectPrompt3 "これはほとんどの状況で動作します。">
<!ENTITY torSettings.connect "接続">
-<!ENTITY torSettings.proxyQuestion "このコンピューターはインターネットにアクセスするのにプロキシが必要ですか?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "この質問にどう答えるべきか確信が持てなければ、Proxyの使用がどのように設定されているか確認するために、他のブラウザのインターネット設定を見てください。">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "プロキシ設定を入力">
<!ENTITY torSettings.bridgeQuestion "あなたのインターネットサービスプロバイダー (ISP) は Tor ネットワークへの接続をブロックしているか、あるいは別のやり方で検閲していますか?">
<!ENTITY torSettings.bridgeHelp "この質問にどう答えるべきかよくわからない場合は、いいえを選択してください。  はいを選択すると、Tor ネットワークへの接続をブロックすることをさらに困難にするリスト化されていないリレーである Tor Bridges を構成することが求められます。">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "オプション">
-<!ENTITY torsettings.useProxy.checkbox "このコンピューターはインターネットにアクセスするのにProxyを使用する必要があります">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxyの種類:">
<!ENTITY torsettings.useProxy.address "アドレス:">
<!ENTITY torsettings.useProxy.address.placeholder "IPアドレス またはホストネーム">
diff --git a/src/chrome/locale/jv/network-settings.dtd b/src/chrome/locale/jv/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/jv/network-settings.dtd
+++ b/src/chrome/locale/jv/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/ka/network-settings.dtd b/src/chrome/locale/ka/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/ka/network-settings.dtd
+++ b/src/chrome/locale/ka/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/kk/network-settings.dtd b/src/chrome/locale/kk/network-settings.dtd
index a43c3f7..b42e4c9 100644
--- a/src/chrome/locale/kk/network-settings.dtd
+++ b/src/chrome/locale/kk/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/km/network-settings.dtd b/src/chrome/locale/km/network-settings.dtd
index bc33bb7..6792918 100644
--- a/src/chrome/locale/km/network-settings.dtd
+++ b/src/chrome/locale/km/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "តើការពណ៌នាណាមួយដូចខាងក្រោមនេះល្អបំផុតសម្រាប់ស្ថានភាពរបស់អ្នក?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "កំណត់រចនាសម្ព័ន្ធ">
<!ENTITY torSettings.connectPrompt2 "ខ្ញុំចង់ភ្ជាប់ដោយផ្ទាល់ទៅបណ្ដាញ Tor ។">
<!ENTITY torSettings.connectPrompt3 "វានឹងដំណើរការក្នុងស្ថានភាពភាគច្រើន។">
<!ENTITY torSettings.connect "តភ្ជាប់">
-<!ENTITY torSettings.proxyQuestion "តើកុំព្យូទ័រនេះត្រូវប្រើប្រូកស៊ី ដើម្បីចូលអ៊ីនធឺណិតឬ?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "បើអ្នកមិនប្រាកដអំពីវិធីឆ្លើយសំណួរនេះ មើលការកំណត់អ៊ីនធឺណិតក្នុងកម្មវិធីអ៊ីនធឺណិតផ្សេង ដើម្បីដឹងថាតើវាត្រូវបានកំណត់រចនាសម្ព័ន្ធដើម្បីប្រើប្រូកស៊ីដែរឬទេ។">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "បញ្ចូលការកំណត់ប្រូកស៊ី។">
<!ENTITY torSettings.bridgeQuestion "តើក្រុមហ៊ុនផ្ដល់អ៊ីនធឺណិតរបស់អ្នក (ISP) ទប់ស្កាត់ ឬបើមិនដូច្នេះទេការភ្ជាប់ឧបករណ៍ចាប់សញ្ញាទៅបណ្ដាញ Tor ?">
<!ENTITY torSettings.bridgeHelp "បើអ្នកប្រាកដពីវិធីឆ្លើយសំណួរនេះ ជ្រើសទេ។   បើអ្នកជ្រើសបាទ/ចាស អ្នកនឹងត្រូវបានស្នើឲ្យកំណត់រចនាសម្ព័ន្ធប៊្រីត Tor ដែលជាការបញ្ជូនបន្តមិនបានរាយដែលធ្វើឲ្យវាកាន់តែលំបាកក្នុងការទប់ស្កាត់ការភ្ជាប់ទៅបណ្ដាញ Tor ។">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "ជាជម្រើស">
-<!ENTITY torsettings.useProxy.checkbox "កុំព្យូទ័រនេះត្រូវប្រើប្រូកស៊ី ដើម្បីចូលអ៊ីនធឺណិត">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "ប្រភេទប្រូកស៊ី៖">
<!ENTITY torsettings.useProxy.address "អាយដ្ឋាន៖">
<!ENTITY torsettings.useProxy.address.placeholder "អាសយដ្ឋាន IP ឬឈ្មោះម៉ាស៊ីន">
diff --git a/src/chrome/locale/kn/network-settings.dtd b/src/chrome/locale/kn/network-settings.dtd
index 7e477e3..d7c915a 100644
--- a/src/chrome/locale/kn/network-settings.dtd
+++ b/src/chrome/locale/kn/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/kn/progress.dtd b/src/chrome/locale/kn/progress.dtd
index b1c647d..7b197ab 100644
--- a/src/chrome/locale/kn/progress.dtd
+++ b/src/chrome/locale/kn/progress.dtd
@@ -1,4 +1,4 @@
<!ENTITY torprogress.dialog.title "ಟಾರ್ನ ಸ್ಥಿತಿ">
<!ENTITY torprogress.openSettings "ಅಪೂರ್ಣ ಸೆಟ್ಟಿಂಗ್ಗಳು">
<!ENTITY torprogress.heading "ಟಾರ್ ಜಾಲಕ್ಕೆ ಸೇರಿಕೋತಾ ಇದೀವಿ.">
-<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.">
+<!ENTITY torprogress.pleaseWait "ನಾವು ಟಾರ್ ಜಾಲಬಂಧಕ್ಕೆ ಸಂಪರ್ಕವನ್ನು ಕಲ್ಪಿಸುತ್ತಿದ್ದೆವೆ. ದಯವಿಟ್ಟು ನಿರೀಕ್ಷಿಸಿ">
diff --git a/src/chrome/locale/ko-KR/network-settings.dtd b/src/chrome/locale/ko-KR/network-settings.dtd
index 1842a05..51ee756 100644
--- a/src/chrome/locale/ko-KR/network-settings.dtd
+++ b/src/chrome/locale/ko-KR/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "주소:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/ko/network-settings.dtd b/src/chrome/locale/ko/network-settings.dtd
index a89866e..81a2368 100644
--- a/src/chrome/locale/ko/network-settings.dtd
+++ b/src/chrome/locale/ko/network-settings.dtd
@@ -9,7 +9,7 @@
<!ENTITY torSettings.firstQuestion "어떤 것이 귀하의 상황에 가깝습니까?">
<!ENTITY torSettings.configurePrompt1 "이 컴퓨터의 인터넷 연결은 검열되어 있거나 프록시를 통합니다.">
-<!ENTITY torSettings.configurePrompt2 "브릿지 또는 프록시 설정을 구성해야 합니다.">
+<!ENTITY torSettings.configurePrompt2 "브릿지 또는 프록시 설정 구성을 해야 합니다.">
<!ENTITY torSettings.configure "구성">
<!ENTITY torSettings.connectPrompt2 "Tor 네트워크에 직접 연결하고 싶습니다.">
<!ENTITY torSettings.connectPrompt3 "이것은 대부분의 상황에서 동작합니다">
@@ -17,7 +17,7 @@
<!ENTITY torSettings.proxyQuestion "이 컴퓨터는 인터넷에 접속하는 데 프록시가 필요한가요?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "이 질문에 어떻게 대답해야 할지 확신이 서지 않으면 프록시의 사용이 어떻게 설정되어 있는지 확인하기 위해 다른 브라우저의 인터넷 설정을 보세요.">
+<!ENTITY torSettings.proxyHelp "뭔 질문인지 잘 모르시겠다면, 다른 브라우저의 인터넷 설정을 보고 프록시가 어떻게 설정되어 있는지 참고하세요.">
<!ENTITY torSettings.enterProxy "프록시 설정에 들어갑니다.">
<!ENTITY torSettings.bridgeQuestion "인터넷 서비스 공급자(ISP)가 Tor 네트워크 접속을 차단하거나 검열하고 있나요?">
<!ENTITY torSettings.bridgeHelp "이 질문에 어떻게 대답해야할지 잘 모르는 경우 아니오를 선택하십시오.  예를 선택하면 Tor 네트워크에 대한 연결을 차단하는 것을 더욱 어렵게하는 목록 화되지 않은 릴레이이고 Tor Bridges을 구성하는 것이 요구됩니다.">
diff --git a/src/chrome/locale/ku/network-settings.dtd b/src/chrome/locale/ku/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/ku/network-settings.dtd
+++ b/src/chrome/locale/ku/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/kw/network-settings.dtd b/src/chrome/locale/kw/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/kw/network-settings.dtd
+++ b/src/chrome/locale/kw/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/ky/network-settings.dtd b/src/chrome/locale/ky/network-settings.dtd
index a8f724c..8fd0e87 100644
--- a/src/chrome/locale/ky/network-settings.dtd
+++ b/src/chrome/locale/ky/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Дарек:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/lb/network-settings.dtd b/src/chrome/locale/lb/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/lb/network-settings.dtd
+++ b/src/chrome/locale/lb/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/lg/network-settings.dtd b/src/chrome/locale/lg/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/lg/network-settings.dtd
+++ b/src/chrome/locale/lg/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/ln/network-settings.dtd b/src/chrome/locale/ln/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/ln/network-settings.dtd
+++ b/src/chrome/locale/ln/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/lo/network-settings.dtd b/src/chrome/locale/lo/network-settings.dtd
index b4d3d09..7f4ced2 100644
--- a/src/chrome/locale/lo/network-settings.dtd
+++ b/src/chrome/locale/lo/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "ອັນໃດ ຕໍ່ໄປນີ້ ທີ່ ບັນຍາຍ ຢ່າງ ລະອຽດ ທີ່ສຸດ ກ່ຽວກັບ ສະພາບ ຂອງ ທ່ານ?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "ກຳນົດຄ່າ">
<!ENTITY torSettings.connectPrompt2 "ຂ້ອຍຕ້ອງການເຊື່ອມໂດຍກົງກັບເຄືອຂ່າຍ Tor.">
<!ENTITY torSettings.connectPrompt3 "ນີ້ຈະໃຊ້ໄດ້ກັບສະຖານະການສ່ວນໃຫຍ່.">
<!ENTITY torSettings.connect "ເຊື່ອມຕໍ່">
-<!ENTITY torSettings.proxyQuestion "ເຄື່ອງຄັອມພິວເຕີຣ໌ນີ້ ຕ້ອງການ ໃຊ້ ພຣັອກຊີ ເພື່ອເຊື່ອມຕໍ່ເຂົ້າ ອິນເຕີເນັດ ບໍ່?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "ຖ້າທ່ານຍັງບໍ່ແນ່ໃຈວ່າຈະຕອບຄໍາຖາມນີ້ແນວໃດ, ໃຫ້ເບິ່ງ ການຕັ້ງຄ່າ ອິນເຕີເນັດ ຢູ່ ບຣາວເຊີຣ໌ ໂຕອື່ນ ເພື່ອເບິ່ງວ່າ ມັນຖືກກຳນົດ ໃຊ້ ພຣັອກຊີ ແນວໃດ.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "ປ້ອນ ການຕັ້ງຄ່າ ພຣັອກຊີ ເຂົ້າໄປ.">
<!ENTITY torSettings.bridgeQuestion "ຜູ້ໃຫ້ບໍລິການ ອິນເຕີເນັດ (ISP) ກັນໄວ້ບໍ່ ຫຼືບໍ່ ກໍແມ່ນ ມີການກວດສອບ ກ່ອນທີ່ຈະເຊື່ອມຕໍ່ເຂົ້າກັບເຄືອຂ່າຍ Tor?">
<!ENTITY torSettings.bridgeHelp "ຖ້າທ່ານຍັງບໍ່ແນ່ໃຈວ່າຈະຕອບຄໍາຖາມນີ້ແນວໃດ, ໃຫ້ເລືອກ No.  ຖ້າທ່ານເລືກ Yes, ທ່ານ ຈະ ຖືກບອກ ໃຫ້ກຳນົດຄ່າ Tor Bridge ທີ່ບໍ່ໄດ້ຢູ່ໃນລາຍການ ຊຶ່ງຈະເຮັດໃຫ້ຫຍຸ້ງຍາກຕື່ມ ໃນການກັ້ນ ການເຊື່ອມຕໍ່ເຂົ້າເຄືອຂ່າຍ Tor.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/lo/progress.dtd b/src/chrome/locale/lo/progress.dtd
index ebd9cef..f364bd9 100644
--- a/src/chrome/locale/lo/progress.dtd
+++ b/src/chrome/locale/lo/progress.dtd
@@ -1,4 +1,4 @@
-<!ENTITY torprogress.dialog.title "Tor Status">
+<!ENTITY torprogress.dialog.title "ສະຖານະ Tor">
<!ENTITY torprogress.openSettings "Open Settings">
<!ENTITY torprogress.heading "Connecting to the Tor network">
<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.">
diff --git a/src/chrome/locale/lt/network-settings.dtd b/src/chrome/locale/lt/network-settings.dtd
index 3b50645..0e05fde 100644
--- a/src/chrome/locale/lt/network-settings.dtd
+++ b/src/chrome/locale/lt/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Kuris iš žemiau pateiktų apibrėžimų labiausiai atspindi Jūsų padėtį?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Prisijungti">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Adresas:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/lv/network-settings.dtd b/src/chrome/locale/lv/network-settings.dtd
index 6a33288..94ab0a3 100644
--- a/src/chrome/locale/lv/network-settings.dtd
+++ b/src/chrome/locale/lv/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Kura situācija vislabāk atbilst jūsējai?">
<!ENTITY torSettings.configurePrompt1 "Datora savienojums ar internetu ir cenzēts vai starpniekots.">
-<!ENTITY torSettings.configurePrompt2 "Man jākonfigurē tiltu vai starpniekserveru iestatījumi.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Konfigurēt">
<!ENTITY torSettings.connectPrompt2 "Es vēlos tieši pieslēgties tīklam Tor.">
<!ENTITY torSettings.connectPrompt3 "Šis strādās vairumā gadījumu.">
<!ENTITY torSettings.connect "Veidot savienojumu">
-<!ENTITY torSettings.proxyQuestion "Vai šim datoram ir jālieto starpnieks, lai piekļūtu internetam?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Ja neesat pārliecināts kāda ir pareizā atbilde, apskatiet cita pārlūka interneta iestatījumus, lai redzētu vai tas ir konfigurēts izmantot starpnieku.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Ievadiet starpnieka iestatījumus.">
<!ENTITY torSettings.bridgeQuestion "Vai Jūsu interneta pakalpojumu sniedzējs (ISP) bloķē vai savādāk cenzē savienojumus ar tīklu Tor?">
<!ENTITY torSettings.bridgeHelp "Ja nezināt atbildi, izvēlieties No.  ja izvēlēsities Jā, Jums lūgs konfigurēt Tor tiltus jeb Tor Bridges, proti, neuzskaitītus retranslatorus, kuri apgrūtina savienojumu bloķēšanu ar tīklu Tor.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Neobligāts">
-<!ENTITY torsettings.useProxy.checkbox "Šim datoram jālieto starpnieks, lai piekļūtu internetam">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Starpnieka tips:">
<!ENTITY torsettings.useProxy.address "Adrese:">
<!ENTITY torsettings.useProxy.address.placeholder "IP adrese vai resursdatora nosaukums">
diff --git a/src/chrome/locale/mg/network-settings.dtd b/src/chrome/locale/mg/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/mg/network-settings.dtd
+++ b/src/chrome/locale/mg/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/mi/network-settings.dtd b/src/chrome/locale/mi/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/mi/network-settings.dtd
+++ b/src/chrome/locale/mi/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/mk/network-settings.dtd b/src/chrome/locale/mk/network-settings.dtd
index bf9c0d6..925002d 100644
--- a/src/chrome/locale/mk/network-settings.dtd
+++ b/src/chrome/locale/mk/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/ml/network-settings.dtd b/src/chrome/locale/ml/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/ml/network-settings.dtd
+++ b/src/chrome/locale/ml/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/mn/network-settings.dtd b/src/chrome/locale/mn/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/mn/network-settings.dtd
+++ b/src/chrome/locale/mn/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/mr/network-settings.dtd b/src/chrome/locale/mr/network-settings.dtd
index 9771da3..9c522c2 100644
--- a/src/chrome/locale/mr/network-settings.dtd
+++ b/src/chrome/locale/mr/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "जोडा">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/ms-MY/network-settings.dtd b/src/chrome/locale/ms-MY/network-settings.dtd
index e6d2ccc..550189b 100644
--- a/src/chrome/locale/ms-MY/network-settings.dtd
+++ b/src/chrome/locale/ms-MY/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Antara berikut yang manakah terbaik menerangkan keadaan anda?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Konfigurasi">
<!ENTITY torSettings.connectPrompt2 "Saya ingin berhubung terus kepada rangkaian Tor.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Menyambung">
-<!ENTITY torSettings.proxyQuestion "Adakah komputer ini perlu menggunakan proksi untuk mengakses Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Jika anda tidak pasti bagaimana untuk menjawab soalan ini, lihat tetapan Internet dalam pelayar yang lain untuk melihat sama ada ia dikonfigurasi untuk menggunakan proksi.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Masukkan tetapan proksi.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "Komputer ini perlu menggunakan proksi untuk mengakses Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Jenis Proksi:">
<!ENTITY torsettings.useProxy.address "Alamat:">
<!ENTITY torsettings.useProxy.address.placeholder "Alamat IP atau nama host">
diff --git a/src/chrome/locale/mt/network-settings.dtd b/src/chrome/locale/mt/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/mt/network-settings.dtd
+++ b/src/chrome/locale/mt/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/my/network-settings.dtd b/src/chrome/locale/my/network-settings.dtd
index 19ac674..bb51fc8 100644
--- a/src/chrome/locale/my/network-settings.dtd
+++ b/src/chrome/locale/my/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "နေရပ်လိပ်စာ -">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/nah/network-settings.dtd b/src/chrome/locale/nah/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/nah/network-settings.dtd
+++ b/src/chrome/locale/nah/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/nap/network-settings.dtd b/src/chrome/locale/nap/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/nap/network-settings.dtd
+++ b/src/chrome/locale/nap/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/nb/network-settings.dtd b/src/chrome/locale/nb/network-settings.dtd
index 5e45a97..1371170 100644
--- a/src/chrome/locale/nb/network-settings.dtd
+++ b/src/chrome/locale/nb/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Hvilket av følgende beskriver best din situasjon?">
<!ENTITY torSettings.configurePrompt1 "Computeren's internett tilkobling er sensurert eller under proxy.">
-<!ENTITY torSettings.configurePrompt2 "Jeg må konfigurere brdige eller proxy instillinger.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Konfigurer">
<!ENTITY torSettings.connectPrompt2 "Jeg vil koble direkte til Tor-nettverket.">
<!ENTITY torSettings.connectPrompt3 "Dette vil fungere i de fleste situasjoner.">
<!ENTITY torSettings.connect "Koble til">
-<!ENTITY torSettings.proxyQuestion "Må denne datamaskinen bruke en proxy for å få tilgang til Internett?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Hvis du ikke er sikker på hvordan du skal svare på dette spørsmålet, se på Internett-innstillingene i en annen nettleser for å se om den er konfigurert til å bruke en proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Skriv inn proxy-innstillingene.">
<!ENTITY torSettings.bridgeQuestion "Blokkerer eller sensurerer internettleverandøren (ISP) din tilkoblinger til Tor-nettverket?">
<!ENTITY torSettings.bridgeHelp "Hvis du er usikker på hva du skal svare på dette spørsmålet, velg Nei.  Hvis du velger Ja, vil du bli bedt om å konfigurere Tor-broer, som er ulistede reléer som gjør det vanskeligere å blokkere tilkoblinger til Tor-nettverket.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Valgfritt">
-<!ENTITY torsettings.useProxy.checkbox "Denne datamaskinen trenger å bruke en proxy for å få tilgang til Internett.">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxytype:">
<!ENTITY torsettings.useProxy.address "Adresse:">
<!ENTITY torsettings.useProxy.address.placeholder "IP-adresse, eller vertsnavn">
diff --git a/src/chrome/locale/nds/network-settings.dtd b/src/chrome/locale/nds/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/nds/network-settings.dtd
+++ b/src/chrome/locale/nds/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/ne/network-settings.dtd b/src/chrome/locale/ne/network-settings.dtd
index 800a3b5..e1df3b9 100644
--- a/src/chrome/locale/ne/network-settings.dtd
+++ b/src/chrome/locale/ne/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "जडान गर्नुहोस् ">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/nl-BE/network-settings.dtd b/src/chrome/locale/nl-BE/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/nl-BE/network-settings.dtd
+++ b/src/chrome/locale/nl-BE/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/nl/network-settings.dtd b/src/chrome/locale/nl/network-settings.dtd
index ee00a58..3c70721 100644
--- a/src/chrome/locale/nl/network-settings.dtd
+++ b/src/chrome/locale/nl/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Welke van de volgende beschrijft het best jouw situatie?">
<!ENTITY torSettings.configurePrompt1 "De internetverbinding van deze computer is gecensureerd of loopt via een proxy.">
-<!ENTITY torSettings.configurePrompt2 "Ik moet bridge- of proxy instellingen configureren.">
+<!ENTITY torSettings.configurePrompt2 "Ik moet de instellingen van bridge of lokale proxy aanpassen.">
<!ENTITY torSettings.configure "Configureer">
<!ENTITY torSettings.connectPrompt2 "Ik zou graag rechtstreeks met het Tor netwerk verbinden.">
<!ENTITY torSettings.connectPrompt3 "Dit zal in de meeste omstandigheden werken">
<!ENTITY torSettings.connect "Verbind">
-<!ENTITY torSettings.proxyQuestion "Heeft deze computer een proxy nodig om met het internet te verbinden?">
+<!ENTITY torSettings.proxyQuestion "Heeft deze computer een lokale proxy nodig om toegang tot het internet te krijgen?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Als je niet zeker bent over het antwoord op deze vraag, bekijk dan de verbindingsinstellingen van een andere browser om te zien of die is ingesteld om gebruik te maken van een proxy.">
+<!ENTITY torSettings.proxyHelp "Als je niet zeker weet hoe deze vraag te beantwoorden, kijk naar de internet instellingen in een andere browser om te zien of deze is geconfigureerd om een lokale proxy te gebruiken.">
<!ENTITY torSettings.enterProxy "Voer de proxy-instellingen in.">
<!ENTITY torSettings.bridgeQuestion "Doet je Internet Service Provider (ISP) het Tor netwerk verbieden of filteren?">
<!ENTITY torSettings.bridgeHelp "Als je niet zeker weet hoe je deze vraag moet beantwoorden, kies dan Nee.  Als je Ja kiest, moet je Tor bridges instellen, die doordat ze geen bekende relays zijn het dus moeilijker maken om verbinding te maken met het Tor Netwerk. ">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optioneel">
-<!ENTITY torsettings.useProxy.checkbox "Deze computer moet een proxy gebruiken om het internet te raadplegen.">
+<!ENTITY torsettings.useProxy.checkbox "Deze computer heeft een lokale proxy nodig om toegang te krijgen tot het internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Adres:">
<!ENTITY torsettings.useProxy.address.placeholder "IP adres of hostnaam">
diff --git a/src/chrome/locale/nn/network-settings.dtd b/src/chrome/locale/nn/network-settings.dtd
index 8fc9a22..0435757 100644
--- a/src/chrome/locale/nn/network-settings.dtd
+++ b/src/chrome/locale/nn/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "Eg vil kopla til direkte til Tor-nettverket.">
<!ENTITY torSettings.connectPrompt3 "Dette vil fungera i dei fleste høve">
<!ENTITY torSettings.connect "Kopla til">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Skriv inn mellomtenarinnstillingane.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Valfritt">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Mellomtenartype:">
<!ENTITY torsettings.useProxy.address "Addresse:">
<!ENTITY torsettings.useProxy.address.placeholder "IP-adresse eller vertsnamn">
diff --git a/src/chrome/locale/nso/network-settings.dtd b/src/chrome/locale/nso/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/nso/network-settings.dtd
+++ b/src/chrome/locale/nso/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/oc/network-settings.dtd b/src/chrome/locale/oc/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/oc/network-settings.dtd
+++ b/src/chrome/locale/oc/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/or/network-settings.dtd b/src/chrome/locale/or/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/or/network-settings.dtd
+++ b/src/chrome/locale/or/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/pa/network-settings.dtd b/src/chrome/locale/pa/network-settings.dtd
index 3beefe6..e9344c1 100644
--- a/src/chrome/locale/pa/network-settings.dtd
+++ b/src/chrome/locale/pa/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "ਸੰਰਚਨਾ">
<!ENTITY torSettings.connectPrompt2 "ਮੈਂ ਟੋਰ ਨੈੱਟਵਰਕ ਨਾਲ ਸਿੱਧਾ ਕੁਨੈਕਟ ਹੋਣਾ ਚਾਹੁੰਦਾ/ਚਾਹੁੰਦੀ ਹਾਂ।">
<!ENTITY torSettings.connectPrompt3 "ਇਹ ਬਹੁਤੇ ਹਾਲਤਾਂ ਵਿੱਚ ਕੰਮ ਕਰੇਗਾ।">
<!ENTITY torSettings.connect "ਕੁਨੈਕਟ ਕਰੋ">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "ਚੋਣਵਾਂ">
-<!ENTITY torsettings.useProxy.checkbox "ਇਹ ਕੰਪਿਊਟਰ ਨੂੰ ਇੰਟਰਨੈੱਟ ਵਰਤਣ ਲਈ ਪਰਾਕਸੀ ਦੀ ਲੋੜ ਹੈ">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "ਪਰਾਕਸੀ ਕਿਸਮ:">
<!ENTITY torsettings.useProxy.address "ਪਤਾ:">
<!ENTITY torsettings.useProxy.address.placeholder "IP ਸਿਰਨਾਵਾਂ ਜਾਂ ਹੋਸਟ-ਨਾਂ">
diff --git a/src/chrome/locale/pap/network-settings.dtd b/src/chrome/locale/pap/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/pap/network-settings.dtd
+++ b/src/chrome/locale/pap/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/pl/network-settings.dtd b/src/chrome/locale/pl/network-settings.dtd
index 00d3574..f1544f8 100644
--- a/src/chrome/locale/pl/network-settings.dtd
+++ b/src/chrome/locale/pl/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Które z poniższych najlepiej opisuje Twoją sytuację?">
<!ENTITY torSettings.configurePrompt1 "Połączenie internetowe tego komputera jest ocenzurowane lub przepuszczane przez proxy.">
-<!ENTITY torSettings.configurePrompt2 "Muszę skonfigurować most lub ustawienia serwera proxy.">
+<!ENTITY torSettings.configurePrompt2 "Muszę skonfigurować bridge lub lokalne ustawienia proxy.">
<!ENTITY torSettings.configure "Konfiguruj">
<!ENTITY torSettings.connectPrompt2 "Chcę połączyć się bezpośrednio z siecią Tor.">
<!ENTITY torSettings.connectPrompt3 "To zadziała w większości sytuacji.">
<!ENTITY torSettings.connect "Połącz">
-<!ENTITY torSettings.proxyQuestion "Czy ten komputer potrzebuje proxy w celu połączenia się z Internetem?">
+<!ENTITY torSettings.proxyQuestion "Czy ten komputer musi używać lokalnego proxy, aby połączyć się z Internetem?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Jeśli nie jesteś pewny odpowiedzi sprawdź ustawienia internetowe innej przeglądarki, czy jest skonfigurowana do użycia serwera proxy.">
+<!ENTITY torSettings.proxyHelp "Jeśli nie jesteś pewny jak odpowiedzieć na to pytanie, to sprawdź swoje ustawienia internetu w innej przeglądarce, aby zobaczyć czy ma ona skonfigurowane lokalne proxy.">
<!ENTITY torSettings.enterProxy "Wprowadź ustawienia serwera proxy">
<!ENTITY torSettings.bridgeQuestion "Czy Twój dostawca usług internetowych (ISP) blokuje lub cenzuruje połączenia sieci Tor?">
<!ENTITY torSettings.bridgeHelp "Jeśli nie jesteś pewny odpowiedzi na to pytanie proszę wybrać odpowiedź Nie.  Jeśli wybierzesz Tak, to będziesz poproszony o skonfigurowanie mostków Tora, które nie są publicznie wymienione, dzięki czemu będzie trudniej zablokować połączenia do sieci Tor.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "(opcjonalnie)">
-<!ENTITY torsettings.useProxy.checkbox "Ten komputer musi używać proxy w celu połączenia z Internetem">
+<!ENTITY torsettings.useProxy.checkbox "Ten komputer musi używać lokalnego proxy w celu połączenia się z Internetem">
<!ENTITY torsettings.useProxy.type "Typ Proxy:">
<!ENTITY torsettings.useProxy.address "Adres:">
<!ENTITY torsettings.useProxy.address.placeholder "Nazwa hosta lub adres IP">
diff --git a/src/chrome/locale/pms/network-settings.dtd b/src/chrome/locale/pms/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/pms/network-settings.dtd
+++ b/src/chrome/locale/pms/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/ps/network-settings.dtd b/src/chrome/locale/ps/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/ps/network-settings.dtd
+++ b/src/chrome/locale/ps/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/pt-BR/network-settings.dtd b/src/chrome/locale/pt-BR/network-settings.dtd
index 2b673b5..f8dcb26 100644
--- a/src/chrome/locale/pt-BR/network-settings.dtd
+++ b/src/chrome/locale/pt-BR/network-settings.dtd
@@ -8,16 +8,16 @@
<!ENTITY torSettings.no "Não">
<!ENTITY torSettings.firstQuestion "Quais opções descrevem melhor a sua situação?">
-<!ENTITY torSettings.configurePrompt1 "A conexão Internet deste computador foi censurada, filtrada ou limitada por um proxy.">
-<!ENTITY torSettings.configurePrompt2 "Preciso configurar bridge ou configurações de proxy.">
+<!ENTITY torSettings.configurePrompt1 "A conexão à Internet deste computador foi censurada, filtrada ou limitada por um proxy.">
+<!ENTITY torSettings.configurePrompt2 "É preciso configurar as configurações de ponte ou de proxy local.">
<!ENTITY torSettings.configure "Configurar">
<!ENTITY torSettings.connectPrompt2 "Eu gostaria de me conectar diretamente à rede Tor.">
<!ENTITY torSettings.connectPrompt3 "Isso funcionará na maioria dos casos.">
<!ENTITY torSettings.connect "Conectar">
-<!ENTITY torSettings.proxyQuestion "Este computador precisa usar um proxy para acessar a Internet?">
+<!ENTITY torSettings.proxyQuestion "Será se seu computador necessita de um proxy local para acessar a internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Caso você não tenha certeza sobre como responder a essa questão, consulte as configurações de rede em um outro browser para saber se ele está configurado para usar um proxy.">
+<!ENTITY torSettings.proxyHelp "Se você não tem certeza de como responder a esta pergunta, olhe nas configurações de Internet do outro navegador para ver se ele está configurado para usar um proxy local.">
<!ENTITY torSettings.enterProxy "Insira as configurações de proxy.">
<!ENTITY torSettings.bridgeQuestion "Seu provedor de serviços de internet (ISP) bloqueia ou censura conexões à rede Tor?">
<!ENTITY torSettings.bridgeHelp "Se você não estiver seguro sobre como responder a essa questão, escolha Não . Se você escolher Sim, será preciso configurar pontes Tor, que são retransmissores não-listados que dificultam possíveis bloqueios à rede Tor.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Opcional">
-<!ENTITY torsettings.useProxy.checkbox "Este computador precisa utilizar um proxy para acessar a Internet.">
+<!ENTITY torsettings.useProxy.checkbox "Neste computador é necessario usar um proxy local para acessar a Internet">
<!ENTITY torsettings.useProxy.type "Tipo de Proxy:">
<!ENTITY torsettings.useProxy.address "Endereço:">
<!ENTITY torsettings.useProxy.address.placeholder "Endereço IP ou Servidor">
diff --git a/src/chrome/locale/pt/network-settings.dtd b/src/chrome/locale/pt/network-settings.dtd
index 6a469ec..68cf442 100644
--- a/src/chrome/locale/pt/network-settings.dtd
+++ b/src/chrome/locale/pt/network-settings.dtd
@@ -1,62 +1,62 @@
-<!ENTITY torsettings.dialog.title "Definições da rede Tor">
+<!ENTITY torsettings.dialog.title "Configurações da Rede Tor">
<!-- For "first run" wizard: -->
-<!ENTITY torsettings.prompt "Antes de se ligar à rede Tor precisa de fornecer informações sobre a ligação deste computador à Internet.">
+<!ENTITY torsettings.prompt "Antes de se ligar à rede Tor, precisa de fornecer informação sobre a ligação deste computador à Internet.">
<!ENTITY torSettings.yes "Sim">
<!ENTITY torSettings.no "Não">
<!ENTITY torSettings.firstQuestion "Qual das seguintes frases melhor descreve a sua situação?">
-<!ENTITY torSettings.configurePrompt1 "Esta ligação à Internet está censurada ou é através de um proxy.">
-<!ENTITY torSettings.configurePrompt2 "Preciso de configurar a ponte ou as definições de proxy.">
+<!ENTITY torSettings.configurePrompt1 "Esta ligação à Internet deste computador está censurada ou é efetuada via proxy.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configurar">
-<!ENTITY torSettings.connectPrompt2 "Gostaria de me ligar diretamente à rede Tor.">
+<!ENTITY torSettings.connectPrompt2 "Eu gostaria de me ligar diretamente à rede Tor.">
<!ENTITY torSettings.connectPrompt3 "Isto funciona na maior parte das situações.">
<!ENTITY torSettings.connect "Ligar">
-<!ENTITY torSettings.proxyQuestion "Este computador precisa de usar uma proxy para aceder a Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Se não tem a certeza de como responder esta questão, olhe para as definições de Internet noutro navegador para ver se está configurado para usar um proxy.">
-<!ENTITY torSettings.enterProxy "Introduza as definições de proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
+<!ENTITY torSettings.enterProxy "Insira as definições do proxy.">
<!ENTITY torSettings.bridgeQuestion "O seu fornecedor de serviços de internet bloqueia ou censura ligações à rede Tor ?">
<!ENTITY torSettings.bridgeHelp "Se não tem a certeza de como responder a esta questão, escolha o Nº.  Se escolher Sim, vai-lhe ser pedido para configurar as Tor Bridges, que são pontos de passagem não listados mais difíceis de bloquear ligações à rede Tor.">
<!ENTITY torSettings.bridgeSettingsPrompt "Pode usar o conjunto de bridges pré-configurado fornecido, ou pode obter um conjunto de bridges personalizadas.">
<!-- Other: -->
-<!ENTITY torsettings.startingTor "À espera que o Tor inicie...">
+<!ENTITY torsettings.startingTor "A aguardar que o Tor inicie...">
<!ENTITY torsettings.restartTor "Reiniciar o Tor">
<!ENTITY torsettings.optional "Opcional">
-<!ENTITY torsettings.useProxy.checkbox "Este computador precisa de usar uma proxy para aceder à Internet.">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Tipo de Proxy:">
<!ENTITY torsettings.useProxy.address "Endereço:">
-<!ENTITY torsettings.useProxy.address.placeholder "Endereço IP ou nome de anfitrião">
-<!ENTITY torsettings.useProxy.port "Porto:">
+<!ENTITY torsettings.useProxy.address.placeholder "Endereço de IP ou nome do anfitrião">
+<!ENTITY torsettings.useProxy.port "Porta:">
<!ENTITY torsettings.useProxy.username "Nome do utilizador:">
-<!ENTITY torsettings.useProxy.password "Palavra-Chave:">
+<!ENTITY torsettings.useProxy.password "Palavra-chave:">
<!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 está protegido por um firewall que permite apenas algumas ligações a alguns portos.">
-<!ENTITY torsettings.firewall.allowedPorts "Portos permitidos:">
+<!ENTITY torsettings.firewall.allowedPorts "Portas permitidas:">
<!ENTITY torsettings.useBridges.checkbox "O meu Internet Service Provider (ISP) bloqueia ligações à rede Tor">
<!ENTITY torsettings.useBridges.default "Ligar com as bridges fornecidas">
<!ENTITY torsettings.useBridges.type "Tipo de transporte:">
-<!ENTITY torsettings.useBridges.custom "Introduza bridges personalizadas">
-<!ENTITY torsettings.useBridges.label "Introduza um ou mais relays bridge (um por linha).">
-<!ENTITY torsettings.useBridges.placeholder "escreva endereço:porto">
+<!ENTITY torsettings.useBridges.custom "Insira as pontes personalizadas">
+<!ENTITY torsettings.useBridges.label "Insira um ou mais relays de ponte (um por linha).">
+<!ENTITY torsettings.useBridges.placeholder "digite endereço:porta">
-<!ENTITY torsettings.copyLog "Copiar o log Tor para a Área de Transferência">
-<!ENTITY torsettings.bridgeHelpTitle "Ajuda Bridge Relay">
+<!ENTITY torsettings.copyLog "Copiar o Registo do Tor para a Área de Transferência">
+<!ENTITY torsettings.bridgeHelpTitle "Ajuda da Relay da Ponte">
<!ENTITY torsettings.bridgeHelp1 "Se não consegue ligar-se à rede Tor, pode ser devido a algum bloqueio do seu provedor de internet (ISP) ou outro intermediário está a bloquear o Tor.  Normalmente, pode contornar este problema usando Tor Bridges, que são pontos de passagem não listados mais difíceis de bloquear.">
<!ENTITY torsettings.bridgeHelp1B "Pode usar o conjunto de bridges pré-configurado fornecido, ou pode obter um conjunto de endereços personalizados usando um dos três métodos:">
-<!ENTITY torsettings.bridgeHelp2Heading "Pela rede">
-<!ENTITY torsettings.bridgeHelp2 "Use um navegador internet para visitar https://bridges.torproject.org">
-<!ENTITY torsettings.bridgeHelp3Heading "Pelo respondedor de email automático">
+<!ENTITY torsettings.bridgeHelp2Heading "Através da Web">
+<!ENTITY torsettings.bridgeHelp2 "Utilize um navegador da Web para visitar https://bridges.torproject.org">
+<!ENTITY torsettings.bridgeHelp3Heading "Através do Respondedor de Correio Eletrónico Automático">
<!ENTITY torsettings.bridgeHelp3.emailDesc "Enviar mensagem para bridges(a)torproject.org com a linha 'get bridges' sozinha no corpo da mensagem.  Contudo, para tornar mais difícil para os atacantes aprenderem sobre os endereços de pontes, tem de enviar a mensagem de um dos seguintes fornecedores de serviços de correio eletrónico (por esta ordem de preferência):">
<!ENTITY torsettings.bridgeHelp3.emailList "https://www.riseup.net, https://mail.google.com, ou https://mail.yahoo.com">
-<!ENTITY torsettings.bridgeHelp4Heading "Pelo Helpdesk">
+<!ENTITY torsettings.bridgeHelp4Heading "Através do Suporte">
<!ENTITY torsettings.bridgeHelp4 "Em último caso, pode pedir endereços bridge enviando um email cordial para help(a)rt.torproject.org.  Por favor tenha em conta que cada pedido será respondido por uma pessoa.">
diff --git a/src/chrome/locale/ro/network-settings.dtd b/src/chrome/locale/ro/network-settings.dtd
index 2c6d361..d5f4ea3 100644
--- a/src/chrome/locale/ro/network-settings.dtd
+++ b/src/chrome/locale/ro/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Care din următoarele descrie cel mai bine situația dvs?">
<!ENTITY torSettings.configurePrompt1 "Această conexiune la internet a computerului este cenzurată sau prin proxy.">
-<!ENTITY torSettings.configurePrompt2 "Trebuie să configurez puntea sau configurări proxy.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configuraţi ">
<!ENTITY torSettings.connectPrompt2 "Vreau sa ma conectez direct la reţeaua Tor .">
<!ENTITY torSettings.connectPrompt3 "Aceasta funcționează în cele mai multe situații.">
<!ENTITY torSettings.connect "Conectare">
-<!ENTITY torSettings.proxyQuestion "Computerul dumneavoastră are nevoie de un proxy sa acceseze Internet-ul ?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Dacă nu sînteți siguri cum să răspundeți la întrebarea aceasta, uitați-vă la setările de Internet din alt browser pentru a vedea dacă este configurat să folosească un proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Introduceţi setările pentru proxy .">
<!ENTITY torSettings.bridgeQuestion "Internet Service Providerul (ISP) dvs blochează sau cenzurează conexiunile către rețeaua Tor?">
<!ENTITY torSettings.bridgeHelp "Dacă nu sînteți sigur cum să răspundeți la această întrebare, alegeți Nu.  Dacă alegeți Da, vi se va cere să configurați punțile Tor, care sînt relayuri nelistate care fac mai dificilă blocarea conexiunilor la rețeaua Tor.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Opțional">
-<!ENTITY torsettings.useProxy.checkbox "Acest computer are nevoie să folosească un proxy pentru a accesa Internetul">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Tip proxy:">
<!ENTITY torsettings.useProxy.address "Adresă:">
<!ENTITY torsettings.useProxy.address.placeholder "Adresă IP sau hostname">
diff --git a/src/chrome/locale/ru/network-settings.dtd b/src/chrome/locale/ru/network-settings.dtd
index 3d6bde5..a4fd432 100644
--- a/src/chrome/locale/ru/network-settings.dtd
+++ b/src/chrome/locale/ru/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Что лучше описывает вашу ситуацию?">
<!ENTITY torSettings.configurePrompt1 "Интернет-соединение этого компьютера цензурируется или находится за прокси.">
-<!ENTITY torSettings.configurePrompt2 "Мне требуется настроить мост или прокси.">
+<!ENTITY torSettings.configurePrompt2 "Мне необходимо сконфигурировать настройки моста или локального прокси">
<!ENTITY torSettings.configure "Настроить">
<!ENTITY torSettings.connectPrompt2 "Я бы хотел соединиться с сетью Tor напрямую.">
<!ENTITY torSettings.connectPrompt3 "Это должно работать в большинстве ситуаций.">
<!ENTITY torSettings.connect "Соединиться">
-<!ENTITY torSettings.proxyQuestion "Этому компьютеру нужен прокси для доступа в Интернет?">
+<!ENTITY torSettings.proxyQuestion "Требуется ли этому компьютеру локальный прокси для доступа к Интернету?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Если вы не знаете как отвечать, посмотрите в настройки другого браузера - прописан ли там прокси.">
+<!ENTITY torSettings.proxyHelp "Если Вы не уверены в ответе на этот вопрос, посмотрите настройки Интернета в другом браузере, чтобы проверить, настроен ли он для использования локального прокси.">
<!ENTITY torSettings.enterProxy "Введите настройки прокси.">
<!ENTITY torSettings.bridgeQuestion "Ваш провайдер (ISP) блокирует или как-либо цензурирует подключения к сети Tor?">
<!ENTITY torSettings.bridgeHelp "Если вы не знаете, как ответить на этот вопрос, выбирайте Нет.  Если вы выберете Да, вас попросят настроить мосты Tor, которые являются неопубликованными маршрутизаторами, что затрудняет их блокировку.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Необязательно">
-<!ENTITY torsettings.useProxy.checkbox "Этому компьютеру нужен прокси для доступа в Интернет">
+<!ENTITY torsettings.useProxy.checkbox "Этому компьютеру нужен локальный прокси для доступа в Интернет">
<!ENTITY torsettings.useProxy.type "Тип Прокси:">
<!ENTITY torsettings.useProxy.address "Адрес:">
<!ENTITY torsettings.useProxy.address.placeholder "IP адрес или имя узла">
diff --git a/src/chrome/locale/ru/torlauncher.properties b/src/chrome/locale/ru/torlauncher.properties
index 127e367..0b68b18 100644
--- a/src/chrome/locale/ru/torlauncher.properties
+++ b/src/chrome/locale/ru/torlauncher.properties
@@ -3,7 +3,7 @@
torlauncher.error_title=Загрузчик Tor
-torlauncher.tor_exited=Tor неожидано завершил работу. Это может быть вызвано сбоем в самом Tor, другой программой на вашем компьютере или его неисправностью. Пока Tor не будет перезапущен, веб-страницы через Tor Browser будут недоступны. Если проблема не устраняется, пожалуйста, отправьте копию ваших логов Tor нашей команде поддержки.
+torlauncher.tor_exited=Tor неожиданно завершил работу. Это могло быть вызвано сбоем в самом Tor, другой программой или неисправностью компьютера. Пока Tor не будет перезапущен, просмотр веб-страниц через Tor Browser недоступен. Если проблема не устраняется, пожалуйста, отправьте копию ваших логов Tor нашей команде поддержки.
torlauncher.tor_exited2=Перезапуск Тор не закроет вкладки браузера.
torlauncher.tor_controlconn_failed=Невозможно соединиться с портом управления Tor.
torlauncher.tor_failed_to_start=Невозможно запустить Tor.
@@ -19,7 +19,7 @@ torlauncher.password_hash_missing=Не удаётся получить хэши
torlauncher.failed_to_get_settings=Не удаётся загрузить настройки Tor.\n\n%S
torlauncher.failed_to_save_settings=Не удаётся сохранить настройки Tor.\n\n%S
-torlauncher.ensure_tor_is_running=Убедитесь что Tor запущен.
+torlauncher.ensure_tor_is_running=Убедитесь, что Tor запущен.
torlauncher.error_proxy_addr_missing=Вы должны указать IP-адрес или имя хоста и порт, чтобы настроить Tor и использовать прокси для доступа в Интернет.
torlauncher.error_proxy_type_missing=Необходимо выбрать тип прокси.
@@ -37,7 +37,7 @@ torlauncher.done=Готово
torlauncher.forAssistance=Для помощи свяжитесь с %S
-torlauncher.copiedNLogMessages=Копирование завершено. %S собщение с логами Tor находятся в буфере обмена и могут быть вставлены в текстовый редактор или имейл.
+torlauncher.copiedNLogMessages=Копирование завершено. %S собщение с логами Tor находятся в буфере обмена и могут быть вставлены в текстовый редактор или email.
torlauncher.bootstrapStatus.conn_dir=Подключение к каталогy ретрансляторов
torlauncher.bootstrapStatus.handshake_dir=Создание шифрованного соединения каталогa
@@ -55,7 +55,7 @@ torlauncher.bootstrapWarning.connectrefused=в подключении отказ
torlauncher.bootstrapWarning.misc=pазное
torlauncher.bootstrapWarning.resourcelimit=нехватка ресурсов
torlauncher.bootstrapWarning.identity=несоответствие идентификации
-torlauncher.bootstrapWarning.timeout=Тайм-аут соединения
+torlauncher.bootstrapWarning.timeout=тайм-аут соединения
torlauncher.bootstrapWarning.noroute=не указан путь к хосту
torlauncher.bootstrapWarning.ioerror=ошибка чтения / записи
torlauncher.bootstrapWarning.pt_missing=отсутствует подключаемый транспорт
diff --git a/src/chrome/locale/ru(a)petr1708/network-settings.dtd b/src/chrome/locale/ru(a)petr1708/network-settings.dtd
index 1e4c8b2..31adbbd 100644
--- a/src/chrome/locale/ru(a)petr1708/network-settings.dtd
+++ b/src/chrome/locale/ru(a)petr1708/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Адрес:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/sco/network-settings.dtd b/src/chrome/locale/sco/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/sco/network-settings.dtd
+++ b/src/chrome/locale/sco/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/si-LK/network-settings.dtd b/src/chrome/locale/si-LK/network-settings.dtd
index 6312948..6530918 100644
--- a/src/chrome/locale/si-LK/network-settings.dtd
+++ b/src/chrome/locale/si-LK/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "පහත සදහන් කුමක් ඔබගේ තත්ත්වය හොදින්ම විස්තර කරයිද?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "වින්යාස කරන්න">
<!ENTITY torSettings.connectPrompt2 "මම ඍජුවම Tor ජාලය හා සම්බන්ධ වීමට කැමතිය.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "සම්බන්ධ වෙන්න">
-<!ENTITY torSettings.proxyQuestion "මෙම පරිගණකයට අන්තර්ජාලය හා සම්බන්ධ වීමට නියුතු සේවාදායකයෙක් අවශ්යද?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "ඔබට මෙම ප්රශ්නයට පිළිතුරු දෙන්නේ කෙසේද යන්න විශ්වාස නැත්නම්, වෙනත් browser එකක අන්තජාල සැකසුම් නියුතු සේවාදායකයෙක් සදහා වින්යාස කර ඇත්දැයි බලන්න">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "නියුතු සේවාදායක සැකසුම් ඇතුළත් කරන්න">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "අමතර">
-<!ENTITY torsettings.useProxy.checkbox "මෙම පරිගණකය අන්තර්ජාලයට පිවිසීමට නියුතු සේවාදායකයෙක් අවශ්ය වේ.">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "නියුතු සේවාදායක වර්ගය:">
<!ENTITY torsettings.useProxy.address "ලිපිනය:">
<!ENTITY torsettings.useProxy.address.placeholder "IP ලිපිනය හෝ සත්කාරක නාමය">
diff --git a/src/chrome/locale/sk-SK/network-settings.dtd b/src/chrome/locale/sk-SK/network-settings.dtd
index 10ddb55..2ba5075 100644
--- a/src/chrome/locale/sk-SK/network-settings.dtd
+++ b/src/chrome/locale/sk-SK/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Ktorá z nasledujúcich situácií najlepšie popisuje vašu?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Konfigurovať">
<!ENTITY torSettings.connectPrompt2 "Rád by som sa pripojil priamo do siete Tor.">
<!ENTITY torSettings.connectPrompt3 "Toto by vo väčšine prípadov malo fungovať.">
<!ENTITY torSettings.connect "Pripojiť">
-<!ENTITY torSettings.proxyQuestion "Potrebuje tento počítač použiť proxy pre prístup na internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Ak si nie ste istý odpoveďou na túto otázku, skontrolujte nastavenia Internetu v inom prehliadači, aby ste zistili, či je nastavený pre použitie proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Zadajte nastavenia proxy.">
<!ENTITY torSettings.bridgeQuestion "Blokuje váš poskytovateľ internetového pripojenia (ISP) alebo inak cenzuruje pripojenia do siete Tor Network?">
<!ENTITY torSettings.bridgeHelp "Ak si nie ste istí, ako odpovedať, zvoľte Nie.  Ak zvolíte Áno, bude potrebné nakonfigurovať Tor Bridges, čo sú nikde nezapísané relé, použitie ktorých robí blokovanie pripojenia do Tor Network ešte obtiažnejším.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Voliteľné">
-<!ENTITY torsettings.useProxy.checkbox "Tento počítač potrebuje pre prístup na Internet použiť proxy">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Typ proxy:">
<!ENTITY torsettings.useProxy.address "Adresa:">
<!ENTITY torsettings.useProxy.address.placeholder "IP adresa alebo názov hostiteľa">
diff --git a/src/chrome/locale/sk/network-settings.dtd b/src/chrome/locale/sk/network-settings.dtd
index 2559233..d58d1fb 100644
--- a/src/chrome/locale/sk/network-settings.dtd
+++ b/src/chrome/locale/sk/network-settings.dtd
@@ -8,16 +8,16 @@
<!ENTITY torSettings.no "Nie">
<!ENTITY torSettings.firstQuestion "Ktoré z nasledujúcich možností najlepšie opisuje Vašu situáciu?">
-<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt1 "Pripojenie tohto počítača k Internetu je cenzurované, filtrované alebo sprostredkovávané.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Konfigurácia">
<!ENTITY torSettings.connectPrompt2 "Chcem sa pripojiť priamo do siete Tor.">
<!ENTITY torSettings.connectPrompt3 "Toto bude vo väčšine prípadov fungovať.">
<!ENTITY torSettings.connect "Pripojiť">
-<!ENTITY torSettings.proxyQuestion "Potrebuje tento počítač použiť proxy na prístup k Internetu?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Ak si nieste istý ako odpovedať na túto otázku, pozrite sa či máte nastavené používanie proxy v inom Internetovom prehliadači.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Vstúpiť do nastavení proxy.">
<!ENTITY torSettings.bridgeQuestion "Blokuje alebo nejak cenzuruje váš Poskytovateľ Internetu (ISP) pripojenia k Sieti Tor?">
<!ENTITY torSettings.bridgeHelp "Ak ste si nie istý ako zodpovedať túto otázku, zvoľte Nie.  Ak zvolíte Áno, budete vyzvaný na konfiguráciu Mostov Toru, čo sú nezaradené relé značne sťažujúce blokovanie pripojení k Sieti Tor.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Voliteľné">
-<!ENTITY torsettings.useProxy.checkbox "Tento počítač potrebuje použiť proxy na prístup k Internetu">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Typ Proxy:">
<!ENTITY torsettings.useProxy.address "Adresa:">
<!ENTITY torsettings.useProxy.address.placeholder "IP adresa alebo názov hostiteľa">
@@ -56,7 +56,7 @@
<!ENTITY torsettings.bridgeHelp2Heading "Cez Web">
<!ENTITY torsettings.bridgeHelp2 "Použite webový prehliadač na navštívenie https://bridges.torproject.org">
<!ENTITY torsettings.bridgeHelp3Heading "Cez Email Autoresponder">
-<!ENTITY torsettings.bridgeHelp3.emailDesc "Send email to bridges(a)torproject.org with the line 'get bridges' by itself in the body of the message.  However, to make it harder for an attacker to learn a lot of bridge addresses, you must send this request from one of the following email providers (listed in order of preference):">
-<!ENTITY torsettings.bridgeHelp3.emailList "https://www.riseup.net, https://mail.google.com, or https://mail.yahoo.com">
+<!ENTITY torsettings.bridgeHelp3.emailDesc "Pošlite email na adresu bridges(a)torproject.org obsahujúcu jeden riadok 'get bridges' ako telo správy.  Avšak, aby bolo pre útočníkov náročnejšie odhaliť veľa mostových adries, musíte túto žiadosť poslať z adresy z jedných týchto poskytovateľov (zoradené podľa obľúbenosti ):">
+<!ENTITY torsettings.bridgeHelp3.emailList "https://www.riseup.net, https://mail.google.com, alebo https://mail.yahoo.com">
<!ENTITY torsettings.bridgeHelp4Heading "Cez Help Desk">
<!ENTITY torsettings.bridgeHelp4 "Ako poslednú možnosť si môžete vyžiadať adresy mostov zaslaním zdvorilého emailu na adresu help(a)rt.torproject.org.  Prosíme berte na vedomie, že príslušná osoba musí odpovedať na každú jednu podobnú žiadosť.">
diff --git a/src/chrome/locale/sl-SI/network-settings.dtd b/src/chrome/locale/sl-SI/network-settings.dtd
index 6448004..c88a314 100644
--- a/src/chrome/locale/sl-SI/network-settings.dtd
+++ b/src/chrome/locale/sl-SI/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Kaj od sledečega najbolj ustzrezno opisuje vašo situacijo?">
<!ENTITY torSettings.configurePrompt1 "Ta računalniška internet povezava je cenzurirana ali neposredna.">
-<!ENTITY torSettings.configurePrompt2 "Nastaviti moram premostitev ali nastavitev proxi-ja.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Oblikovanje">
<!ENTITY torSettings.connectPrompt2 "Hočem se neposredno povezati na Tor omrežje.">
<!ENTITY torSettings.connectPrompt3 "To deluje v večini primerov.">
<!ENTITY torSettings.connect "Povezava">
-<!ENTITY torSettings.proxyQuestion "Ali ta računalnik rabi proxy za vstop na internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Če niste prepričani za odgovor, poglejte internetne nastavitve v drugem brskalniku, da vidite, ali je nastavljen tako, da uporabljate proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Vnesite nastavitve strežnika proxy.">
<!ENTITY torSettings.bridgeQuestion "Ali vaš internetni ponudnik (ISP) blokira ali kako drugače cenzurira povezavo na Tor omrežje?">
<!ENTITY torSettings.bridgeHelp "Če niste prepričani kako odgovoriti na to vprašanje, izberite Ne.  Če ste izbrali Da, boste morali nastaviti Tor premostitve na nenašteta vozlišča, za težje blokiranje povezave na Tor omrežje.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Po izbiri">
-<!ENTITY torsettings.useProxy.checkbox "Računalnik rabi uporabo proxy-ja za dostop na internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy tip:">
<!ENTITY torsettings.useProxy.address "Naslov:">
<!ENTITY torsettings.useProxy.address.placeholder "IP naslov ali ime domene">
diff --git a/src/chrome/locale/sl/network-settings.dtd b/src/chrome/locale/sl/network-settings.dtd
index 6f3da1a..d12264d 100644
--- a/src/chrome/locale/sl/network-settings.dtd
+++ b/src/chrome/locale/sl/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Poveži">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/sn/network-settings.dtd b/src/chrome/locale/sn/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/sn/network-settings.dtd
+++ b/src/chrome/locale/sn/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/so/network-settings.dtd b/src/chrome/locale/so/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/so/network-settings.dtd
+++ b/src/chrome/locale/so/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/son/network-settings.dtd b/src/chrome/locale/son/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/son/network-settings.dtd
+++ b/src/chrome/locale/son/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/sq/network-settings.dtd b/src/chrome/locale/sq/network-settings.dtd
index 89b8a33..d8eafe3 100644
--- a/src/chrome/locale/sq/network-settings.dtd
+++ b/src/chrome/locale/sq/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Cila nga këto i përshtatet më shumë situatës tuaj aktuale?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Konfiguro">
<!ENTITY torSettings.connectPrompt2 "Do të dëshiroja të lidhesha direkt me rrjetin Tor.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Lidhu">
-<!ENTITY torSettings.proxyQuestion "A i nevojitet këtij kompjuteri një përfaqësues 'proxy' për të hyrë në internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Nëse nuk jeni i sigurt si ti përgjigjeni kësaj pyetjeje, shikoni parametrat e internetit në një shfletues tjetër të këtij kompjuteri për të parë nëse është konfiguruar që të përdorë përfaqësues 'proxy'.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Jepni parametrat e përfaqësimit 'proxy'.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Fakultativ">
-<!ENTITY torsettings.useProxy.checkbox "Ky kompjuter duhet të përdorë një përfaqësues 'proxy' për të hyrë në internet.">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Tipi i përfaqësuesit:">
<!ENTITY torsettings.useProxy.address "Adresa:">
<!ENTITY torsettings.useProxy.address.placeholder "Adresa IP ose emri i pritësit">
diff --git a/src/chrome/locale/sr/network-settings.dtd b/src/chrome/locale/sr/network-settings.dtd
index ed1ea8b..4c14d3d 100644
--- a/src/chrome/locale/sr/network-settings.dtd
+++ b/src/chrome/locale/sr/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Шта од понуђеног најбоље описује Вашу ситуацију?">
<!ENTITY torSettings.configurePrompt1 "Интернет конекција овог рачунара је цензурисана или посредована.">
-<!ENTITY torSettings.configurePrompt2 "Требало би да конфигуришем подешавања премошћивача или proxy.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Конфигуриши">
<!ENTITY torSettings.connectPrompt2 "Желео бих да се повежем директно на Тор мрежу.">
<!ENTITY torSettings.connectPrompt3 "Ово ће радити у већини ситуација.">
<!ENTITY torSettings.connect "Повежи се">
-<!ENTITY torSettings.proxyQuestion "Да ли овај рачунар мора да користи посредника да би приступио интернету?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Ако нисте сигурни како да одговорите на ово питање, погледајте интернет подешавања у другом прегледачу да видите да ли је подешен да користи proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Унесите proxy подешавања.">
<!ENTITY torSettings.bridgeQuestion "Да ли Ваш интернет сервис провајдер (ИСП) блокира или на неки други начин цензурише повезивање на Тор мрежу?">
<!ENTITY torSettings.bridgeHelp "Ако нисте сигурни како да одговорите на ово питање, изаберите Не.  Ако изаберете Да, бићете замољени да подесите Тор Премошћиваче, који су неизлистани преносници чија је улога да отежавају блокирање повезивања на Тор мрежу.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Опционо">
-<!ENTITY torsettings.useProxy.checkbox "Овај рачунар мора да користи proxy да би приступио интернету.">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Врста proxyja:">
<!ENTITY torsettings.useProxy.address "Adresa:">
<!ENTITY torsettings.useProxy.address.placeholder "IP адреса или hostname">
diff --git a/src/chrome/locale/sr/torlauncher.properties b/src/chrome/locale/sr/torlauncher.properties
index 9b0e52c..d714f9a 100644
--- a/src/chrome/locale/sr/torlauncher.properties
+++ b/src/chrome/locale/sr/torlauncher.properties
@@ -58,4 +58,4 @@ torlauncher.bootstrapWarning.identity=идентитет неусклађен
torlauncher.bootstrapWarning.timeout=веза је истекла
torlauncher.bootstrapWarning.noroute=нема путање до сервера
torlauncher.bootstrapWarning.ioerror=грешка при писању/читању
-torlauncher.bootstrapWarning.pt_missing=missing pluggable transport
+torlauncher.bootstrapWarning.pt_missing=Недостаје прикључујући транспорт
diff --git a/src/chrome/locale/sr(a)latin/network-settings.dtd b/src/chrome/locale/sr(a)latin/network-settings.dtd
index 840c452..ec16b2b 100644
--- a/src/chrome/locale/sr(a)latin/network-settings.dtd
+++ b/src/chrome/locale/sr(a)latin/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/st/network-settings.dtd b/src/chrome/locale/st/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/st/network-settings.dtd
+++ b/src/chrome/locale/st/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/su/network-settings.dtd b/src/chrome/locale/su/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/su/network-settings.dtd
+++ b/src/chrome/locale/su/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/sv/network-settings.dtd b/src/chrome/locale/sv/network-settings.dtd
index f80c728..311f336 100644
--- a/src/chrome/locale/sv/network-settings.dtd
+++ b/src/chrome/locale/sv/network-settings.dtd
@@ -15,9 +15,9 @@
<!ENTITY torSettings.connectPrompt3 "Detta fungerar i de flesta situationer.">
<!ENTITY torSettings.connect "Anslut">
-<!ENTITY torSettings.proxyQuestion "Behöver denna dator använda en proxy för att nå Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Om du är osäker på hur du ska svara på denna fråga, titta efter i Internet-inställningarna i en annan webbläsare för att se om den är konfigurerad att använda en proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Ange proxyinställningarna.">
<!ENTITY torSettings.bridgeQuestion "Blockerar eller censurerar din internetleverantör anslutningar till Tor-nätverket?">
<!ENTITY torSettings.bridgeHelp "Om du är osäker på hur du ska svara på den här frågan, välj Nej.  Om du väljer Ja kommer du ombes att konfigurera Tor-bryggor, vilka är olistade reläer som gör det svårare att blockera anslutningar till Tor-nätverket.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Valfri">
-<!ENTITY torsettings.useProxy.checkbox "Denna dator måste använda en proxy för att nå Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Typ av proxy:">
<!ENTITY torsettings.useProxy.address "Adress:">
<!ENTITY torsettings.useProxy.address.placeholder "IP-adress eller värdnamn">
diff --git a/src/chrome/locale/sw/network-settings.dtd b/src/chrome/locale/sw/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/sw/network-settings.dtd
+++ b/src/chrome/locale/sw/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/szl/network-settings.dtd b/src/chrome/locale/szl/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/szl/network-settings.dtd
+++ b/src/chrome/locale/szl/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/ta/network-settings.dtd b/src/chrome/locale/ta/network-settings.dtd
index 10b38ab..0cbf329 100644
--- a/src/chrome/locale/ta/network-settings.dtd
+++ b/src/chrome/locale/ta/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "கட்டமைக்க">
<!ENTITY torSettings.connectPrompt2 "நான் Tor வலையமைப்பில் நேரடியாக இணைக்க விரும்புகிறேன்.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "இணைக்க">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "விருப்பத்தேர்வு">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "முகவரி:">
<!ENTITY torsettings.useProxy.address.placeholder "IP முகவரி அல்லது ஹோஸ்ட்பெயர்">
diff --git a/src/chrome/locale/ta/progress.dtd b/src/chrome/locale/ta/progress.dtd
index 65d384d..b8570e4 100644
--- a/src/chrome/locale/ta/progress.dtd
+++ b/src/chrome/locale/ta/progress.dtd
@@ -1,4 +1,4 @@
<!ENTITY torprogress.dialog.title "Tor நிலைமை">
-<!ENTITY torprogress.openSettings "திறந்த அமைப்புகள்">
+<!ENTITY torprogress.openSettings "அமைப்புக்களை திற">
<!ENTITY torprogress.heading "Tor நெட்வொர்க்கிற்கு இணைக்கிறது">
-<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.">
+<!ENTITY torprogress.pleaseWait "தயவு செய்து பொறுக்கவும், Tor நெட்வொர்க்கிற்கு இணைப்பு தொடர்தாபிக்கப்படுகிறது.">
diff --git a/src/chrome/locale/te-IN/network-settings.dtd b/src/chrome/locale/te-IN/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/te-IN/network-settings.dtd
+++ b/src/chrome/locale/te-IN/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/te/network-settings.dtd b/src/chrome/locale/te/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/te/network-settings.dtd
+++ b/src/chrome/locale/te/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/tg/network-settings.dtd b/src/chrome/locale/tg/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/tg/network-settings.dtd
+++ b/src/chrome/locale/tg/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/th/network-settings.dtd b/src/chrome/locale/th/network-settings.dtd
index 2001827..9781695 100644
--- a/src/chrome/locale/th/network-settings.dtd
+++ b/src/chrome/locale/th/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "สิ่งต่อไปนี้อันไหนบ้างที่บรรยายลักษณะสถานการณ์ของคุณ">
<!ENTITY torSettings.configurePrompt1 "การเชื่อมต่ออินเตอร์เน็ตของคอมพิวเตอร์เครื่องนี้ถูกตรวจสอบหรือมีการใช้พร็อกซี่">
-<!ENTITY torSettings.configurePrompt2 "ฉันต้องการตั้งค่าบริดจ์หรือพร็อกซี่">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "ปรับแต่ง">
<!ENTITY torSettings.connectPrompt2 "ฉันอยากจะเชื่อมต่อโดยตรงกับเครือข่าย Tor">
<!ENTITY torSettings.connectPrompt3 "นี่จะทำงานในสถานการณ์ส่วนใหญ่">
<!ENTITY torSettings.connect "เชื่อมต่อ">
-<!ENTITY torSettings.proxyQuestion "คอมพิวเตอร์เครื่องนี้จำเป็นต้องใช้พร็อกซีเพื่อเข้าถึงอินเทอร์เน็ตหรือไม่?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "ถ้าคุณไม่แน่ใจว่าจะตอบคำถามนี้ยังไง ให้ดูค่าติดตั้งอินเทอร์เน็ตในโปรแกรมอื่นๆว่าถูกตั้งค่าให้ใช้พร็อกซีหรือไม่">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "ใส่ค่าติดตั้งพร็อกซี">
<!ENTITY torSettings.bridgeQuestion "ผู้ให้บริการอินเตอร์เน็ต (ISP) ของคุณปิดกั้นหรือคัดกรองการเชื่อมต่อไปยังเครือข่าย Tor หรือไม่?">
<!ENTITY torSettings.bridgeHelp "ถ้าคุณไม่แน่ใจ ตอบไม่  ถ้าคุณตอบใช่ คุณจะต้องตั้งค่า Tor Bridge ซึ่งเป็นรีเลย์ที่ไม่ถูกลิสต์ไว้และช่วยให้เป็นไปได้ยากขึ้นที่จะปิดกั้นการเชื่อมต่อไปยังเครือข่าย Tor">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "ตัวเลือก">
-<!ENTITY torsettings.useProxy.checkbox "คอมพิวเตอร์เครื่องนี้จำเป็นต้องใข้พร็อกซีเพื่อเข้าถึงอินเทอร์เน็ต">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "ชนิดพร็อกซี:">
<!ENTITY torsettings.useProxy.address "ที่อยู่:">
<!ENTITY torsettings.useProxy.address.placeholder "ที่อยู่ IP หรือชื่อโฮสต์">
diff --git a/src/chrome/locale/ti/network-settings.dtd b/src/chrome/locale/ti/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/ti/network-settings.dtd
+++ b/src/chrome/locale/ti/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/tk/network-settings.dtd b/src/chrome/locale/tk/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/tk/network-settings.dtd
+++ b/src/chrome/locale/tk/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/tr/network-settings.dtd b/src/chrome/locale/tr/network-settings.dtd
index 802e83c..bb4b413 100644
--- a/src/chrome/locale/tr/network-settings.dtd
+++ b/src/chrome/locale/tr/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Aşağıdakilerden hangisi durumunuzu en iyi açıklıyor?">
<!ENTITY torSettings.configurePrompt1 "Bu bilgisayarın İnternet bağlantısı sansürlü veya vekil sunucu arkasında.">
-<!ENTITY torSettings.configurePrompt2 "Köprü veya vekil sunucu ayarlarını yapılandırmam gerekli.">
+<!ENTITY torSettings.configurePrompt2 "Köprü ve yerel vekil sunucu ayarlarını yapılandırmam gerekiyor.">
<!ENTITY torSettings.configure "Yapılandır">
<!ENTITY torSettings.connectPrompt2 "Doğrudan Tor ağına bağlanmak istiyorum">
<!ENTITY torSettings.connectPrompt3 "Bu çoğu durumda çalışır.">
<!ENTITY torSettings.connect "Bağlan">
-<!ENTITY torSettings.proxyQuestion "Bu bilgisayarın İnternete erişirken bir vekil kullanması gerekiyor mu?">
+<!ENTITY torSettings.proxyQuestion "Bu bilgisayarın İnternet'e erişebilmesi için yerel bir vekil sunucu kullanması gerekiyor mu?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Eğer bu soruyu nasıl yanıtlayacağınızdan emin değilseniz, farklı bir tarayıcıda İnternet seçeneklerine bakın ve bir vekil kullanmak üzere yapılandırılıp yapılandırılmadığını denetleyin.">
+<!ENTITY torSettings.proxyHelp "Bu soruyu nasıl yanıtlayacağınızı bilmiyorsanız, başka bir tarayıcıda İnternet seçeneklerine bakara yerel bir vekil sunucu kullanıp kullanmadığını görün.">
<!ENTITY torSettings.enterProxy "Vekil ayarlarını girin.">
<!ENTITY torSettings.bridgeQuestion "İnternet Servis Sağlayıcınız (ISS) Tor Ağına bağlantıları engelliyor veya sansürlüyor mu?">
<!ENTITY torSettings.bridgeHelp "Bu soruyu nasıl cevaplayacağınızdan emin değilseniz Hayır'ı Seçin.  Evet'i seçerseniz, Tor Ağına bağlantıyı engellemeyi daha zor hale getiren listelenmeyen aynalar olan Tor Köprülerini yapılandırmanız istenecektir.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "İsteğe Bağlı">
-<!ENTITY torsettings.useProxy.checkbox "Bu bilgisayarın İnternet'e erişebilmek için bir vekil sunucu kullanması gerekiyor">
+<!ENTITY torsettings.useProxy.checkbox "Bu bilgisayar İnternet'e erişmek için yerel bir vekil sunucu gerektiriyor.">
<!ENTITY torsettings.useProxy.type "Vekil Sunucu Türü:">
<!ENTITY torsettings.useProxy.address "Adres:">
<!ENTITY torsettings.useProxy.address.placeholder "IP adresi veya sunucu adı">
diff --git a/src/chrome/locale/uk/network-settings.dtd b/src/chrome/locale/uk/network-settings.dtd
index 0090d60..a4c0644 100644
--- a/src/chrome/locale/uk/network-settings.dtd
+++ b/src/chrome/locale/uk/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Яке з наступних тверджень найкраще описує Вашу ситуацію?">
<!ENTITY torSettings.configurePrompt1 "Мережеве з'єднання цього комп'ютера цензурується або йде через проксі-сервер.">
-<!ENTITY torSettings.configurePrompt2 "Мені потрібно налаштувати міст або проксі-сервер.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Налаштування">
<!ENTITY torSettings.connectPrompt2 "Я бажаю підключатися до Tor напряму ">
<!ENTITY torSettings.connectPrompt3 "Це має працювати у більшості ситуацій.">
<!ENTITY torSettings.connect "З'єднатися">
-<!ENTITY torSettings.proxyQuestion "Цьому комп'ютеру необхідно використовувати проксі для доступу в Інтернет?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Якщо Ви не знаєте, як відповісти на це питання, подивіться налаштування Інтернету в іншому браузері, щоб побачити чи він налаштований на використання проксі.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Задати параметри проксі">
<!ENTITY torSettings.bridgeQuestion "Ваш Інтернет-провайдер (ISP) блокує чи яким-небудь чином цензурує підключення до Tor мережі?">
<!ENTITY torSettings.bridgeHelp "Якщо Ви не знаєте, як відповісти на це питання, виберіть Ні.  Якщо Ви виберете Так, Вам буде запропоновано налаштувати мости Tor, що є приватними трансляторами, які роблять більш важким блокування з'єднань з Tor мережі.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Додатково">
-<!ENTITY torsettings.useProxy.checkbox "Цей комп'ютер повинен використовувати проксі для доступу в Інтернет">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Тип проксі:">
<!ENTITY torsettings.useProxy.address "Адреса:">
<!ENTITY torsettings.useProxy.address.placeholder "ІР адреса або ім'я хосту">
diff --git a/src/chrome/locale/ur-PK/network-settings.dtd b/src/chrome/locale/ur-PK/network-settings.dtd
index 605bc6f..8db9fd9 100644
--- a/src/chrome/locale/ur-PK/network-settings.dtd
+++ b/src/chrome/locale/ur-PK/network-settings.dtd
@@ -1,4 +1,4 @@
-<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!ENTITY torsettings.dialog.title "ٹور نیٹ ورک سیٹنگز">
<!-- For "first run" wizard: -->
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/ur-PK/progress.dtd b/src/chrome/locale/ur-PK/progress.dtd
index ebd9cef..79ed2b6 100644
--- a/src/chrome/locale/ur-PK/progress.dtd
+++ b/src/chrome/locale/ur-PK/progress.dtd
@@ -1,4 +1,4 @@
-<!ENTITY torprogress.dialog.title "Tor Status">
+<!ENTITY torprogress.dialog.title "ٹور اسٹیٹس">
<!ENTITY torprogress.openSettings "Open Settings">
<!ENTITY torprogress.heading "Connecting to the Tor network">
<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.">
diff --git a/src/chrome/locale/ur/network-settings.dtd b/src/chrome/locale/ur/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/ur/network-settings.dtd
+++ b/src/chrome/locale/ur/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/uz/network-settings.dtd b/src/chrome/locale/uz/network-settings.dtd
index c5c0d61..de75f31 100644
--- a/src/chrome/locale/uz/network-settings.dtd
+++ b/src/chrome/locale/uz/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Qo'shimcha">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proksi turi:">
<!ENTITY torsettings.useProxy.address "Manzil:">
<!ENTITY torsettings.useProxy.address.placeholder "IP manzil yoki host nomi">
diff --git a/src/chrome/locale/ve/network-settings.dtd b/src/chrome/locale/ve/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/ve/network-settings.dtd
+++ b/src/chrome/locale/ve/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/vi/network-settings.dtd b/src/chrome/locale/vi/network-settings.dtd
index 8450fa3..3978f11 100644
--- a/src/chrome/locale/vi/network-settings.dtd
+++ b/src/chrome/locale/vi/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Những mục này có miêu tả đúng vị trí của bạn không?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Cấu hình">
<!ENTITY torSettings.connectPrompt2 "Tôi muốn kết nối trực tiếp đến mạng Tor,">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Kết nối">
-<!ENTITY torSettings.proxyQuestion "Máy tính này có cần dùng proxy để kết nối đến Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Nhà cung cấp dịch vụ (ISP) của bạn có ngăn chặn hoặc kiểm duyệt kết nối đến mạng Tor không?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Tuỳ chọn">
-<!ENTITY torsettings.useProxy.checkbox "Máy chủ này cần phải dùng proxy để truy cập Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Dạng proxy:">
<!ENTITY torsettings.useProxy.address "Địa chỉ:">
<!ENTITY torsettings.useProxy.address.placeholder "Địa chỉ IP hoặc hostname">
diff --git a/src/chrome/locale/wa/network-settings.dtd b/src/chrome/locale/wa/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/wa/network-settings.dtd
+++ b/src/chrome/locale/wa/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/wo/network-settings.dtd b/src/chrome/locale/wo/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/wo/network-settings.dtd
+++ b/src/chrome/locale/wo/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/zh-CN/network-settings.dtd b/src/chrome/locale/zh-CN/network-settings.dtd
index 562cfdb..29a5f00 100644
--- a/src/chrome/locale/zh-CN/network-settings.dtd
+++ b/src/chrome/locale/zh-CN/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "以下哪个描述与你的情况最为匹配?">
<!ENTITY torSettings.configurePrompt1 "网络连接受到审查或需要代理。">
-<!ENTITY torSettings.configurePrompt2 "我需要添加网桥或对代理设定进行配置。">
+<!ENTITY torSettings.configurePrompt2 "我需要添加网桥或对本地代理进行配置。">
<!ENTITY torSettings.configure "配置">
<!ENTITY torSettings.connectPrompt2 "我想要直接连接 Tor 网络。">
<!ENTITY torSettings.connectPrompt3 "通常这种方式是有效的。">
<!ENTITY torSettings.connect "连接">
-<!ENTITY torSettings.proxyQuestion "该计算机是否需要通过代理访问互联网?">
+<!ENTITY torSettings.proxyQuestion "请问这台计算机需要使用一个本地代理来访问互联网吗?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "如果不知道如何回答该问题,请在其他浏览器中查看互联网设置,检查是否使用了代理。">
+<!ENTITY torSettings.proxyHelp "如果您不知道如何回答这个问题,看看其他浏览器中的 Internet 设置,看它是否有配置为使用一个本地代理。">
<!ENTITY torSettings.enterProxy "输入代理设置。">
<!ENTITY torSettings.bridgeQuestion "互联网服务提供商 (ISP) 是否对 Tor 网络连接进行了封锁或审查?">
<!ENTITY torSettings.bridgeHelp "如果不理解该问题,请选择“否”。如果选择“是”,那么需要对 Tor 网桥进行配置。网桥指用于连接 Tor 网络的非公开网络中继,更难于封锁。">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "可选">
-<!ENTITY torsettings.useProxy.checkbox "该计算机需使用代理访问互联网。">
+<!ENTITY torsettings.useProxy.checkbox "这台计算机需要使用一个本地代理来访问互联网">
<!ENTITY torsettings.useProxy.type "代理类型:">
<!ENTITY torsettings.useProxy.address "地址:">
<!ENTITY torsettings.useProxy.address.placeholder "IP 地址或主机名">
diff --git a/src/chrome/locale/zh-HK/network-settings.dtd b/src/chrome/locale/zh-HK/network-settings.dtd
index 9a1108c..014655f 100644
--- a/src/chrome/locale/zh-HK/network-settings.dtd
+++ b/src/chrome/locale/zh-HK/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "連接">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/chrome/locale/zh-TW/network-settings.dtd b/src/chrome/locale/zh-TW/network-settings.dtd
index 05427fa..65a5d51 100644
--- a/src/chrome/locale/zh-TW/network-settings.dtd
+++ b/src/chrome/locale/zh-TW/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "下列哪一項最符合您的情況?">
<!ENTITY torSettings.configurePrompt1 "這部電腦的網路連線是被審查或是有代理的。">
-<!ENTITY torSettings.configurePrompt2 "我需要配置橋接或代理設定。">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "設定">
<!ENTITY torSettings.connectPrompt2 "我想直接連接到 Tor 網路。">
<!ENTITY torSettings.connectPrompt3 "這將在大多數情況下生效。">
<!ENTITY torSettings.connect "連接">
-<!ENTITY torSettings.proxyQuestion "這台電腦需要使用代理伺服器來存取網際網路嗎?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "若您不確定如何回答此問題,請查看其他瀏覽器的網際網路設定,看看它是否設定成使用代理伺服器連線。">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "輸入代理伺服器設定。">
<!ENTITY torSettings.bridgeQuestion "您的網際網路服務提供者(ISP)阻擋或審查員連接到 Tor 網路?">
<!ENTITY torSettings.bridgeHelp "如果您不確定如何回答此問題,請選擇「否」。  如果您選擇「是」,您將被要求設定Tor 橋接,這讓阻止連接到 Tor 網路更加困難。">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "選用">
-<!ENTITY torsettings.useProxy.checkbox "這台電腦需要使用代理伺服器來存取網際網路">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "代理伺服器類型:">
<!ENTITY torsettings.useProxy.address "位址:">
<!ENTITY torsettings.useProxy.address.placeholder "IP 位址或主機名稱">
diff --git a/src/chrome/locale/zu/network-settings.dtd b/src/chrome/locale/zu/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/zu/network-settings.dtd
+++ b/src/chrome/locale/zu/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
diff --git a/src/install.rdf b/src/install.rdf
index 7eac647..8825190 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.7.1</em:version>
+ <em:version>0.2.7.2</em:version>
<em:homepageURL>https://www.torproject.org/projects/torbrowser.html</em:homepageURL>
<em:updateURL>https://127.0.0.1/</em:updateURL>
<!--
1
0
commit c9cfd540eaac8d75305d643dcf3113bcd7e3920c
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed Feb 18 18:35:51 2015 -0800
Update translations.
---
src/chrome/locale/es/brand.dtd | 2 +-
src/chrome/locale/es/torbutton.properties | 2 +-
src/chrome/locale/fa/aboutTor.dtd | 2 +-
src/chrome/locale/fa/brand.dtd | 8 +++---
src/chrome/locale/fa/torbutton.dtd | 12 ++++-----
src/chrome/locale/fa/torbutton.properties | 12 ++++-----
src/chrome/locale/it/aboutTor.dtd | 2 +-
src/chrome/locale/it/brand.dtd | 8 +++---
src/chrome/locale/ko/brand.dtd | 8 +++---
src/chrome/locale/pt/brand.dtd | 8 +++---
src/chrome/locale/pt/torbutton.properties | 42 ++++++++++++++---------------
src/chrome/locale/ru/brand.dtd | 8 +++---
src/chrome/locale/ru/torbutton.dtd | 12 ++++-----
src/chrome/locale/ru/torbutton.properties | 12 ++++-----
src/chrome/locale/sv/aboutTor.dtd | 2 +-
src/chrome/locale/sv/brand.dtd | 8 +++---
src/chrome/locale/sv/torbutton.properties | 4 +--
17 files changed, 76 insertions(+), 76 deletions(-)
diff --git a/src/chrome/locale/es/brand.dtd b/src/chrome/locale/es/brand.dtd
index c2c9e68..acfea78 100644
--- a/src/chrome/locale/es/brand.dtd
+++ b/src/chrome/locale/es/brand.dtd
@@ -11,4 +11,4 @@
<!ENTITY plugins.installed.find "Haga clic para cargar los complementos de sistema instalados">
<!ENTITY plugins.installed.enable "Habilitar complementos">
<!ENTITY plugins.installed.disable "Deshabilitar complementos">
-<!ENTITY plugins.installed.disable.tip "Haga clic para prevenir que se carguen complementos de sistema">
+<!ENTITY plugins.installed.disable.tip "Haga clic para evitar que se carguen complementos de sistema">
diff --git a/src/chrome/locale/es/torbutton.properties b/src/chrome/locale/es/torbutton.properties
index 8cd1ed5..957a8f9 100644
--- a/src/chrome/locale/es/torbutton.properties
+++ b/src/chrome/locale/es/torbutton.properties
@@ -3,7 +3,7 @@ torbutton.button.tooltip.enabled = Deshabilitar Tor
torbutton.circuit_display.internet = Internet
torbutton.circuit_display.ip_unknown = IP desconocida
torbutton.circuit_display.this_browser = Este navegador
-torbutton.circuit_display.tor_bridge = Repetior puente (bridge)
+torbutton.circuit_display.tor_bridge = Repetidor puente (bridge)
torbutton.circuit_display.unknown_country = País desconocido
torbutton.panel.tooltip.disabled = Haga clic para habilitar Tor
torbutton.panel.tooltip.enabled = Haga clic para deshabilitar Tor
diff --git a/src/chrome/locale/fa/aboutTor.dtd b/src/chrome/locale/fa/aboutTor.dtd
index 8c94506..a7bd20f 100644
--- a/src/chrome/locale/fa/aboutTor.dtd
+++ b/src/chrome/locale/fa/aboutTor.dtd
@@ -8,7 +8,7 @@
<!ENTITY aboutTor.outOfDateTorOn.label "با این حال ٫ این مرورگر قدیمی می باشد.">
<!ENTITY aboutTor.outOfDateTorOff.label "همچنین ٫ این مرورگر قدیمی می باشد .">
-<!ENTITY aboutTor.outOfDate2.label "Click on the onion and then choose Check for Tor Browser Update.">
+<!ENTITY aboutTor.outOfDate2.label "روی پیاز کلیک کنید و سپس انتخاب کنید Check را برای به روز رسانی Tor Browser">
<!ENTITY aboutTor.check.label "تنظیمات شبکهی تور را بررسی کنید">
diff --git a/src/chrome/locale/fa/brand.dtd b/src/chrome/locale/fa/brand.dtd
index 62d877c..1f84c62 100644
--- a/src/chrome/locale/fa/brand.dtd
+++ b/src/chrome/locale/fa/brand.dtd
@@ -8,7 +8,7 @@
<!ENTITY trademarkInfo.part1 "فایرفاکس و لوگو فایرفاکس نشان تجاری بنیاد موزیلا می باشند.">
<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
-<!ENTITY plugins.installed.find "Click to load installed system plugins">
-<!ENTITY plugins.installed.enable "Enable plugins">
-<!ENTITY plugins.installed.disable "Disable plugins">
-<!ENTITY plugins.installed.disable.tip "Click to prevent loading system plugins">
+<!ENTITY plugins.installed.find "کلیک کنید تا لود شود سیستم نصب پلاگین ها">
+<!ENTITY plugins.installed.enable "فعال کردن پلاگین ها">
+<!ENTITY plugins.installed.disable "غیر فعال کردن پلاگین ها">
+<!ENTITY plugins.installed.disable.tip "کلیک کنید تا جلوگیری شود از لود شدن سیستم نصب پلاگین ها">
diff --git a/src/chrome/locale/fa/torbutton.dtd b/src/chrome/locale/fa/torbutton.dtd
index 1c999fd..3c2e698 100644
--- a/src/chrome/locale/fa/torbutton.dtd
+++ b/src/chrome/locale/fa/torbutton.dtd
@@ -24,19 +24,19 @@
<!ENTITY torbutton.pref_connection_more_info.text "دکمه تُرهم اکنون فعال شده است.اگر میخواهيد تنظيمات پراکسی غيرمرتبط با تُر را تغيير دهيد، لطفا دکمه تُر را غيرفعال کنيد و دوباره به اينجا بازگرديد. اگر ميخواهيد تنظيمات تُر را تغيير دهيد، از پنجره تنظيمات دکمه تُر استفاده کنيد.">
<!ENTITY torbutton.context_menu.new_identity "هویت جدید">
<!ENTITY torbutton.context_menu.new_identity_key "من">
-<!ENTITY torbutton.context_menu.new_circuit "New Tor Circuit for this Site">
+<!ENTITY torbutton.context_menu.new_circuit "مدار جدید Tor برای این سایت">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
<!ENTITY torbutton.context_menu.toggle "ضامن فعال/غيرفعال کردن تُر">
<!ENTITY torbutton.context_menu.toggle.key "T">
-<!ENTITY torbutton.context_menu.preferences "Privacy and Security Settings…">
+<!ENTITY torbutton.context_menu.preferences "حفظ حریم خصوصی و تنظیمات امنیتی">
<!ENTITY torbutton.context_menu.preferences.key "P">
<!ENTITY torbutton.context_menu.about "درباره ي دکمه تُر...">
<!ENTITY torbutton.context_menu.about.key "A">
-<!ENTITY torbutton.context_menu.networksettings "Tor Network Settings…">
+<!ENTITY torbutton.context_menu.networksettings "تنظیمات شبکه تور">
<!ENTITY torbutton.context_menu.networksettings.key "S">
-<!ENTITY torbutton.context_menu.downloadUpdate "Check for Tor Browser Update…">
+<!ENTITY torbutton.context_menu.downloadUpdate "بررسی برای به روز رسانی Tor Browser ...">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
-<!ENTITY torbutton.context_menu.cookieProtections "Cookie Protections…">
+<!ENTITY torbutton.context_menu.cookieProtections "حفاظت کوکی ها...">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.context_menu.copyTor "کپی به نشانی اينترنتی">
<!ENTITY torbutton.context_menu.copyTor.key "p">
@@ -157,4 +157,4 @@
<!ENTITY torbutton.prefs.sec_med_high "متوسط - بالا">
<!ENTITY torbutton.prefs.sec_high "زیاد">
<!ENTITY torbutton.prefs.sec_custom "تنظیم سفارشی">
-<!ENTITY torbutton.circuit_display.title "Tor circuit for this site">
+<!ENTITY torbutton.circuit_display.title "مدار Tor برای این سایت">
diff --git a/src/chrome/locale/fa/torbutton.properties b/src/chrome/locale/fa/torbutton.properties
index 8e02910..3c8fc1d 100644
--- a/src/chrome/locale/fa/torbutton.properties
+++ b/src/chrome/locale/fa/torbutton.properties
@@ -1,10 +1,10 @@
torbutton.button.tooltip.disabled = فعال کردن تُر
torbutton.button.tooltip.enabled = غيرفعال کردن تُر
-torbutton.circuit_display.internet = Internet
-torbutton.circuit_display.ip_unknown = IP unknown
-torbutton.circuit_display.this_browser = This browser
-torbutton.circuit_display.tor_bridge = Bridge
-torbutton.circuit_display.unknown_country = Unknown country
+torbutton.circuit_display.internet = اینترنت
+torbutton.circuit_display.ip_unknown = IP ناشناخته
+torbutton.circuit_display.this_browser = این مرورگر
+torbutton.circuit_display.tor_bridge = پل
+torbutton.circuit_display.unknown_country = کشور ناشناخته
torbutton.panel.tooltip.disabled = برای فعال کردن تُرکليک کنيد
torbutton.panel.tooltip.enabled = برای غيرفعال کردن تُر کليک کنيد
torbutton.panel.plugins.disabled = برای فعال کردن پلاگين ها کليک کنيد
@@ -51,7 +51,7 @@ torbutton.popup.short_torbrowser = اطلاعلت مهم Torbutton!\n\nTorbutton
torbutton.popup.confirm_plugins = پلاگینها مانند فلش، میتوانند اختفا و ناشناس بودن شما را به خطر بیاندازند.\n\nآنها همچنین میتوانند "تر" را دور زده تا موقعیت کنونی و آدرس IP شما را برملا کنند.\n\nمطمئنید که میخواهید پلاگینها را فعال کنید؟\n\n
torbutton.popup.never_ask_again = دیگر هیچگاه این را از من نپرس
-torbutton.popup.confirm_newnym = Tor Browser will close all windows and tabs. All website sessions will be lost.\n\nRestart Tor Browser now to reset your identity?\n\n
+torbutton.popup.confirm_newnym = مرورگر Tor همه پنجره ها و تب ها را می بندد. همه جلسات وب سایت شود از دست خواهد رفت\n\nآیا می خواهید راه اندازی مجدد مرورگر Tor الان انجام شود تا هویت خود را تنظیم مجدد کنید؟\n
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=این وبسایت (%S) سعی دارد اطلاعات بوم تصویر HTML5 را دریافت کند که ممکن است برای شناسایی منحصر به فرد کامپیوتر شما استفاده شود.\n\nآیا مرورگر تور میبایست اجازه دریافت این اطلاعات را بدهد؟
diff --git a/src/chrome/locale/it/aboutTor.dtd b/src/chrome/locale/it/aboutTor.dtd
index ae9aeae..cbeae7c 100644
--- a/src/chrome/locale/it/aboutTor.dtd
+++ b/src/chrome/locale/it/aboutTor.dtd
@@ -8,7 +8,7 @@
<!ENTITY aboutTor.outOfDateTorOn.label "TUTTAVIA, questo browser non è aggiornato.">
<!ENTITY aboutTor.outOfDateTorOff.label "INOLTRE, questo browser non è aggiornato.">
-<!ENTITY aboutTor.outOfDate2.label "Click on the onion and then choose Check for Tor Browser Update.">
+<!ENTITY aboutTor.outOfDate2.label "Clicca sulla cipolla e scegli "Scarica Aggiornamento Tor Browser Bundle".">
<!ENTITY aboutTor.check.label "Test Impostazioni della Rete Tor">
diff --git a/src/chrome/locale/it/brand.dtd b/src/chrome/locale/it/brand.dtd
index 17fbe4b..225f9b7 100644
--- a/src/chrome/locale/it/brand.dtd
+++ b/src/chrome/locale/it/brand.dtd
@@ -8,7 +8,7 @@
<!ENTITY trademarkInfo.part1 "Firefox e i loghi Firefox sono marchi registrati della Mozilla Foundation.">
<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
-<!ENTITY plugins.installed.find "Click to load installed system plugins">
-<!ENTITY plugins.installed.enable "Enable plugins">
-<!ENTITY plugins.installed.disable "Disable plugins">
-<!ENTITY plugins.installed.disable.tip "Click to prevent loading system plugins">
+<!ENTITY plugins.installed.find "Clicca per caricare i plugin di sistema installati">
+<!ENTITY plugins.installed.enable "Permetti plugin">
+<!ENTITY plugins.installed.disable "Disabilita plugin">
+<!ENTITY plugins.installed.disable.tip "Clicca per evitare di caricare i plugin di sistema">
diff --git a/src/chrome/locale/ko/brand.dtd b/src/chrome/locale/ko/brand.dtd
index c7bdff6..96182f5 100644
--- a/src/chrome/locale/ko/brand.dtd
+++ b/src/chrome/locale/ko/brand.dtd
@@ -8,7 +8,7 @@
<!ENTITY trademarkInfo.part1 "파이어폭스와 파이어폭스 로고들은 모질라 재단의 등록 상표입니다.">
<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
-<!ENTITY plugins.installed.find "Click to load installed system plugins">
-<!ENTITY plugins.installed.enable "Enable plugins">
-<!ENTITY plugins.installed.disable "Disable plugins">
-<!ENTITY plugins.installed.disable.tip "Click to prevent loading system plugins">
+<!ENTITY plugins.installed.find "클릭하여 플러그인 불러오기">
+<!ENTITY plugins.installed.enable "플러그인 활성">
+<!ENTITY plugins.installed.disable "플러그인 비활성">
+<!ENTITY plugins.installed.disable.tip "클릭하여 플러그인 열기 취소">
diff --git a/src/chrome/locale/pt/brand.dtd b/src/chrome/locale/pt/brand.dtd
index 2969197..67232da 100644
--- a/src/chrome/locale/pt/brand.dtd
+++ b/src/chrome/locale/pt/brand.dtd
@@ -8,7 +8,7 @@
<!ENTITY trademarkInfo.part1 "O Firefox e os logos Firefox são marcas registadas da Fundação Mozilla.">
<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
-<!ENTITY plugins.installed.find "Click to load installed system plugins">
-<!ENTITY plugins.installed.enable "Enable plugins">
-<!ENTITY plugins.installed.disable "Disable plugins">
-<!ENTITY plugins.installed.disable.tip "Click to prevent loading system plugins">
+<!ENTITY plugins.installed.find "Clique para carregar os plug-ins do sistema instalados">
+<!ENTITY plugins.installed.enable "Ativar plug-ins">
+<!ENTITY plugins.installed.disable "Desativar plug-ins">
+<!ENTITY plugins.installed.disable.tip "Clique para evitar o carregamento dos plug-ins do sistema instalados">
diff --git a/src/chrome/locale/pt/torbutton.properties b/src/chrome/locale/pt/torbutton.properties
index 3130115..761001f 100644
--- a/src/chrome/locale/pt/torbutton.properties
+++ b/src/chrome/locale/pt/torbutton.properties
@@ -1,23 +1,23 @@
torbutton.button.tooltip.disabled = Activar Tor
-torbutton.button.tooltip.enabled = Desactivar Tor
+torbutton.button.tooltip.enabled = Desativar Tor
torbutton.circuit_display.internet = Internet
-torbutton.circuit_display.ip_unknown = IP unknown
-torbutton.circuit_display.this_browser = This browser
+torbutton.circuit_display.ip_unknown = IP desconhecido
+torbutton.circuit_display.this_browser = Este navegador
torbutton.circuit_display.tor_bridge = Bridge
-torbutton.circuit_display.unknown_country = Unknown country
-torbutton.panel.tooltip.disabled = Clique para activar Tor
-torbutton.panel.tooltip.enabled = Clique para desactivar Tor
-torbutton.panel.plugins.disabled = Clique para activar plugins
-torbutton.panel.plugins.enabled = Clique para desactivar plugins
-torbutton.panel.label.disabled = Tor desactivado
-torbutton.panel.label.enabled = Tor activado
+torbutton.circuit_display.unknown_country = País desconhecido
+torbutton.panel.tooltip.disabled = Clique para ativar o Tor
+torbutton.panel.tooltip.enabled = Clique para desativar o Tor
+torbutton.panel.plugins.disabled = Clique para ativar os plug-ins
+torbutton.panel.plugins.enabled = Clique para desativar os plug-ins
+torbutton.panel.label.disabled = Tor desativado
+torbutton.panel.label.enabled = Tor ativado
extensions.torbutton(a)torproject.org.description = Torbutton provides a button to configure Tor settings and quickly and easily clear private browsing data.
torbutton.popup.history.warning = O Torbutton bloqueou a actividade de um separador carregado num diferente estado do Tor.\n\nIsto é para contornar os erros Firefox 409737 e 417869.\n\nSe este aviso lhe parece ter aparecido sem qualquer razão aparente, um dos separadores está a tentar recarregar-se a si próprio em segundo plano e foi bloqueado.\n\nPara recarregar o separador neste estado do Tor, seleccione 'entrar' na caixa de localização da URL.\n\n
torbutton.popup.plugin.warning = Torbutton bloqueou o carregamento do plugin de conteúdo do Tor.\n\nUtilize o Salvar Como.\n\n
torbutton.popup.confirm_ca_certs = Torbutton: Você não possui nenhum Certificado de Autenticação. Verificar a lista de Certificados de Autenticação pode ser uma operação lenta para o Tor. Gostaria de desactivar o modo de isolamento de Certificados de Autenticação? (Se você não percebeu esta mensagem, o mais seguro é pressionar OK)
torbutton.popup.ff3.warning = Aviso!\n\nO Torbutton no Firefox 3 é conhecido por dar a conhecer o seu fuso horário e os seus Live Marks, através da rede Tor.\n\nTem a certeza que deseja continuar?
-torbutton.popup.toggle.warning = Tem que pressionar o ícone do Torbutton ou reiniciar o navegador para as alterações terem efeito.
-torbutton.popup.test.success = Teste ao proxy Tor concluído com sucesso!
+torbutton.popup.toggle.warning = Precisa de alternar o Tor ou reiniciar para aplicar as suas definições.
+torbutton.popup.test.success = Teste do proxy do Tor concluído com sucesso
torbutton.popup.test.failure = O teste ao proxy Tor FALHOU! Verifique as propriedades do proxy e do Polipo.
torbutton.popup.test.confirm_toggle = O mais recente teste de utilização de Tor falhou.\n\nTem a certeza que deseja continuar mesmo assim?\n\nNota: Se já resolveu o problema, é recomendado voltar a testar a ligação nas Preferências do Torbutton para remover este aviso.
torbutton.popup.test.ff3_notice = Pressione OK para testar as configurações do proxy Tor. Este teste é realizado em plano de fundo. Por favor seja paciente.
@@ -32,26 +32,26 @@ torbutton.popup.external.note = Alguns tipos de ficheiro podem implicar uma liga
torbutton.popup.external.suggest = Para sua segurança, deve apenas abrir ficheiros transferidos quando estiver offline, or usar um CD Tor Live como o Tails.
torbutton.popup.launch = Transferir ficheiro
torbutton.popup.cancel = Cancelar
-torbutton.popup.dontask = Transferir automaticamente ficheiros a partir de agora
-torbutton.popup.test.no_http_proxy = Teste ao proxy Tor: Erro na ligação ao proxy HTTP local. O Polipo está em execução?
+torbutton.popup.dontask = A partir de agora, transferir automaticamente os ficheiros
+torbutton.popup.test.no_http_proxy = Teste do proxy do Tor: Proxy HTTP local inacessível. O Polipo está devidamente em execução?
torbutton.popup.captcha.title = Evitar Captchas do Google?
torbutton.popup.captcha.ask = O Torbutton detectou uma Captcha do Google. Pretende ser redireccionado para um novo motor de busca usando esta consulta?
-torbutton.popup.captcha.always = Siga sempre este procedimento de agora em diante
-torbutton.popup.redirect = Redireccione
-torbutton.popup.no_redirect = Não redireccione
+torbutton.popup.captcha.always = A partir de agora, efetuar sempre esta ação
+torbutton.popup.redirect = Redirecionar
+torbutton.popup.no_redirect = Não Redirecionar
torbutton.popup.prompted_language = Para lhe fornecer maior privacidade, o Torbutton pode requerer o uso da versão em inglês em páginas da Internet. Isto pode causar a visualização em inglês das páginas que prefere ler em português.\n\nPretende visualizar páginas em inglês, para melhor privacidade?
torbutton.popup.no_newnym = O Torbutton não pode, em segurança, fornecer-lhe uma nova identidade. Não tem acesso à porta de controle Tor.\n\nEstá a usar o Tor Browser Bundle?
torbutton.popup.use_tbb = Parece estar a usar Torbutton com Firefox, o que já não é recomendado como uma configuração segura.\n\nEm alternativa, sugerimos que obtenha o último Tor Browser Bundle através de envio de e-mail para: gettor(a)torproject.org ou carregando para o computador o ficheiro na seguinte URL:
torbutton.popup.pref_error = O Torbutton não consegue actualizar as preferências na directoria do perfil do Explorador do Tor.
torbutton.popup.permission_denied = Por favor restabeleça as permissões da directoria do Explorador do Tor ou copie para uma nova localização.
torbutton.popup.device_full = O disco parece estar cheio. Por favor liberte espaço ou relocalize o Explorador do Tor para um novo dispositivo.
-torbutton.title.prompt_torbrowser = Informação importante do Torbutton
+torbutton.title.prompt_torbrowser = Informação Importante do Torbutton
torbutton.popup.prompt_torbrowser = O Torbutton funciona agora de forma diferente: já não pode desligá-lo.\n\nProcedemos a esta alteração porque não é seguro usar o Torbutton num explorador também usado para buscas fora do Tor. Havia demasiados erros que não conseguimos corrigir de outra forma.\n\nSe pretende continuar a usar o Firefox normalmente, deve desinstalar o Torbutton e carregar o Tor Browser Bundle para o seu computador. As políticas de privacidade do Explorador do Tor também são superiores às normais no Firefox, mesmo quando este é usado com o Torbutton.\n\nPara remover o Torbutton abra Ferramentas->Acessórios->Extensões e clique no botão Remover junto ao Torbutton.
torbutton.popup.short_torbrowser = Informação importante do Torbutton!\nO Torbutton não está sempre activo.\nClique no Torbutton para mais informação.
torbutton.popup.confirm_plugins = Plugins such as Flash can harm your privacy and anonymity.\n\nThey can also bypass Tor to reveal your current location and IP address.\n\nAre you sure you want to enable plugins?\n\n
-torbutton.popup.never_ask_again = Never ask me again
-torbutton.popup.confirm_newnym = Tor Browser will close all windows and tabs. All website sessions will be lost.\n\nRestart Tor Browser now to reset your identity?\n\n
+torbutton.popup.never_ask_again = Não voltar a perguntar-me
+torbutton.popup.confirm_newnym = O Navegador Tor irá fechar todas as janela e separadores. Estarão perdidas todas sessões do sítio da Web.\n\nReiniciar o Navegador Tor para repor a sua identidade?\n\n
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=Este site (%S) tentou extrair informação HTML5, que pode ser usada para identificar claramente o seu computador.\n\nQuer que o navegador Tor permita que o site extraia a informação HTML5?
@@ -59,5 +59,5 @@ canvas.notNow=Agora não
canvas.notNowAccessKey=N
canvas.allow=Permitir de futuro
canvas.allowAccessKey=A
-canvas.never=Nunca para este site (recomendado)
+canvas.never=Nunca para este sítio (recomendado)
canvas.neverAccessKey=e
diff --git a/src/chrome/locale/ru/brand.dtd b/src/chrome/locale/ru/brand.dtd
index dff02f0..bf81534 100644
--- a/src/chrome/locale/ru/brand.dtd
+++ b/src/chrome/locale/ru/brand.dtd
@@ -8,7 +8,7 @@
<!ENTITY trademarkInfo.part1 "Firefox и его логотипы это торговые знаки Mozilla Foundation.">
<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
-<!ENTITY plugins.installed.find "Click to load installed system plugins">
-<!ENTITY plugins.installed.enable "Enable plugins">
-<!ENTITY plugins.installed.disable "Disable plugins">
-<!ENTITY plugins.installed.disable.tip "Click to prevent loading system plugins">
+<!ENTITY plugins.installed.find "Нажмите для загрузки установленных системных плагинов">
+<!ENTITY plugins.installed.enable "Включить плагины">
+<!ENTITY plugins.installed.disable "Выключить плагины">
+<!ENTITY plugins.installed.disable.tip "Нажмите для предотвращения загрузки системых плагинов">
diff --git a/src/chrome/locale/ru/torbutton.dtd b/src/chrome/locale/ru/torbutton.dtd
index 760ce93..b5b0f17 100644
--- a/src/chrome/locale/ru/torbutton.dtd
+++ b/src/chrome/locale/ru/torbutton.dtd
@@ -24,19 +24,19 @@
<!ENTITY torbutton.pref_connection_more_info.text "Torbutton включен. Если будут изменяться настройки прокси, не являющегося частью сети Tor, необходимо сначала отключить Torbutton и затем вернуться сюда. Если будут изменяться настройки Tor, необходимо использовать окно настроек Torbutton.">
<!ENTITY torbutton.context_menu.new_identity "Новая личность">
<!ENTITY torbutton.context_menu.new_identity_key "Я">
-<!ENTITY torbutton.context_menu.new_circuit "New Tor Circuit for this Site">
+<!ENTITY torbutton.context_menu.new_circuit "Новая цепочка Tor для этого Сайта">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
<!ENTITY torbutton.context_menu.toggle "Изменить состояние Tor">
<!ENTITY torbutton.context_menu.toggle.key "T">
-<!ENTITY torbutton.context_menu.preferences "Privacy and Security Settings…">
+<!ENTITY torbutton.context_menu.preferences "Настройки Секретности и Безопасности">
<!ENTITY torbutton.context_menu.preferences.key "Н">
<!ENTITY torbutton.context_menu.about "О Torbutton...">
<!ENTITY torbutton.context_menu.about.key "О">
-<!ENTITY torbutton.context_menu.networksettings "Tor Network Settings…">
+<!ENTITY torbutton.context_menu.networksettings "Настройки сети Tor">
<!ENTITY torbutton.context_menu.networksettings.key "S">
-<!ENTITY torbutton.context_menu.downloadUpdate "Check for Tor Browser Update…">
+<!ENTITY torbutton.context_menu.downloadUpdate "Проверить обновления для Tor Browser">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
-<!ENTITY torbutton.context_menu.cookieProtections "Cookie Protections…">
+<!ENTITY torbutton.context_menu.cookieProtections "Защита Cookie">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.context_menu.copyTor "Копировать URL Tor">
<!ENTITY torbutton.context_menu.copyTor.key "p">
@@ -157,4 +157,4 @@
<!ENTITY torbutton.prefs.sec_med_high "Средне-Высокий">
<!ENTITY torbutton.prefs.sec_high "Высокий">
<!ENTITY torbutton.prefs.sec_custom "Собственные Значения">
-<!ENTITY torbutton.circuit_display.title "Tor circuit for this site">
+<!ENTITY torbutton.circuit_display.title "Цепочка Tor для этого сайта">
diff --git a/src/chrome/locale/ru/torbutton.properties b/src/chrome/locale/ru/torbutton.properties
index 33ced7f..5477be6 100644
--- a/src/chrome/locale/ru/torbutton.properties
+++ b/src/chrome/locale/ru/torbutton.properties
@@ -1,10 +1,10 @@
torbutton.button.tooltip.disabled = Включить Tor
torbutton.button.tooltip.enabled = Отключить Tor
-torbutton.circuit_display.internet = Internet
-torbutton.circuit_display.ip_unknown = IP unknown
-torbutton.circuit_display.this_browser = This browser
-torbutton.circuit_display.tor_bridge = Bridge
-torbutton.circuit_display.unknown_country = Unknown country
+torbutton.circuit_display.internet = Интернет
+torbutton.circuit_display.ip_unknown = IP неизвестен
+torbutton.circuit_display.this_browser = Этот браузер
+torbutton.circuit_display.tor_bridge = Ретранслятор
+torbutton.circuit_display.unknown_country = Неизвестная страна
torbutton.panel.tooltip.disabled = Нажмите, чтобы включить Tor
torbutton.panel.tooltip.enabled = Нажмите, чтобы отключить Tor
torbutton.panel.plugins.disabled = Нажмите, чтобы включить плагины
@@ -51,7 +51,7 @@ torbutton.popup.short_torbrowser = Важная информация Torbutton!
torbutton.popup.confirm_plugins = Плагины вроде Flash могут нанести вред вашей конфиденциальности и анонимности.\nОни также могут обходить Tor, чтобы раскрыть ваше текущее местоположение и IP-адрес.\nВы уверены, что хотите включить плагины?\n
torbutton.popup.never_ask_again = Больше не спрашивать
-torbutton.popup.confirm_newnym = Tor Browser will close all windows and tabs. All website sessions will be lost.\n\nRestart Tor Browser now to reset your identity?\n\n
+torbutton.popup.confirm_newnym = Tor Browser закроет все окна и вкладки. Все сессии веб-сайта будут потеряны.\n\nПерезапустить сейчас Tor Browser, чтобы изменить Вашу личность?\n\n
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=Этот веб-сайт (%S) пытается извлечь данные изображения HTML5 canvas, что может быть использовано для получения информации о вашем компьютере.\n\nДолжен ли Tor Browser разрешить этому сайту извлечь данные изображения HTML5 canvas?
diff --git a/src/chrome/locale/sv/aboutTor.dtd b/src/chrome/locale/sv/aboutTor.dtd
index 5b454fb..d49c02b 100644
--- a/src/chrome/locale/sv/aboutTor.dtd
+++ b/src/chrome/locale/sv/aboutTor.dtd
@@ -8,7 +8,7 @@
<!ENTITY aboutTor.outOfDateTorOn.label "EMELLERTID, denna webbläsare är ej uppdaterad.">
<!ENTITY aboutTor.outOfDateTorOff.label "DESSUTOM, denna webbläsare är ej uppdaterad.">
-<!ENTITY aboutTor.outOfDate2.label "Click on the onion and then choose Check for Tor Browser Update.">
+<!ENTITY aboutTor.outOfDate2.label "Klicka på Tor-löken och välj sedan 'Sök efter uppdateringar för Tor webbläsare'.">
<!ENTITY aboutTor.check.label "Testa nätverksinställningarna för Tor">
diff --git a/src/chrome/locale/sv/brand.dtd b/src/chrome/locale/sv/brand.dtd
index 83a75a4..69c00f2 100644
--- a/src/chrome/locale/sv/brand.dtd
+++ b/src/chrome/locale/sv/brand.dtd
@@ -8,7 +8,7 @@
<!ENTITY trademarkInfo.part1 "Firefox och Firefox-logotypen är varumärken som tillhör Mozilla Foundation.">
<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
-<!ENTITY plugins.installed.find "Click to load installed system plugins">
-<!ENTITY plugins.installed.enable "Enable plugins">
-<!ENTITY plugins.installed.disable "Disable plugins">
-<!ENTITY plugins.installed.disable.tip "Click to prevent loading system plugins">
+<!ENTITY plugins.installed.find "Klicka här för att ladda installerade systemtillägg.">
+<!ENTITY plugins.installed.enable "Tillåt tillägg">
+<!ENTITY plugins.installed.disable "Stäng av tillägg.">
+<!ENTITY plugins.installed.disable.tip "Klicka för att förhindra laddningen av systemtillägg.">
diff --git a/src/chrome/locale/sv/torbutton.properties b/src/chrome/locale/sv/torbutton.properties
index 5289a40..1c8a351 100644
--- a/src/chrome/locale/sv/torbutton.properties
+++ b/src/chrome/locale/sv/torbutton.properties
@@ -1,10 +1,10 @@
torbutton.button.tooltip.disabled = Aktivera Tor
torbutton.button.tooltip.enabled = Inaktivera Tor
torbutton.circuit_display.internet = Internet
-torbutton.circuit_display.ip_unknown = IP unknown
+torbutton.circuit_display.ip_unknown = Okänd IP-adress.
torbutton.circuit_display.this_browser = This browser
torbutton.circuit_display.tor_bridge = Bridge
-torbutton.circuit_display.unknown_country = Unknown country
+torbutton.circuit_display.unknown_country = Okänt land
torbutton.panel.tooltip.disabled = Klicka för att aktivera Tor
torbutton.panel.tooltip.enabled = Klicka för att inaktivera Tor
torbutton.panel.plugins.disabled = Klicka för att aktivera plugins
1
0

[tor-browser-bundle/master] Update versions.nightly for new TBB branch + NoScript.
by mikeperry@torproject.org 19 Feb '15
by mikeperry@torproject.org 19 Feb '15
19 Feb '15
commit 96f7be3ca355cd4cf89fc709d24d383b7bf7240a
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed Feb 18 15:52:02 2015 -0800
Update versions.nightly for new TBB branch + NoScript.
---
gitian/versions.nightly | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/gitian/versions.nightly b/gitian/versions.nightly
index a619cad..2f078b2 100755
--- a/gitian/versions.nightly
+++ b/gitian/versions.nightly
@@ -7,7 +7,7 @@ BUILD_PT_BUNDLES=1
VERIFY_TAGS=0
-FIREFOX_VERSION=31.4.0esr
+FIREFOX_VERSION=31.5.0esr
TORBROWSER_UPDATE_CHANNEL=default
@@ -61,7 +61,7 @@ GO_VER=1.3.3
## File names for the source packages
OPENSSL_PACKAGE=openssl-${OPENSSL_VER}.tar.gz
GMP_PACKAGE=gmp-${GMP_VER}.tar.bz2
-NOSCRIPT_PACKAGE=noscript_security_suite-2.6.9.11-sm+fn+fx.xpi
+NOSCRIPT_PACKAGE=noscript_security_suite-2.6.9.14-fn+fx+sm.xpi
HTTPSE_PACKAGE=https-everywhere-${HTTPSE_VER}.xpi
TOOLCHAIN4_PACKAGE=x86_64-apple-darwin10.tar.xz
TOOLCHAIN4_OLD_PACKAGE=multiarch-darwin11-cctools127.2-gcc42-5666.3-llvmgcc42-2336.1-Linux-120724.tar.xz
@@ -90,7 +90,7 @@ GMP_HASH=752079520b4690531171d0f4532e40f08600215feefede70b24fabdc6f1ab160
OSXSDK_HASH=6602d8d5ddb371fbc02e2a5967d9bd0cd7358d46f9417753c8234b923f2ea6fc
TOOLCHAIN4_HASH=7b71bfe02820409b994c5c33a7eab81a81c72550f5da85ff7af70da3da244645
TOOLCHAIN4_OLD_HASH=65c1b2d302358a6b95a26c6828a66908a199276193bb0b268f2dcc1a997731e9
-NOSCRIPT_HASH=568122b4834baf2113648317baf294879700178df157780a9c89582280338ba8
+NOSCRIPT_HASH=67516200ef6ec7a3741a2b94d2257edd91f1862cec92c89251ea870839f8032f
HTTPSE_HASH=a42812dbd4b0103600ac5dce0e5f1366e8a7a7267e18743f5cd1e152615964e3
MSVCR100_HASH=1221a09484964a6f38af5e34ee292b9afefccb3dc6e55435fd3aaf7c235d9067
PYCRYPTO_HASH=f2ce1e989b272cfcb677616763e0a2e7ec659effa67a88aa92b3a65528f60a3c
1
0

18 Feb '15
commit af64860488d8a473560e45d5cb4753bec888c0cf
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed Feb 18 13:53:14 2015 -0800
Add changelog for 4.5a4.
---
Bundle-Data/Docs/ChangeLog.txt | 46 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)
diff --git a/Bundle-Data/Docs/ChangeLog.txt b/Bundle-Data/Docs/ChangeLog.txt
index 2dd58e7..3466bce 100644
--- a/Bundle-Data/Docs/ChangeLog.txt
+++ b/Bundle-Data/Docs/ChangeLog.txt
@@ -1,3 +1,49 @@
+Tor Browser 4.5a4 -- Feb 24 2015
+ * All Platforms
+ * Update Firefox to 31.5.0esr
+ * Update OpenSSL to 1.0.1l
+ * Update obfs4proxy to 0.0.4
+ * Use obfs4proxy for ScrambleSuit bridges
+ * Update Torbutton to 1.9.0.0
+ * Bug 13882: Fix display of bridges after bridge settings have been changed
+ * Bug 5698: Use "Tor Browser" branding in "About Tor Browser" dialog
+ * Bug 10280: Strings and pref for preventing plugin initialization.
+ * Bug 14866: Show correct circuit when more than one exists for a given domain
+ * Bug 9442: Add New Circuit button to Torbutton menu
+ * Bug 9906: Warn users before closing all windows and performing new identity.
+ * Bug 8400: Prompt for restart if disk records are enabled/disabled.
+ * Bug 14630: Hide Torbutton's proxy settings tab.
+ * Bug 14632: Disable Cookie Manager until we get it working.
+ * Bug 11175: Remove "About Torbutton" from onion menu.
+ * Bug 13900: Remove remaining SafeCache code in favor of C++ patch
+ * Bug 14490: Use Disconnect search in about:tor search box
+ * Bug 14392: Don't steal input focus in about:tor search box
+ * Bug 11236: Don't set omnibox order in Torbutton (to prevent translation)
+ * Bug 13406: Stop directing users to download-easy.html.en on update
+ * Bug 9387: Handle "custom" mode better in Security Slider
+ * Bug 12430: Bind jar: pref to Security Slider
+ * Bug 14448: Restore Torbutton menu operation on non-English localizations
+ * Translation updates
+ * Update Tor Launcher to 0.2.7.2
+ * Bug 13271: Display Bridge Configuration wizard pane before Proxy pane
+ * Bug 14336: Fix navigation button display issues on some wizard panes
+ * Translation updates
+ * Bug 14203: Prevent meek from displaying an extra update notification
+ * Bug 14849: Remove new NoScript menu option to make permissions permanent
+ * Bug 14851: Set NoScript pref to disable permanent permissions
+ * Bug 14490: Make Disconnect the default omnibox search engine
+ * Bug 11236: Fix omnibox order for non-English builds
+ * Also remove Amazon, eBay and bing; add Youtube and Twitter
+ * Bug 10280: Don't load any plugins into the address space.
+ * Bug 14392: Make about:tor hide itself from the URL bar
+ * Bug 12430: Provide a preference to disable remote jar: urls
+ * Bug 13900: Remove 3rd party HTTP auth tokens via Firefox patch
+ * Bug 5698: Fix branding in "About Torbrowser" window
+ * Windows:
+ * Bug 13169: Don't use /dev/random on Windows for SSP
+ * Linux:
+ * Bug 13717: Make sure we use the bash shell on Linux
+
Tor Browser 4.5a3 -- Jan 19 2015
* All Platforms
* Update Firefox to 31.4.0esr
1
0

[tor-browser-bundle/master] Minor ChangeLog historical cleanup.
by mikeperry@torproject.org 18 Feb '15
by mikeperry@torproject.org 18 Feb '15
18 Feb '15
commit bf56375978a63e0426fc080c18aa119969468254
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed Feb 18 13:54:23 2015 -0800
Minor ChangeLog historical cleanup.
---
Bundle-Data/Docs/ChangeLog.txt | 18 ++++++++----------
1 file changed, 8 insertions(+), 10 deletions(-)
diff --git a/Bundle-Data/Docs/ChangeLog.txt b/Bundle-Data/Docs/ChangeLog.txt
index 3466bce..793404a 100644
--- a/Bundle-Data/Docs/ChangeLog.txt
+++ b/Bundle-Data/Docs/ChangeLog.txt
@@ -61,12 +61,12 @@ Tor Browser 4.5a3 -- Jan 19 2015
* Bug 9387: Incorporate user feedback
* Bug 13671: Fixup for circuit display if bridges are used
* Translation updates
- * Update Tor Launcher to 0.2.7.1
- * Bug 14122: Hide logo if TOR_HIDE_BROWSER_LOGO set
- * Translation updates
- * Bug 13379: Sign our MAR files
- * Bug 13788: Fix broken meek in 4.5-alpha series
- * Bug 13439: No canvas prompt for content callers
+ * Update Tor Launcher to 0.2.7.1
+ * Bug 14122: Hide logo if TOR_HIDE_BROWSER_LOGO set
+ * Translation updates
+ * Bug 13379: Sign our MAR files
+ * Bug 13788: Fix broken meek in 4.5-alpha series
+ * Bug 13439: No canvas prompt for content callers
Tor Browser 4.0.3 -- Jan 13 2015
* All Platforms
@@ -96,10 +96,8 @@ Tor Browser 4.0.2 -- Dec 2 2014
* Update Torbutton to 1.7.0.2
* Bug 13019: Synchronize locale spoofing pref with our Firefox patch
* Bug 13746: Properly link Torbutton UI to thirdparty pref.
- * Bug 13742: Fix domain isolation for content cache and disk-enabled
-browsing mode
- * Bug 5926: Prevent JS engine locale leaks (by setting the C library
-locale)
+ * Bug 13742: Fix domain isolation for content cache and disk-enabled browsing mode
+ * Bug 5926: Prevent JS engine locale leaks (by setting the C library locale)
* Bug 13504: Remove unreliable/unreachable non-public bridges
* Bug 13435: Remove our custom POODLE fix
* Windows
1
0

18 Feb '15
commit 3dad5b190785b34ecfbb293a8bbc56f5cb2f6665
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed Feb 18 12:48:44 2015 -0800
Mention bug 14448 in changelog.
---
src/CHANGELOG | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/CHANGELOG b/src/CHANGELOG
index 11fa776..97db954 100644
--- a/src/CHANGELOG
+++ b/src/CHANGELOG
@@ -16,6 +16,7 @@
* Bug 13406: Stop directing users to download-easy.html.en on update
* Bug 9387: Handle "custom" mode better in Security Slider
* Bug 12430: Bind jar: pref to Security Slider
+ * Bug 14448: Restore Torbutton menu operation on non-English localizations
1.8.1.3
* Bug 13998: Handle changes in NoScript 2.6.9.8+
1
0

18 Feb '15
commit a50335676cb8d62eb255f0ce206b82cb553e0fc5
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed Feb 18 12:36:27 2015 -0800
Add changelog for 1.9.0.0 + bump version.
---
src/CHANGELOG | 19 +++++++++++++++++++
src/install.rdf | 2 +-
2 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/src/CHANGELOG b/src/CHANGELOG
index a3e859e..11fa776 100644
--- a/src/CHANGELOG
+++ b/src/CHANGELOG
@@ -1,3 +1,22 @@
+1.9.0.0
+ * Bug 13882: Fix display of bridges after bridge settings have been changed
+ * Bug 5698: Use "Tor Browser" branding in "About Tor Browser" dialog
+ * Bug 10280: Strings and pref for preventing plugin initialization.
+ * Bug 14866: Show correct circuit when more than one exists for a given domain
+ * Bug 9442: Add New Circuit button to Torbutton menu
+ * Bug 9906: Warn users before closing all windows and performing new identity.
+ * Bug 8400: Prompt for restart if disk records are enabled/disabled.
+ * Bug 14630: Hide Torbutton's proxy settings tab.
+ * Bug 14632: Disable Cookie Manager until we get it working.
+ * Bug 11175: Remove "About Torbutton" from onion menu.
+ * Bug 13900: Remove SafeCache code.
+ * Bug 14490: Use Disconnect search in about:tor search box
+ * Bug 14392: Don't steal input focus in about:tor search box
+ * Bug 11236: Don't set omnibox order in Torbutton (to prevent translation)
+ * Bug 13406: Stop directing users to download-easy.html.en on update
+ * Bug 9387: Handle "custom" mode better in Security Slider
+ * Bug 12430: Bind jar: pref to Security Slider
+
1.8.1.3
* Bug 13998: Handle changes in NoScript 2.6.9.8+
* Bug 14100: Option to hide NetworkSettings menuitem
diff --git a/src/install.rdf b/src/install.rdf
index e4045ad..b5a8e88 100644
--- a/src/install.rdf
+++ b/src/install.rdf
@@ -6,7 +6,7 @@
<em:name>Torbutton</em:name>
<em:creator>Mike Perry</em:creator>
<em:id>torbutton(a)torproject.org</em:id>
- <em:version>1.8.1.3</em:version>
+ <em:version>1.9.0.0</em:version>
<em:homepageURL>https://www.torproject.org/projects/torbrowser.html.en</em:homepageURL>
<em:optionsURL>chrome://torbutton/content/preferences.xul</em:optionsURL>
<em:iconURL>chrome://torbutton/skin/tor.png</em:iconURL>
1
0

[torbutton/master] Bug #13882: Fix display of bridges after bridge settings have been changed
by mikeperry@torproject.org 18 Feb '15
by mikeperry@torproject.org 18 Feb '15
18 Feb '15
commit de8cb7a32e0d2a70812322ce1d6a1f4627ef33f0
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Mon Feb 16 17:47:13 2015 -0800
Bug #13882: Fix display of bridges after bridge settings have been changed
---
src/chrome/content/tor-circuit-display.js | 71 ++++++++++-------------
src/modules/tor-control-port.js | 88 ++++++++++++++++++++++-------
2 files changed, 99 insertions(+), 60 deletions(-)
diff --git a/src/chrome/content/tor-circuit-display.js b/src/chrome/content/tor-circuit-display.js
index 35a7dfc..e2628b4 100644
--- a/src/chrome/content/tor-circuit-display.js
+++ b/src/chrome/content/tor-circuit-display.js
@@ -43,41 +43,23 @@ let logger = Cc["@torproject.org/torbutton-logger;1"]
let credentialsToNodeDataMap = {},
// A mutable map that reports `true` for IDs of "mature" circuits
// (those that have conveyed a stream).
- knownCircuitIDs = {},
- // A map from bridge fingerprint to its IP address.
- bridgeIDtoIPmap = new Map();
+ knownCircuitIDs = {};
// __trimQuotes(s)__.
// Removes quotation marks around a quoted string.
let trimQuotes = s => s ? s.match(/^\"(.*)\"$/)[1] : undefined;
-// __readBridgeIPs(controller)__.
-// Gets a map from bridge ID to bridge IP, and stores it
-// in `bridgeIDtoIPmap`.
-let readBridgeIPs = function (controller) {
- Task.spawn(function* () {
- let configText = yield controller.getInfo("config-text"),
- bridgeEntries = configText.Bridge;
- if (bridgeEntries) {
- bridgeEntries.map(entry => {
- let IPplusPort, ID,
- tokens = entry.split(/\s+/);
- // First check if we have a "vanilla" bridge:
- if (tokens[0].match(/^\d+\.\d+\.\d+\.\d+/)) {
- [IPplusPort, ID] = tokens;
- // Several bridge types have a similar format:
- } else if (["fte", "obfs3", "obfs4", "scramblesuit"]
- .indexOf(tokens[0]) >= 0) {
- [IPplusPort, ID] = tokens.slice(1);
- }
- // (For now, we aren't dealing with meek bridges and flashproxy.)
- if (IPplusPort && ID) {
- let IP = IPplusPort.split(":")[0];
- bridgeIDtoIPmap.set(ID.toUpperCase(), IP);
- }
- });
+// __getBridge(id)__.
+// Gets the bridge parameters for a given node ID. If the node
+// is not currently used as a bridge, returns null.
+let getBridge = function* (controller, id) {
+ let bridges = yield controller.getConf("bridge");
+ for (let bridge of bridges) {
+ if (bridge.ID.toUpperCase() === id.toUpperCase()) {
+ return bridge;
}
- }).then(null, Cu.reportError);
+ }
+ return null;
};
// nodeDataForID(controller, id)__.
@@ -85,17 +67,22 @@ let readBridgeIPs = function (controller) {
// Example: `nodeDataForID(controller, "20BC91DC525C3DC9974B29FBEAB51230DE024C44")`
// => `{ type : "default", ip : "12.23.34.45", countryCode : "fr" }`
let nodeDataForID = function* (controller, id) {
- let result = {}; // type, ip, countryCode;
- if (bridgeIDtoIPmap.has(id.toUpperCase())) {
- result.ip = bridgeIDtoIPmap.get(id.toUpperCase());
+ let result = {},
+ bridge = yield getBridge(controller, id); // type, ip, countryCode;
+ if (bridge) {
result.type = "bridge";
- } else {
- // Get the IP address for the given node ID.
+ result.bridgeType = bridge.type;
+ // Attempt to get an IP address from bridge address string.
try {
- let statusMap = yield controller.getInfo("ns/id/" + id);
- result.ip = statusMap.IP;
+ result.ip = bridge.address.split(":")[0];
} catch (e) { }
+ } else {
result.type = "default";
+ // Get the IP address for the given node ID.
+ try {
+ let statusMap = yield controller.getInfo("ns/id/" + id);
+ result.ip = statusMap.IP;
+ } catch (e) { }
}
if (result.ip) {
// Get the country code for the node's IP address.
@@ -141,8 +128,10 @@ let collectIsolationData = function (aController) {
logger.eclog(3, "streamEvent.CircuitID: " + streamEvent.CircuitID);
knownCircuitIDs[streamEvent.CircuitID] = true;
let circuitStatus = yield getCircuitStatusByID(aController, streamEvent.CircuitID),
- credentials = trimQuotes(circuitStatus.SOCKS_USERNAME) + ":" +
- trimQuotes(circuitStatus.SOCKS_PASSWORD);
+ credentials = circuitStatus ?
+ (trimQuotes(circuitStatus.SOCKS_USERNAME) + ":" +
+ trimQuotes(circuitStatus.SOCKS_PASSWORD)) :
+ null;
if (credentials) {
let nodeData = yield nodeDataForCircuit(aController, circuitStatus);
credentialsToNodeDataMap[credentials] = nodeData;
@@ -195,11 +184,12 @@ let showCircuitDisplay = function (show) {
// `"France (12.34.56.78)"`.
let nodeLines = function (nodeData) {
let result = [uiString("this_browser")];
- for (let {ip, countryCode, type} of nodeData) {
+ for (let {ip, countryCode, type, bridgeType} of nodeData) {
let bridge = type === "bridge";
result.push((countryCode ? localizedCountryNameFromCode(countryCode)
: uiString("unknown_country")) +
- " (" + (bridge ? uiString("tor_bridge")
+ " (" + (bridge ? (uiString("tor_bridge") +
+ ((bridgeType !== "vanilla") ? (": " + bridgeType) : ""))
: (ip || uiString("ip_unknown"))) + ")");
}
result[4] = uiString("internet");
@@ -340,7 +330,6 @@ let setupDisplay = function (host, port, password, enablePrefName) {
logger.eclog(5, "Disabling tor display circuit because of an error.");
stop();
});
- readBridgeIPs(myController);
syncDisplayWithSelectedTab(true);
collectIsolationData(myController);
}
diff --git a/src/modules/tor-control-port.js b/src/modules/tor-control-port.js
index 3fa7756..a55a0d8 100644
--- a/src/modules/tor-control-port.js
+++ b/src/modules/tor-control-port.js
@@ -372,22 +372,22 @@ utils.listMapData = function (parameterString, listNames) {
};
// ## info
-// A namespace for functions related to tor's GETINFO command.
+// A namespace for functions related to tor's GETINFO and GETCONF command.
let info = info || {};
// __info.keyValueStringsFromMessage(messageText)__.
-// Takes a message (text) response to GETINFO and provides a series of key-value
-// strings, which are either multiline (with a `250+` prefix):
+// Takes a message (text) response to GETINFO or GETCONF and provides
+// a series of key-value strings, which are either multiline (with a `250+` prefix):
//
// 250+config/defaults=
// AccountingMax "0 bytes"
// AllowDotExit "0"
// .
//
-// or single-line (with a `250-` prefix):
+// or single-line (with a `250-` or `250 ` prefix):
//
// 250-version=0.2.6.0-alpha-dev (git-b408125288ad6943)
-info.keyValueStringsFromMessage = utils.extractor(/^(250\+[\s\S]+?^\.|250-.+?)$/gmi);
+info.keyValueStringsFromMessage = utils.extractor(/^(250\+[\s\S]+?^\.|250[-\ ].+?)$/gmi);
// __info.applyPerLine(transformFunction)__.
// Returns a function that splits text into lines,
@@ -462,9 +462,33 @@ info.configTextParser = function(text) {
return result;
};
+
+// __info.bridgeParser(bridgeLine)__.
+// Takes a single line from a `getconf bridge` result and returns
+// a map containing the bridge's type, address, and ID.
+info.bridgeParser = function(bridgeLine) {
+ let result = {},
+ tokens = bridgeLine.split(/\s+/);
+ // First check if we have a "vanilla" bridge:
+ if (tokens[0].match(/^\d+\.\d+\.\d+\.\d+/)) {
+ result.type = "vanilla";
+ [result.address, result.ID] = tokens;
+ // Several bridge types have a similar format:
+ } else {
+ result.type = tokens[0];
+ if (["fte", "obfs3", "obfs4", "scramblesuit"]
+ .indexOf(result.type) >= 0) {
+ [result.address, result.ID] = tokens.slice(1);
+ } else if (result.type === "meek") {
+ // do nothing for now
+ }
+ }
+ return result.type ? result : null;
+};
+
// __info.parsers__.
-// A map of GETINFO keys to parsing function, which convert result strings to JavaScript
-// data.
+// A map of GETINFO and GETCONF keys to parsing function, which convert
+// result strings to JavaScript data.
info.parsers = {
"version" : utils.identity,
"config-file" : utils.identity,
@@ -474,7 +498,8 @@ info.parsers = {
"ns/name/" : info.routerStatusParser,
"ip-to-country/" : utils.identity,
"circuit-status" : info.applyPerLine(info.circuitStatusParser),
- "stream-status" : info.applyPerLine(info.streamStatusParser)
+ "stream-status" : info.applyPerLine(info.streamStatusParser),
+ "bridge" : info.bridgeParser
};
// __info.getParser(key)__.
@@ -482,22 +507,37 @@ info.parsers = {
// convert its corresponding valueString to JavaScript data.
info.getParser = function(key) {
return info.parsers[key] ||
- info.parsers[key.substring(0, key.lastIndexOf("/") + 1)] ||
- "unknown";
+ info.parsers[key.substring(0, key.lastIndexOf("/") + 1)];
};
// __info.stringToValue(string)__.
-// Converts a key-value string as from GETINFO to a value.
+// Converts a key-value string as from GETINFO or GETCONF to a value.
info.stringToValue = function (string) {
// key should look something like `250+circuit-status=` or `250-circuit-status=...`
- let key = string.match(/^250[\+-](.+?)=/mi)[1],
- // matchResult finds a single-line result for `250-` or a multi-line one for `250+`.
- matchResult = string.match(/250\-.+?=(.*?)$/mi) ||
+ // or `250 circuit-status...`
+ let matchForKey = string.match(/^250[ +-](.+?)=/mi),
+ key = matchForKey ? matchForKey[1] : null;
+ if (key === null) return null;
+ // matchResult finds a single-line result for `250-` or a multi-line one for `250+`.
+ let matchResult = string.match(/250[ -].+?=(.*?)$/mi) ||
string.match(/250\+.+?=([\s\S]*?)^\.$/mi),
// Retrieve the captured group (the text of the value in the key-value pair)
- valueString = matchResult ? matchResult[1] : null;
- // Return value where the latter has been parsed according to the key requested.
- return info.getParser(key)(valueString);
+ valueString = matchResult ? matchResult[1] : null,
+ // Get the parser functino for the key found.
+ parse = info.getParser(key.toLowerCase());
+ if (parse === undefined) {
+ throw new Error("No parser found for '" + key + "'");
+ }
+ // Return value produced by the parser.
+ return parse(valueString);
+};
+
+// __info.getMultipleResponseValues(message)__.
+// Process multiple responses to a GETINFO or GETCONF request.
+info.getMultipleResponseValues = function (message) {
+ return info.keyValueStringsFromMessage(message)
+ .map(info.stringToValue)
+ .filter(utils.identity);
};
// __info.getInfoMultiple(aControlSocket, keys)__.
@@ -519,8 +559,7 @@ info.getInfoMultiple = function (aControlSocket, keys) {
}
*/
return aControlSocket.sendCommand("getinfo " + keys.join(" "))
- .then(message => info.keyValueStringsFromMessage(message)
- .map(info.stringToValue));
+ .then(info.getMultipleResponseValues);
};
// __info.getInfo(controlSocket, key)__.
@@ -537,6 +576,16 @@ info.getInfo = function (aControlSocket, key) {
return info.getInfoMultiple(aControlSocket, [key]).then(data => data[0]);
};
+// __info.getConf(aControlSocket, key)__.
+// Sends GETCONF for a single key. Returns a promise with the result.
+info.getConf = function (aControlSocket, key) {
+ // GETCONF with a single argument returns results that look like
+ // results from GETINFO with multiple arguments.
+ // So we can use the same kind of parsing for
+ return aControlSocket.sendCommand("getconf " + key)
+ .then(info.getMultipleResponseValues);
+};
+
// ## event
// Handlers for events
@@ -587,6 +636,7 @@ tor.controller = function (host, port, password, onError) {
isOpen = true;
return { getInfo : key => info.getInfo(socket, key),
getInfoMultiple : keys => info.getInfoMultiple(socket, keys),
+ getConf : key => info.getConf(socket, key),
watchEvent : function (type, filter, onData) {
event.watchEvent(socket, type, filter, onData);
},
1
0

[torbutton/master] Merge remote-tracking branch 'arthur/13882+'
by mikeperry@torproject.org 18 Feb '15
by mikeperry@torproject.org 18 Feb '15
18 Feb '15
commit 3692388e5262cd6a5b9ffcd1a950b04e56933e18
Merge: 7fd169e de8cb7a
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed Feb 18 11:41:32 2015 -0800
Merge remote-tracking branch 'arthur/13882+'
src/chrome/content/tor-circuit-display.js | 71 ++++++++++-------------
src/modules/tor-control-port.js | 88 ++++++++++++++++++++++-------
2 files changed, 99 insertions(+), 60 deletions(-)
1
0

[tor-browser/tor-browser-31.4.0esr-4.5-1] fixup! TB4: Tor Browser's Firefox preference overrides.
by mikeperry@torproject.org 18 Feb '15
by mikeperry@torproject.org 18 Feb '15
18 Feb '15
commit 9a5a1cec6b3449c1f5f3706823ec5b1ff31e40d0
Author: Georg Koppen <gk(a)torproject.org>
Date: Wed Feb 18 14:21:49 2015 +0000
fixup! TB4: Tor Browser's Firefox preference overrides.
It turns out that the fix for #11236 still contains too much
randomnees for our taste if more than two search engines are specified
to be on the top. Fall back to just two.
---
browser/app/profile/000-tor-browser.js | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/browser/app/profile/000-tor-browser.js b/browser/app/profile/000-tor-browser.js
index cb59517..ceb9394 100644
--- a/browser/app/profile/000-tor-browser.js
+++ b/browser/app/profile/000-tor-browser.js
@@ -153,11 +153,11 @@ pref("browser.uiCustomization.state", "{\"placements\":{\"PanelUI-contents\":[\"
pref("browser.search.defaultenginename", "Search");
// Search engine order (order displayed in the search bar dropdown)
-// Somewhat surprisingly we get Disconnect - YouTube - Twitter as the order
-// only if we set them as below.
-pref("browser.search.order.extra.1", "YouTube");
-pref("browser.search.order.extra.2", "Twitter");
-pref("browser.search.order.extra.3", "Search");
+// Somewhat surprisingly we get some random behavior if we specify more than
+// two search engines as below. See
+// https://bugzilla.mozilla.org/show_bug.cgi?id=1126722 for details.
+pref("browser.search.order.extra.1", "Search");
+pref("browser.search.order.extra.2", "YouTube");
// Hacks/workarounds: Direct2D seems to crash w/ lots of video cards w/ MinGW?
// Nvida cards also experience crashes without the second pref set to disabled
1
0

[tor-browser-bundle/master] Bug 13717: Make sure we use the bash on Linux
by gk@torproject.org 18 Feb '15
by gk@torproject.org 18 Feb '15
18 Feb '15
commit d02cbafea85464044e2117913310ddd77c81efc7
Author: Georg Koppen <gk(a)torproject.org>
Date: Wed Feb 18 16:53:08 2015 +0000
Bug 13717: Make sure we use the bash on Linux
This is basically a patch by a cypherpunk. Additionally, this commit
contains a small clean-up of the shell script.
---
RelativeLink/RelativeLink.sh | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
diff --git a/RelativeLink/RelativeLink.sh b/RelativeLink/RelativeLink.sh
index e75482a..8c51f47 100755
--- a/RelativeLink/RelativeLink.sh
+++ b/RelativeLink/RelativeLink.sh
@@ -5,20 +5,28 @@
#
# To run in debug mode simply pass --debug
#
-# Copyright 2014 The Tor Project. See LICENSE for licensing information.
+# Copyright 2015 The Tor Project. See LICENSE for licensing information.
-complain_dialog_title="Tor Browser Bundle"
+complain_dialog_title="Tor Browser"
# First, make sure DISPLAY is set. If it isn't, we're hosed; scream
# at stderr and die.
if [ "x$DISPLAY" = "x" ]; then
- echo "$complain_dialog_title must be run within the X Window System." >&2
- echo "Exiting." >&2
- exit 1
+ echo "$complain_dialog_title must be run within the X Window System." >&2
+ echo "Exiting." >&2
+ exit 1
+fi
+
+# Second, make sure this script wasn't started as 'sh start-tor-browser' or
+# similar.
+if [ "x$BASH" = "x" ]; then
+ echo "$complain_dialog_title should be started as './start-tor-browser'"
+ echo "Exiting." >&2
+ exit 1;
fi
-# Do not (try to) connect to the session manager
-unset SESSION_MANAGER
+# Do not (try to) connect to the session manager
+unset SESSION_MANAGER
# Determine whether we are running in a terminal. If we are, we
# should send our error messages to stderr...
1
0

[tor-browser-bundle/master] Switch the scramblesuit pluggable transport provider to obfs4proxy.
by gk@torproject.org 18 Feb '15
by gk@torproject.org 18 Feb '15
18 Feb '15
commit 092dbbf7ee2a1a29a386f50dc1a1bec17a398f6b
Author: Yawning Angel <yawning(a)schwanenlied.me>
Date: Tue Feb 17 12:42:34 2015 +0000
Switch the scramblesuit pluggable transport provider to obfs4proxy.
---
Bundle-Data/PTConfigs/linux/torrc-defaults-appendix | 5 +----
Bundle-Data/PTConfigs/mac/torrc-defaults-appendix | 5 +----
Bundle-Data/PTConfigs/windows/torrc-defaults-appendix | 5 +----
3 files changed, 3 insertions(+), 12 deletions(-)
diff --git a/Bundle-Data/PTConfigs/linux/torrc-defaults-appendix b/Bundle-Data/PTConfigs/linux/torrc-defaults-appendix
index 50e03fd..d0885ff 100644
--- a/Bundle-Data/PTConfigs/linux/torrc-defaults-appendix
+++ b/Bundle-Data/PTConfigs/linux/torrc-defaults-appendix
@@ -1,11 +1,8 @@
## fteproxy configuration
ClientTransportPlugin fte exec ./TorBrowser/Tor/PluggableTransports/fteproxy.bin --managed
-## obfsproxy configuration
-ClientTransportPlugin scramblesuit exec ./TorBrowser/Tor/PluggableTransports/obfsproxy.bin managed
-
## obfs4proxy configuration
-ClientTransportPlugin obfs2,obfs3,obfs4 exec ./TorBrowser/Tor/PluggableTransports/obfs4proxy
+ClientTransportPlugin obfs2,obfs3,obfs4,scramblesuit exec ./TorBrowser/Tor/PluggableTransports/obfs4proxy
## flash proxy configuration
#
diff --git a/Bundle-Data/PTConfigs/mac/torrc-defaults-appendix b/Bundle-Data/PTConfigs/mac/torrc-defaults-appendix
index 604098f..0dee29b 100644
--- a/Bundle-Data/PTConfigs/mac/torrc-defaults-appendix
+++ b/Bundle-Data/PTConfigs/mac/torrc-defaults-appendix
@@ -1,11 +1,8 @@
## fteproxy configuration
ClientTransportPlugin fte exec PluggableTransports/fteproxy.bin --managed
-## obfsproxy configuration
-ClientTransportPlugin scramblesuit exec PluggableTransports/obfsproxy.bin managed
-
## obfs4proxy configuration
-ClientTransportPlugin obfs2,obfs3,obfs4 exec PluggableTransports/obfs4proxy
+ClientTransportPlugin obfs2,obfs3,obfs4,scramblesuit exec PluggableTransports/obfs4proxy
## flash proxy configuration
#
diff --git a/Bundle-Data/PTConfigs/windows/torrc-defaults-appendix b/Bundle-Data/PTConfigs/windows/torrc-defaults-appendix
index d92d201..f287e3e 100644
--- a/Bundle-Data/PTConfigs/windows/torrc-defaults-appendix
+++ b/Bundle-Data/PTConfigs/windows/torrc-defaults-appendix
@@ -1,11 +1,8 @@
## fteproxy configuration
ClientTransportPlugin fte exec TorBrowser\Tor\PluggableTransports\fteproxy --managed
-## obfsproxy configuration
-ClientTransportPlugin scramblesuit exec TorBrowser\Tor\PluggableTransports\obfsproxy managed
-
## obfs4proxy configuration
-ClientTransportPlugin obfs2,obfs3,obfs4 exec TorBrowser\Tor\PluggableTransports\obfs4proxy
+ClientTransportPlugin obfs2,obfs3,obfs4,scramblesuit exec TorBrowser\Tor\PluggableTransports\obfs4proxy
## flash proxy configuration
#
1
0
commit c268ca1dab6a1dbcd106da29c47390c9d834b420
Merge: 0119a3c 092dbbf
Author: Georg Koppen <gk(a)torproject.org>
Date: Wed Feb 18 13:33:50 2015 +0000
Merge branch 'bug14919'
Bundle-Data/PTConfigs/linux/torrc-defaults-appendix | 5 +----
Bundle-Data/PTConfigs/mac/torrc-defaults-appendix | 5 +----
Bundle-Data/PTConfigs/windows/torrc-defaults-appendix | 5 +----
gitian/descriptors/linux/gitian-pluggable-transports.yml | 12 ------------
gitian/descriptors/mac/gitian-pluggable-transports.yml | 12 ------------
gitian/descriptors/windows/gitian-pluggable-transports.yml | 12 ------------
gitian/fetch-inputs.sh | 5 ++---
gitian/verify-tags.sh | 2 +-
gitian/versions.alpha | 5 +----
gitian/versions.nightly | 3 ---
10 files changed, 7 insertions(+), 59 deletions(-)
1
0

[tor-browser-bundle/master] Switch to obfs4proxy-0.0.4, and remove references to go.crypto.
by gk@torproject.org 18 Feb '15
by gk@torproject.org 18 Feb '15
18 Feb '15
commit dd5f93f2fc8721ee83f1dbe650a877fe68b1b43a
Author: Yawning Angel <yawning(a)schwanenlied.me>
Date: Tue Feb 17 12:41:24 2015 +0000
Switch to obfs4proxy-0.0.4, and remove references to go.crypto.
The new version of obfs4proxy uses golang.org/x/crypto, which has been
already integrated as part of the nightly build process, so this is a
tag change and removal of the deprecated library only.
---
gitian/descriptors/linux/gitian-pluggable-transports.yml | 12 ------------
gitian/descriptors/mac/gitian-pluggable-transports.yml | 12 ------------
gitian/descriptors/windows/gitian-pluggable-transports.yml | 12 ------------
gitian/fetch-inputs.sh | 5 ++---
gitian/verify-tags.sh | 2 +-
gitian/versions.alpha | 5 +----
gitian/versions.nightly | 3 ---
7 files changed, 4 insertions(+), 47 deletions(-)
diff --git a/gitian/descriptors/linux/gitian-pluggable-transports.yml b/gitian/descriptors/linux/gitian-pluggable-transports.yml
index d180f97..9596b7f 100644
--- a/gitian/descriptors/linux/gitian-pluggable-transports.yml
+++ b/gitian/descriptors/linux/gitian-pluggable-transports.yml
@@ -54,7 +54,6 @@ files:
- "gmp-linux64-utils.zip"
- "openssl-linux32-utils.zip"
- "openssl-linux64-utils.zip"
-- "go.crypto.tar.bz2"
- "go.net.tar.bz2"
script: |
INSTDIR="$HOME/install"
@@ -254,17 +253,6 @@ script: |
go install golang.org/x/crypto/nacl/secretbox
cd ..
- # Building go.crypto (obfs4proxy <= 0.0.3)
- tar xjf go.crypto.tar.bz2
- cd go.crypto
- find -type f | xargs touch --date="$REFERENCE_DATETIME"
- mkdir -p "$GOPATH/src/code.google.com/p/"
- ln -sf "$PWD" "$GOPATH/src/code.google.com/p/go.crypto"
- go install code.google.com/p/go.crypto/curve25519
- go install code.google.com/p/go.crypto/hkdf
- go install code.google.com/p/go.crypto/nacl/secretbox
- cd ..
-
# Building go.net
tar xjf go.net.tar.bz2
cd go.net
diff --git a/gitian/descriptors/mac/gitian-pluggable-transports.yml b/gitian/descriptors/mac/gitian-pluggable-transports.yml
index 9a86b1a..a1bdff9 100644
--- a/gitian/descriptors/mac/gitian-pluggable-transports.yml
+++ b/gitian/descriptors/mac/gitian-pluggable-transports.yml
@@ -50,7 +50,6 @@ files:
- "apple-uni-sdk-10.6_20110407-0.flosoft1_i386.deb"
- "multiarch-darwin11-cctools127.2-gcc42-5666.3-llvmgcc42-2336.1-Linux-120724.tar.xz"
- "dzip.sh"
-- "go.crypto.tar.bz2"
- "go.net.tar.bz2"
- "gmp-mac64-utils.zip"
- "openssl-mac64-utils.zip"
@@ -282,17 +281,6 @@ script: |
go install golang.org/x/crypto/nacl/secretbox
cd ..
- # Building go.crypto (obfs4proxy <= 0.0.3)
- tar xjf go.crypto.tar.bz2
- cd go.crypto
- find -type f | xargs touch --date="$REFERENCE_DATETIME"
- mkdir -p "$GOPATH/src/code.google.com/p/"
- ln -sf "$PWD" "$GOPATH/src/code.google.com/p/go.crypto"
- go install code.google.com/p/go.crypto/curve25519
- go install code.google.com/p/go.crypto/hkdf
- go install code.google.com/p/go.crypto/nacl/secretbox
- cd ..
-
# Building go.net
tar xjf go.net.tar.bz2
cd go.net
diff --git a/gitian/descriptors/windows/gitian-pluggable-transports.yml b/gitian/descriptors/windows/gitian-pluggable-transports.yml
index 6e3c3a7..4ca477e 100644
--- a/gitian/descriptors/windows/gitian-pluggable-transports.yml
+++ b/gitian/descriptors/windows/gitian-pluggable-transports.yml
@@ -57,7 +57,6 @@ files:
- "openssl-win32-utils.zip"
- "gmp-win32-utils.zip"
- "gcclibs-win32-utils.zip"
-- "go.crypto.tar.bz2"
- "go.net.tar.bz2"
script: |
# Set the timestamp on every .pyc file in a zip file, and re-dzip the zip file.
@@ -360,17 +359,6 @@ script: |
go install golang.org/x/crypto/nacl/secretbox
cd ..
- # Building go.crypto (obfs4proxy <= 0.0.3)
- tar xjf go.crypto.tar.bz2
- cd go.crypto
- find -type f | xargs touch --date="$REFERENCE_DATETIME"
- mkdir -p "$GOPATH/src/code.google.com/p/"
- ln -sf "$PWD" "$GOPATH/src/code.google.com/p/go.crypto"
- go install code.google.com/p/go.crypto/curve25519
- go install code.google.com/p/go.crypto/hkdf
- go install code.google.com/p/go.crypto/nacl/secretbox
- cd ..
-
# Building go.net
tar xjf go.net.tar.bz2
cd go.net
diff --git a/gitian/fetch-inputs.sh b/gitian/fetch-inputs.sh
index fdbbc69..e58c4d3 100755
--- a/gitian/fetch-inputs.sh
+++ b/gitian/fetch-inputs.sh
@@ -165,7 +165,7 @@ done
# XXX/Yawning. As far as I can tell, this gitian thing doesn't support
# fetching from hg repositories.
-for i in GOCRYPTO GONET
+for i in GONET
do
PACKAGE="${i}_PACKAGE"
URL="${MIRROR_URL_YAWNING}${!PACKAGE}"
@@ -178,7 +178,7 @@ wget -U "" -N ${HTTPSE_URL}
# Verify packages with weak or no signatures via direct sha256 check
# (OpenSSL is signed with MD5, and OSXSDK is not signed at all)
-for i in OSXSDK TOOLCHAIN4 TOOLCHAIN4_OLD NOSCRIPT HTTPSE MSVCR100 PYCRYPTO ARGPARSE PYYAML ZOPEINTERFACE TWISTED M2CRYPTO SETUPTOOLS OPENSSL GMP PARSLEY GO GCC GOCRYPTO GONET
+for i in OSXSDK TOOLCHAIN4 TOOLCHAIN4_OLD NOSCRIPT HTTPSE MSVCR100 PYCRYPTO ARGPARSE PYYAML ZOPEINTERFACE TWISTED M2CRYPTO SETUPTOOLS OPENSSL GMP PARSLEY GO GCC GONET
do
PACKAGE="${i}_PACKAGE"
HASH="${i}_HASH"
@@ -233,7 +233,6 @@ ln -sf "$LXML_PACKAGE" lxml.tar.gz
ln -sf "$PARSLEY_PACKAGE" parsley.tar.gz
ln -sf "$GO_PACKAGE" go.tar.gz
ln -sf "$GONET_PACKAGE" go.net.tar.bz2
-ln -sf "$GOCRYPTO_PACKAGE" go.crypto.tar.bz2
# Fetch latest gitian-builder itself
# XXX - this is broken if a non-standard inputs dir is selected using the command line flag.
diff --git a/gitian/verify-tags.sh b/gitian/verify-tags.sh
index df30143..eb1e057 100755
--- a/gitian/verify-tags.sh
+++ b/gitian/verify-tags.sh
@@ -140,7 +140,7 @@ done
# Verify packages with weak or no signatures via direct sha256 check
# (OpenSSL is signed with MD5, and OSXSDK is not signed at all)
-for i in OSXSDK TOOLCHAIN4 TOOLCHAIN4_OLD NOSCRIPT HTTPSE MSVCR100 PYCRYPTO ARGPARSE PYYAML ZOPEINTERFACE TWISTED M2CRYPTO SETUPTOOLS OPENSSL GMP PARSLEY GO GCC GOCRYPTO GONET
+for i in OSXSDK TOOLCHAIN4 TOOLCHAIN4_OLD NOSCRIPT HTTPSE MSVCR100 PYCRYPTO ARGPARSE PYYAML ZOPEINTERFACE TWISTED M2CRYPTO SETUPTOOLS OPENSSL GMP PARSLEY GO GCC GONET
do
PACKAGE="${i}_PACKAGE"
HASH="${i}_HASH"
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index e5668f2..0e258aa 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -30,7 +30,7 @@ FAKETIME_TAG=70aa6b394d9341522dffe8a5a5cf5929e82cc6b9 # unsigned v0.9.6
GOED25519_TAG=c4161f4c7483313562781c61b9a20aba73daf9de
GOSIPHASH_TAG=42ba037e748c9062a75e0924705c43b893edefcd
GO_X_CRYPTO_TAG=4ed45ec682102c643324fae5dff8dab085b6c300
-OBFS4_TAG=obfs4proxy-0.0.3
+OBFS4_TAG=obfs4proxy-0.0.4
GITIAN_TAG=tor-browser-builder-3.x-7
@@ -78,7 +78,6 @@ SETUPTOOLS_PACKAGE=setuptools-${SETUPTOOLS_VER}.tar.gz
LXML_PACKAGE=lxml-${LXML_VER}.tar.gz
PARSLEY_PACKAGE=Parsley-${PARSLEY_VER}.tar.gz
GO_PACKAGE=go${GO_VER}.src.tar.gz
-GOCRYPTO_PACKAGE=go.crypto-5478be1963aa.tar.bz2
GONET_PACKAGE=go.net-9c0f9daaa74b.tar.bz2
# Hashes for packages with weak sigs or no sigs
@@ -101,7 +100,6 @@ SETUPTOOLS_HASH=75d288687066ed124311d6ca5f40ffa92a0e81adcd7fff318c6e84082713cf39
PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
GO_HASH=1bb6fde89cfe8b9756a875af55d994cce0994861227b5dc0f268c143d91cd5ff
GCC_HASH=d334781a124ada6f38e63b545e2a3b8c2183049515a1abab6d513f109f1d717e
-GOCRYPTO_HASH=a8e301714f5724999321f0397b867a5670a5e5c4f808ba157bdd93ee0d028827
GONET_HASH=1812fec55256e1a6fe546111cc658520b80972f38826c94ec11ef24315d32353
## Non-git package URLs
@@ -128,5 +126,4 @@ SETUPTOOLS_URL=https://pypi.python.org/packages/source/s/setuptools/${SETUP…
LXML_URL=https://pypi.python.org/packages/source/l/lxml/${LXML_PACKAGE}
PARSLEY_URL=https://pypi.python.org/packages/source/P/Parsley/${PARSLEY_PAC…
GO_URL=http://golang.org/dl/${GO_PACKAGE}
-GOCRYPTO_URL=https://people.torproject.org/~yawning/mirrors/sources/${GOCRYPTO_PACKAGE}
GONET_URL=https://people.torproject.org/~yawning/mirrors/sources/${GONET_PA…
diff --git a/gitian/versions.nightly b/gitian/versions.nightly
index 16519f5..a619cad 100755
--- a/gitian/versions.nightly
+++ b/gitian/versions.nightly
@@ -82,7 +82,6 @@ SETUPTOOLS_PACKAGE=setuptools-${SETUPTOOLS_VER}.tar.gz
LXML_PACKAGE=lxml-${LXML_VER}.tar.gz
PARSLEY_PACKAGE=Parsley-${PARSLEY_VER}.tar.gz
GO_PACKAGE=go${GO_VER}.src.tar.gz
-GOCRYPTO_PACKAGE=go.crypto-5478be1963aa.tar.bz2
GONET_PACKAGE=go.net-9c0f9daaa74b.tar.bz2
# Hashes for packages with weak sigs or no sigs
@@ -105,7 +104,6 @@ SETUPTOOLS_HASH=75d288687066ed124311d6ca5f40ffa92a0e81adcd7fff318c6e84082713cf39
PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
GO_HASH=1bb6fde89cfe8b9756a875af55d994cce0994861227b5dc0f268c143d91cd5ff
GCC_HASH=d334781a124ada6f38e63b545e2a3b8c2183049515a1abab6d513f109f1d717e
-GOCRYPTO_HASH=a8e301714f5724999321f0397b867a5670a5e5c4f808ba157bdd93ee0d028827
GONET_HASH=1812fec55256e1a6fe546111cc658520b80972f38826c94ec11ef24315d32353
## Non-git package URLs
@@ -132,5 +130,4 @@ SETUPTOOLS_URL=https://pypi.python.org/packages/source/s/setuptools/${SETUP…
LXML_URL=https://pypi.python.org/packages/source/l/lxml/${LXML_PACKAGE}
PARSLEY_URL=https://pypi.python.org/packages/source/P/Parsley/${PARSLEY_PAC…
GO_URL=http://golang.org/dl/${GO_PACKAGE}
-GOCRYPTO_URL=https://people.torproject.org/~yawning/mirrors/sources/${GOCRYPTO_PACKAGE}
GONET_URL=https://people.torproject.org/~yawning/mirrors/sources/${GONET_PA…
1
0

[torbutton/master] Bug #5698: Use "Tor Browser" branding in "About Tor Browser" dialog
by gk@torproject.org 18 Feb '15
by gk@torproject.org 18 Feb '15
18 Feb '15
commit 7fd169e56e60ff70254c2d60600fab88a03246da
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Sat Feb 14 16:58:44 2015 -0800
Bug #5698: Use "Tor Browser" branding in "About Tor Browser" dialog
---
src/chrome.manifest | 1 +
src/chrome/content/aboutDialog.xul | 56 ++++++++++++++++++++++++++++++++++
src/chrome/locale/en/aboutDialog.dtd | 19 ++++++++++++
src/chrome/skin/about-wordmark.png | Bin 0 -> 4609 bytes
src/chrome/skin/aboutDialog.css | 34 +++++++++++++++++++++
src/chrome/skin/default256.png | Bin 0 -> 48898 bytes
6 files changed, 110 insertions(+)
diff --git a/src/chrome.manifest b/src/chrome.manifest
index 2ab3c8f..6ef50dc 100644
--- a/src/chrome.manifest
+++ b/src/chrome.manifest
@@ -8,6 +8,7 @@ resource torbutton ./
# browser branding
override chrome://branding/locale/brand.dtd chrome://torbutton/locale/brand.dtd
override chrome://branding/locale/brand.properties chrome://torbutton/locale/brand.properties
+overlay chrome://browser/content/aboutDialog.xul chrome://torbutton/content/aboutDialog.xul
locale torbutton af chrome/locale/af/
locale torbutton ak chrome/locale/ak/
diff --git a/src/chrome/content/aboutDialog.xul b/src/chrome/content/aboutDialog.xul
new file mode 100644
index 0000000..5b89a81
--- /dev/null
+++ b/src/chrome/content/aboutDialog.xul
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?> <!-- -*- Mode: HTML -*- -->
+<?xml-stylesheet href="chrome://torbutton/skin/aboutDialog.css" type="text/css"?>
+
+<!DOCTYPE window [
+<!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
+%brandDTD;
+<!ENTITY % aboutDialogDTD SYSTEM "chrome://torbutton/locale/aboutDialog.dtd" >
+%aboutDialogDTD;
+]>
+
+<overlay id="main-overlay"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+ <vbox id="rightBox">
+ <vbox id="detailsBox">
+ <description class="text-blurb" id="projectDesc">
+ &project.start;
+ <label class="text-link"
+ href="https://www.torproject.org/">
+ &project.tpoLink;
+ </label>&project.end;
+ </description>
+ <description class="text-blurb" id="helpDesc">
+ &help.start;
+ <label class="text-link"
+ href="https://www.torproject.org/donate/donate.html.en">
+ &help.donateLink;
+ </label>
+ &help.or;
+ <label class="text-link"
+ href="https://www.torproject.org/getinvolved/volunteer.html.en">
+ &help.getInvolvedLink;
+ </label>&help.end;
+ </description>
+ </vbox>
+ </vbox>
+
+ <vbox id="bottomBox">
+ <hbox id="newBottom" pack="center" position="1">
+ <label class="text-link bottom-link"
+ href="https://www.torproject.org/docs/faq.html.en">
+ &bottomLinks.questions;
+ </label>
+ <label class="text-link bottom-link"
+ href="https://www.torproject.org/getinvolved/relays">
+ &bottomLinks.grow;
+ </label>
+ <label class="text-link bottom-link"
+ href="about:license">
+ &bottomLinks.license;
+ </label>
+ </hbox>
+ <description id="trademarkTor" insertafter="trademark">
+ &tor.TrademarkStatement;
+ </description>
+ </vbox>
+</overlay>
diff --git a/src/chrome/locale/en/aboutDialog.dtd b/src/chrome/locale/en/aboutDialog.dtd
new file mode 100644
index 0000000..844f4e0
--- /dev/null
+++ b/src/chrome/locale/en/aboutDialog.dtd
@@ -0,0 +1,19 @@
+<!ENTITY project.start "&brandShortName; is developed by ">
+<!-- LOCALIZATION NOTE (project.tpoLink): This is a link title that links to https://www.torproject.org -->
+<!ENTITY project.tpoLink "the &vendorShortName;">
+<!ENTITY project.end ", a nonprofit working to defend your privacy and freedom online.">
+
+<!ENTITY help.start "Want to help? ">
+<!-- LOCALIZATION NOTE (help.donate): This is a link title that links to https://www.torproject.org/donate/donate.html.en -->
+<!ENTITY help.donateLink "Donate">
+<!ENTITY help.or " or ">
+<!-- LOCALIZATION NOTE (help.getInvolvedLink): This is a link title that links to https://www.torproject.org/getinvolved/volunteer.html.en -->
+<!ENTITY help.getInvolvedLink "get involved">
+<!ENTITY help.end "!">
+<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to https://www.torproject.org/docs/trademark-faq.html.en -->
+<!ENTITY bottomLinks.questions "Questions?">
+<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to https://www.torproject.org/getinvolved/relays -->
+<!ENTITY bottomLinks.grow "Help the Tor Network Grow!">
+<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to about:license -->
+<!ENTITY bottomLinks.license "Licensing Information">
+<!ENTITY tor.TrademarkStatement "'Tor' and the 'Onion Logo' are registered trademarks of the Tor Project, Inc.">
diff --git a/src/chrome/skin/about-wordmark.png b/src/chrome/skin/about-wordmark.png
new file mode 100644
index 0000000..1becd87
Binary files /dev/null and b/src/chrome/skin/about-wordmark.png differ
diff --git a/src/chrome/skin/aboutDialog.css b/src/chrome/skin/aboutDialog.css
new file mode 100644
index 0000000..89eff53
--- /dev/null
+++ b/src/chrome/skin/aboutDialog.css
@@ -0,0 +1,34 @@
+#leftBox {
+ background-image: url('chrome://torbutton/skin/default256.png');
+ background-position: right top;
+ background-size: 180px;
+}
+
+#rightBox {
+ background-image: url('chrome://torbutton/skin/about-wordmark.png');
+ background-position: left top;
+}
+
+#contributeDesc {
+ display: none;
+}
+
+#communityDesc {
+ display: none;
+}
+
+#trademark {
+ display: none;
+}
+
+#trademarkTor {
+ font-size: xx-small;
+ text-align: center;
+ color: #999999;
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+
+#bottomBox > hbox:not(#newBottom) {
+ display: none;
+}
diff --git a/src/chrome/skin/default256.png b/src/chrome/skin/default256.png
new file mode 100644
index 0000000..3d440fb
Binary files /dev/null and b/src/chrome/skin/default256.png differ
1
0

[tor-browser/tor-browser-31.4.0esr-4.5-1] fixup! Bug #4234: Use the Firefox Update Process for TBB.
by gk@torproject.org 18 Feb '15
by gk@torproject.org 18 Feb '15
18 Feb '15
commit 25646ee4fcc9e6b910a1441616d744089a57dac5
Author: Georg Koppen <gk(a)torproject.org>
Date: Wed Feb 18 11:22:33 2015 +0000
fixup! Bug #4234: Use the Firefox Update Process for TBB.
Small indentation fix.
---
browser/base/content/aboutDialog.js | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/browser/base/content/aboutDialog.js b/browser/base/content/aboutDialog.js
index ba856d1..0a6ab8b 100644
--- a/browser/base/content/aboutDialog.js
+++ b/browser/base/content/aboutDialog.js
@@ -55,7 +55,8 @@ function init(aEvent)
let versionElem = document.getElementById("version");
if (versionElem)
versionElem.textContent = TOR_BROWSER_VERSION +
- " (based on Mozilla Firefox " + versionElem.textContent + ")";
+ " (based on Mozilla Firefox " +
+ versionElem.textContent + ")";
#endif
#ifdef MOZ_UPDATER
1
0

[tor-browser/tor-browser-31.4.0esr-4.5-1] fixup! Bug #4234: Use the Firefox Update Process for TBB.
by gk@torproject.org 18 Feb '15
by gk@torproject.org 18 Feb '15
18 Feb '15
commit 552bdedc60ddac8a7dba54363442bbfc282a94b5
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Mon Feb 16 14:50:51 2015 -0800
fixup! Bug #4234: Use the Firefox Update Process for TBB.
Cosmetic improvement for #5698
---
browser/base/content/aboutDialog.js | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/browser/base/content/aboutDialog.js b/browser/base/content/aboutDialog.js
index 652cbc1..ba856d1 100644
--- a/browser/base/content/aboutDialog.js
+++ b/browser/base/content/aboutDialog.js
@@ -54,7 +54,8 @@ function init(aEvent)
#ifdef TOR_BROWSER_VERSION
let versionElem = document.getElementById("version");
if (versionElem)
- versionElem.textContent += " (Tor Browser " + TOR_BROWSER_VERSION + ")";
+ versionElem.textContent = TOR_BROWSER_VERSION +
+ " (based on Mozilla Firefox " + versionElem.textContent + ")";
#endif
#ifdef MOZ_UPDATER
1
0

[tor-browser-bundle/maint-4.0] Disable software update windows in the meek HTTP helper.
by mikeperry@torproject.org 18 Feb '15
by mikeperry@torproject.org 18 Feb '15
18 Feb '15
commit cc24386ef907afe8414d147cef906d0d13f4aa10
Author: David Fifield <david(a)bamsoftware.com>
Date: Sat Feb 14 09:23:34 2015 +0000
Disable software update windows in the meek HTTP helper.
https://trac.torproject.org/projects/tor/ticket/14203
---
Bundle-Data/PTConfigs/meek-http-helper-user.js | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/Bundle-Data/PTConfigs/meek-http-helper-user.js b/Bundle-Data/PTConfigs/meek-http-helper-user.js
index 72bbb9b..23565d9 100644
--- a/Bundle-Data/PTConfigs/meek-http-helper-user.js
+++ b/Bundle-Data/PTConfigs/meek-http-helper-user.js
@@ -14,6 +14,10 @@ user_pref("security.ssl.disable_session_identifiers", false);
// https://support.mozilla.org/en-US/questions/951221#answer-410562
user_pref("toolkit.startup.max_resumed_crashes", -1);
+// Don't raise software update windows in this browser instance.
+// https://trac.torproject.org/projects/tor/ticket/14203
+user_pref("app.update.enabled", false);
+
// Set a failsafe blackhole proxy of 127.0.0.1:9, to prevent network interaction
// in case the user manages to open this profile with a normal browser UI (i.e.,
// not headless with the meek-http-helper extension running). Port 9 is
1
0

[tor-browser-bundle/master] Disable software update windows in the meek HTTP helper.
by mikeperry@torproject.org 18 Feb '15
by mikeperry@torproject.org 18 Feb '15
18 Feb '15
commit 0119a3c15711a66c76496d6e8e55511782140ec1
Author: David Fifield <david(a)bamsoftware.com>
Date: Sat Feb 14 09:23:34 2015 +0000
Disable software update windows in the meek HTTP helper.
https://trac.torproject.org/projects/tor/ticket/14203
---
Bundle-Data/PTConfigs/meek-http-helper-user.js | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/Bundle-Data/PTConfigs/meek-http-helper-user.js b/Bundle-Data/PTConfigs/meek-http-helper-user.js
index 72bbb9b..23565d9 100644
--- a/Bundle-Data/PTConfigs/meek-http-helper-user.js
+++ b/Bundle-Data/PTConfigs/meek-http-helper-user.js
@@ -14,6 +14,10 @@ user_pref("security.ssl.disable_session_identifiers", false);
// https://support.mozilla.org/en-US/questions/951221#answer-410562
user_pref("toolkit.startup.max_resumed_crashes", -1);
+// Don't raise software update windows in this browser instance.
+// https://trac.torproject.org/projects/tor/ticket/14203
+user_pref("app.update.enabled", false);
+
// Set a failsafe blackhole proxy of 127.0.0.1:9, to prevent network interaction
// in case the user manages to open this profile with a normal browser UI (i.e.,
// not headless with the meek-http-helper extension running). Port 9 is
1
0

[tor-browser-bundle/maint-4.0] Bug 14851: Set NoScript pref to avoid disk leaks of script permissions.
by mikeperry@torproject.org 17 Feb '15
by mikeperry@torproject.org 17 Feb '15
17 Feb '15
commit 2cca93a5b6d94c92590c3d1139f9a474f214e1ba
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Tue Feb 17 15:42:50 2015 -0800
Bug 14851: Set NoScript pref to avoid disk leaks of script permissions.
The NoScript default was changed, we need to change it back.
---
.../Data/Browser/profile.default/preferences/extension-overrides.js | 1 +
.../Data/Browser/profile.default/preferences/extension-overrides.js | 1 +
.../Data/Browser/profile.default/preferences/extension-overrides.js | 1 +
3 files changed, 3 insertions(+)
diff --git a/Bundle-Data/linux/Data/Browser/profile.default/preferences/extension-overrides.js b/Bundle-Data/linux/Data/Browser/profile.default/preferences/extension-overrides.js
index 39fa6a9..d1469a8 100644
--- a/Bundle-Data/linux/Data/Browser/profile.default/preferences/extension-overrides.js
+++ b/Bundle-Data/linux/Data/Browser/profile.default/preferences/extension-overrides.js
@@ -60,3 +60,4 @@ pref("noscript.autoReload.allTabs", false);
pref("noscript.cascadePermissions", true);
pref("noscript.restrictSubdocScripting", true);
pref("noscript.showVolatilePrivatePermissionsToggle", false);
+pref("noscript.volatilePrivatePermissions", true);
diff --git a/Bundle-Data/mac/TorBrowser/Data/Browser/profile.default/preferences/extension-overrides.js b/Bundle-Data/mac/TorBrowser/Data/Browser/profile.default/preferences/extension-overrides.js
index 39fa6a9..d1469a8 100644
--- a/Bundle-Data/mac/TorBrowser/Data/Browser/profile.default/preferences/extension-overrides.js
+++ b/Bundle-Data/mac/TorBrowser/Data/Browser/profile.default/preferences/extension-overrides.js
@@ -60,3 +60,4 @@ pref("noscript.autoReload.allTabs", false);
pref("noscript.cascadePermissions", true);
pref("noscript.restrictSubdocScripting", true);
pref("noscript.showVolatilePrivatePermissionsToggle", false);
+pref("noscript.volatilePrivatePermissions", true);
diff --git a/Bundle-Data/windows/Data/Browser/profile.default/preferences/extension-overrides.js b/Bundle-Data/windows/Data/Browser/profile.default/preferences/extension-overrides.js
index f5a3f3c..fb2141b 100644
--- a/Bundle-Data/windows/Data/Browser/profile.default/preferences/extension-overrides.js
+++ b/Bundle-Data/windows/Data/Browser/profile.default/preferences/extension-overrides.js
@@ -60,3 +60,4 @@ pref("noscript.autoReload.allTabs", false);
pref("noscript.cascadePermissions", true);
pref("noscript.restrictSubdocScripting", true);
pref("noscript.showVolatilePrivatePermissionsToggle", false);
+pref("noscript.volatilePrivatePermissions", true);
1
0

[tor-browser-bundle/master] Bug 14851: Set NoScript pref to avoid disk leaks of script permissions.
by mikeperry@torproject.org 17 Feb '15
by mikeperry@torproject.org 17 Feb '15
17 Feb '15
commit 3c987b163b88892ea84380e4701b18dcaeb9c92d
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Tue Feb 17 15:42:50 2015 -0800
Bug 14851: Set NoScript pref to avoid disk leaks of script permissions.
The NoScript default was changed, we need to change it back.
---
.../Data/Browser/profile.default/preferences/extension-overrides.js | 1 +
.../Data/Browser/profile.default/preferences/extension-overrides.js | 1 +
.../Data/Browser/profile.default/preferences/extension-overrides.js | 1 +
3 files changed, 3 insertions(+)
diff --git a/Bundle-Data/linux/Data/Browser/profile.default/preferences/extension-overrides.js b/Bundle-Data/linux/Data/Browser/profile.default/preferences/extension-overrides.js
index 39fa6a9..d1469a8 100644
--- a/Bundle-Data/linux/Data/Browser/profile.default/preferences/extension-overrides.js
+++ b/Bundle-Data/linux/Data/Browser/profile.default/preferences/extension-overrides.js
@@ -60,3 +60,4 @@ pref("noscript.autoReload.allTabs", false);
pref("noscript.cascadePermissions", true);
pref("noscript.restrictSubdocScripting", true);
pref("noscript.showVolatilePrivatePermissionsToggle", false);
+pref("noscript.volatilePrivatePermissions", true);
diff --git a/Bundle-Data/mac/TorBrowser/Data/Browser/profile.default/preferences/extension-overrides.js b/Bundle-Data/mac/TorBrowser/Data/Browser/profile.default/preferences/extension-overrides.js
index 39fa6a9..d1469a8 100644
--- a/Bundle-Data/mac/TorBrowser/Data/Browser/profile.default/preferences/extension-overrides.js
+++ b/Bundle-Data/mac/TorBrowser/Data/Browser/profile.default/preferences/extension-overrides.js
@@ -60,3 +60,4 @@ pref("noscript.autoReload.allTabs", false);
pref("noscript.cascadePermissions", true);
pref("noscript.restrictSubdocScripting", true);
pref("noscript.showVolatilePrivatePermissionsToggle", false);
+pref("noscript.volatilePrivatePermissions", true);
diff --git a/Bundle-Data/windows/Data/Browser/profile.default/preferences/extension-overrides.js b/Bundle-Data/windows/Data/Browser/profile.default/preferences/extension-overrides.js
index f5a3f3c..fb2141b 100644
--- a/Bundle-Data/windows/Data/Browser/profile.default/preferences/extension-overrides.js
+++ b/Bundle-Data/windows/Data/Browser/profile.default/preferences/extension-overrides.js
@@ -60,3 +60,4 @@ pref("noscript.autoReload.allTabs", false);
pref("noscript.cascadePermissions", true);
pref("noscript.restrictSubdocScripting", true);
pref("noscript.showVolatilePrivatePermissionsToggle", false);
+pref("noscript.volatilePrivatePermissions", true);
1
0

[tor-browser/tor-browser-31.4.0esr-4.5-1] fixup! Omnibox: Add disconnect, youtube; remove Amazon and eBay
by mikeperry@torproject.org 17 Feb '15
by mikeperry@torproject.org 17 Feb '15
17 Feb '15
commit 0cc27667bfb1cc641f7abc87c3d9e252c4ca0162
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Tue Feb 17 12:44:51 2015 -0800
fixup! Omnibox: Add disconnect, youtube; remove Amazon and eBay
Also remove bing.
---
browser/locales/en-US/searchplugins/list.txt | 1 -
1 file changed, 1 deletion(-)
diff --git a/browser/locales/en-US/searchplugins/list.txt b/browser/locales/en-US/searchplugins/list.txt
index 0d07ea6..956fb8e 100644
--- a/browser/locales/en-US/searchplugins/list.txt
+++ b/browser/locales/en-US/searchplugins/list.txt
@@ -4,6 +4,5 @@ twitter
wikipedia
startpage
yahoo
-bing
google
duckduckgo
1
0

[tor-browser-bundle/master] Bug #14221: fix update of the version -> builddir symlink
by gk@torproject.org 17 Feb '15
by gk@torproject.org 17 Feb '15
17 Feb '15
commit b90119dd4194209af8168997eeb3181490d609ba
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Thu Jan 15 21:30:12 2015 +0100
Bug #14221: fix update of the version -> builddir symlink
---
gitian/mkbundle-linux.sh | 2 +-
gitian/mkbundle-mac.sh | 2 +-
gitian/mkbundle-windows.sh | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/gitian/mkbundle-linux.sh b/gitian/mkbundle-linux.sh
index 0dba906..c71981f 100755
--- a/gitian/mkbundle-linux.sh
+++ b/gitian/mkbundle-linux.sh
@@ -269,7 +269,7 @@ fi
cd $WRAPPER_DIR
if [ "$TORBROWSER_SYMLINK_VERSION" == '1' ]
then
- ln -sf $TORBROWSER_BUILDDIR $TORBROWSER_VERSION
+ ln -sfT $TORBROWSER_BUILDDIR $TORBROWSER_VERSION
fi
echo
diff --git a/gitian/mkbundle-mac.sh b/gitian/mkbundle-mac.sh
index 09b3172..309b1a8 100755
--- a/gitian/mkbundle-mac.sh
+++ b/gitian/mkbundle-mac.sh
@@ -233,7 +233,7 @@ fi
cd $WRAPPER_DIR
if [ "$TORBROWSER_SYMLINK_VERSION" == '1' ]
then
- ln -sf $TORBROWSER_BUILDDIR $TORBROWSER_VERSION
+ ln -sfT $TORBROWSER_BUILDDIR $TORBROWSER_VERSION
fi
echo
diff --git a/gitian/mkbundle-windows.sh b/gitian/mkbundle-windows.sh
index 39c57ce..0e2f87f 100755
--- a/gitian/mkbundle-windows.sh
+++ b/gitian/mkbundle-windows.sh
@@ -238,7 +238,7 @@ fi
cd $WRAPPER_DIR
if [ "$TORBROWSER_SYMLINK_VERSION" == '1' ]
then
- ln -sf $TORBROWSER_BUILDDIR $TORBROWSER_VERSION
+ ln -sfT $TORBROWSER_BUILDDIR $TORBROWSER_VERSION
fi
echo
1
0

[tor-browser-bundle/master] Bug 13169: Don't use /dev/random on Windows.
by gk@torproject.org 16 Feb '15
by gk@torproject.org 16 Feb '15
16 Feb '15
commit d4950e565f93396ebbd310c71e49576af9224d25
Author: Georg Koppen <gk(a)torproject.org>
Date: Mon Feb 16 17:13:47 2015 +0000
Bug 13169: Don't use /dev/random on Windows.
This patch got done by skruffy and is a backport of the one merged into
GCC trunk as commit 19fef1633156a2c7ddd267b43d08f1b245a6e1f4.
---
gitian/descriptors/windows/gitian-utils.yml | 5 ++
gitian/patches/gcc-dev-random.patch | 72 +++++++++++++++++++++++++++
2 files changed, 77 insertions(+)
diff --git a/gitian/descriptors/windows/gitian-utils.yml b/gitian/descriptors/windows/gitian-utils.yml
index 7846e59..bef262d 100644
--- a/gitian/descriptors/windows/gitian-utils.yml
+++ b/gitian/descriptors/windows/gitian-utils.yml
@@ -28,6 +28,7 @@ files:
- "gmp.tar.bz2"
- "enable-reloc-section-ld.patch"
- "peXXigen.patch"
+- "gcc-dev-random.patch"
- "versions"
- "dzip.sh"
script: |
@@ -64,6 +65,10 @@ script: |
mkdir gcc
cd gcc
tar -xjvf ../gcc.tar.bz2
+ cd gcc-*
+ # Don't use /dev/random on Windows. See bug 13169 for details.
+ patch -p1 < ../../gcc-dev-random.patch
+ cd ..
# We don't want to link against msvcrt.dll due to bug 9084.
i686-w64-mingw32-g++ -dumpspecs > ~/build/msvcr100.spec
sed 's/msvcrt/msvcr100/' -i ~/build/msvcr100.spec
diff --git a/gitian/patches/gcc-dev-random.patch b/gitian/patches/gcc-dev-random.patch
new file mode 100644
index 0000000..9757f92
--- /dev/null
+++ b/gitian/patches/gcc-dev-random.patch
@@ -0,0 +1,72 @@
+From b0ce14899060267b5b5e4d7e3d91edcdf5c09514 Mon Sep 17 00:00:00 2001
+From: law <law@138bc75d-0d04-0410-961f-82ee72b054a4>
+Date: Tue, 10 Feb 2015 01:44:08 +0000
+Subject: [PATCH] * ssp.c (__guard_setup): For Windows, use approved methods
+ to get a suitable random number for the stack check guard
+ rather than reading /dev/random.
+
+git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@220559 138bc75d-0d04-0410-961f-82ee72b054a4
+---
+ libssp/ChangeLog | 7 +++++++
+ libssp/ssp.c | 16 ++++++++++++++++
+ 2 files changed, 23 insertions(+)
+
+diff --git a/libssp/ChangeLog b/libssp/ChangeLog
+index a445537..676d2a7 100644
+--- a/libssp/ChangeLog
++++ b/libssp/ChangeLog
+@@ -1,3 +1,10 @@
++2015-02-09 Georg Koppen <gk(a)torproject.org>
++
++ * ssp.c: Conditionally include <windows.h>
++ (__guard_setup): For Windows, use approved methods to get
++ a suitable random number for the stack check guard rather
++ than reading /dev/random.
++
+ 2014-07-16 Release Manager
+
+ * GCC 4.9.1 released.
+diff --git a/libssp/ssp.c b/libssp/ssp.c
+index 96adf17..38e3ec8 100644
+--- a/libssp/ssp.c
++++ b/libssp/ssp.c
+@@ -55,6 +55,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+ /* Native win32 apps don't know about /dev/tty but can print directly
+ to the console using "CONOUT$" */
+ #if defined (_WIN32) && !defined (__CYGWIN__)
++#include <windows.h>
+ # define _PATH_TTY "CONOUT$"
+ #else
+ # define _PATH_TTY "/dev/tty"
+@@ -75,6 +76,20 @@ __guard_setup (void)
+ if (__stack_chk_guard != 0)
+ return;
+
++#if defined (_WIN32) && !defined (__CYGWIN__)
++ HCRYPTPROV hprovider = 0;
++ if (CryptAcquireContext(&hprovider, NULL, NULL, PROV_RSA_FULL,
++ CRYPT_VERIFYCONTEXT | CRYPT_SILENT))
++ {
++ if (CryptGenRandom(hprovider, sizeof (__stack_chk_guard),
++ (BYTE *)&__stack_chk_guard) && __stack_chk_guard != 0)
++ {
++ CryptReleaseContext(hprovider, 0);
++ return;
++ }
++ CryptReleaseContext(hprovider, 0);
++ }
++#else
+ fd = open ("/dev/urandom", O_RDONLY);
+ if (fd != -1)
+ {
+@@ -85,6 +100,7 @@ __guard_setup (void)
+ return;
+ }
+
++#endif
+ /* If a random generator can't be used, the protector switches the guard
+ to the "terminator canary". */
+ p = (unsigned char *) &__stack_chk_guard;
+--
+1.7.10.4
+
1
0
commit 959da7f6b237910d2ff5132394bbcb9628983bc4
Author: Georg Koppen <gk(a)torproject.org>
Date: Mon Feb 16 11:12:32 2015 +0000
Update translations
---
src/chrome/locale/ar/aboutTor.dtd | 5 +++--
src/chrome/locale/ar/brand.dtd | 6 ++++++
src/chrome/locale/ar/browser.properties | 8 --------
src/chrome/locale/ar/torbutton.dtd | 11 +++++++----
src/chrome/locale/ar/torbutton.properties | 6 ++++++
src/chrome/locale/de/aboutTor.dtd | 5 +++--
src/chrome/locale/de/brand.dtd | 6 ++++++
src/chrome/locale/de/browser.properties | 8 --------
src/chrome/locale/de/torbutton.dtd | 11 +++++++----
src/chrome/locale/de/torbutton.properties | 6 ++++++
src/chrome/locale/es/aboutTor.dtd | 5 +++--
src/chrome/locale/es/brand.dtd | 6 ++++++
src/chrome/locale/es/browser.properties | 8 --------
src/chrome/locale/es/torbutton.dtd | 11 +++++++----
src/chrome/locale/es/torbutton.properties | 6 ++++++
src/chrome/locale/eu/aboutTor.dtd | 5 +++--
src/chrome/locale/eu/brand.dtd | 6 ++++++
src/chrome/locale/eu/browser.properties | 8 --------
src/chrome/locale/eu/torbutton.dtd | 25 ++++++++++++++-----------
src/chrome/locale/eu/torbutton.properties | 6 ++++++
src/chrome/locale/fa/aboutTor.dtd | 5 +++--
src/chrome/locale/fa/brand.dtd | 6 ++++++
src/chrome/locale/fa/browser.properties | 8 --------
src/chrome/locale/fa/torbutton.dtd | 11 +++++++----
src/chrome/locale/fa/torbutton.properties | 6 ++++++
src/chrome/locale/fr/aboutTor.dtd | 5 +++--
src/chrome/locale/fr/brand.dtd | 6 ++++++
src/chrome/locale/fr/browser.properties | 8 --------
src/chrome/locale/fr/torbutton.dtd | 11 +++++++----
src/chrome/locale/fr/torbutton.properties | 6 ++++++
src/chrome/locale/it/aboutTor.dtd | 5 +++--
src/chrome/locale/it/brand.dtd | 6 ++++++
src/chrome/locale/it/browser.properties | 8 --------
src/chrome/locale/it/torbutton.dtd | 11 +++++++----
src/chrome/locale/it/torbutton.properties | 6 ++++++
src/chrome/locale/ja/aboutTor.dtd | 5 +++--
src/chrome/locale/ja/brand.dtd | 6 ++++++
src/chrome/locale/ja/browser.properties | 8 --------
src/chrome/locale/ja/torbutton.dtd | 11 +++++++----
src/chrome/locale/ja/torbutton.properties | 6 ++++++
src/chrome/locale/ko/aboutTor.dtd | 5 +++--
src/chrome/locale/ko/brand.dtd | 6 ++++++
src/chrome/locale/ko/browser.properties | 8 --------
src/chrome/locale/ko/torbutton.dtd | 11 +++++++----
src/chrome/locale/ko/torbutton.properties | 6 ++++++
src/chrome/locale/nl/aboutTor.dtd | 15 ++++++++-------
src/chrome/locale/nl/brand.dtd | 6 ++++++
src/chrome/locale/nl/browser.properties | 8 --------
src/chrome/locale/nl/torbutton.dtd | 11 +++++++----
src/chrome/locale/nl/torbutton.properties | 6 ++++++
src/chrome/locale/pl/aboutTor.dtd | 5 +++--
src/chrome/locale/pl/brand.dtd | 6 ++++++
src/chrome/locale/pl/browser.properties | 8 --------
src/chrome/locale/pl/torbutton.dtd | 11 +++++++----
src/chrome/locale/pl/torbutton.properties | 6 ++++++
src/chrome/locale/pt/aboutTor.dtd | 5 +++--
src/chrome/locale/pt/brand.dtd | 6 ++++++
src/chrome/locale/pt/browser.properties | 8 --------
src/chrome/locale/pt/torbutton.dtd | 11 +++++++----
src/chrome/locale/pt/torbutton.properties | 6 ++++++
src/chrome/locale/ru/aboutTor.dtd | 5 +++--
src/chrome/locale/ru/brand.dtd | 6 ++++++
src/chrome/locale/ru/browser.properties | 8 --------
src/chrome/locale/ru/torbutton.dtd | 11 +++++++----
src/chrome/locale/ru/torbutton.properties | 6 ++++++
src/chrome/locale/sv/aboutTor.dtd | 5 +++--
src/chrome/locale/sv/brand.dtd | 6 ++++++
src/chrome/locale/sv/browser.properties | 8 --------
src/chrome/locale/sv/torbutton.dtd | 11 +++++++----
src/chrome/locale/sv/torbutton.properties | 6 ++++++
src/chrome/locale/tr/aboutTor.dtd | 5 +++--
src/chrome/locale/tr/brand.dtd | 6 ++++++
src/chrome/locale/tr/browser.properties | 8 --------
src/chrome/locale/tr/torbutton.dtd | 11 +++++++----
src/chrome/locale/tr/torbutton.properties | 6 ++++++
src/chrome/locale/vi/aboutTor.dtd | 5 +++--
src/chrome/locale/vi/brand.dtd | 6 ++++++
src/chrome/locale/vi/browser.properties | 8 --------
src/chrome/locale/vi/torbutton.dtd | 11 +++++++----
src/chrome/locale/vi/torbutton.properties | 6 ++++++
src/chrome/locale/zh-CN/aboutTor.dtd | 5 +++--
src/chrome/locale/zh-CN/brand.dtd | 6 ++++++
src/chrome/locale/zh-CN/browser.properties | 8 --------
src/chrome/locale/zh-CN/torbutton.dtd | 11 +++++++----
src/chrome/locale/zh-CN/torbutton.properties | 6 ++++++
85 files changed, 386 insertions(+), 250 deletions(-)
diff --git a/src/chrome/locale/ar/aboutTor.dtd b/src/chrome/locale/ar/aboutTor.dtd
index e02388f..4ab6609 100644
--- a/src/chrome/locale/ar/aboutTor.dtd
+++ b/src/chrome/locale/ar/aboutTor.dtd
@@ -1,5 +1,5 @@
<!--
- - Copyright (c) 2014, The Tor Project, Inc.
+ - Copyright (c) 2015, The Tor Project, Inc.
- See LICENSE for licensing information.
- vim: set sw=2 sts=2 ts=8 et syntax=xml:
-->
@@ -8,7 +8,7 @@
<!ENTITY aboutTor.outOfDateTorOn.label "ومع ذلك، هذا المتصفح قديم.">
<!ENTITY aboutTor.outOfDateTorOff.label "أيضاً، هذا المتصفح قديم.">
-<!ENTITY aboutTor.outOfDate2.label "اضغط على البصلة و اختر حمل تحديث حزمة متصفح تور.">
+<!ENTITY aboutTor.outOfDate2.label "Click on the onion and then choose Check for Tor Browser Update.">
<!ENTITY aboutTor.check.label "اختبر إعدادات شبكة تور.">
@@ -25,6 +25,7 @@
<!ENTITY aboutTor.searchSPPost.link "https://startpage.com/rth/search">
<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
+<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
<!ENTITY aboutTor.torInfo1.label "معلومات إضافية:">
<!ENTITY aboutTor.torInfo2.label "الدولة وعنوان الإنترنت:">
diff --git a/src/chrome/locale/ar/brand.dtd b/src/chrome/locale/ar/brand.dtd
index 3faaf01..b599c91 100644
--- a/src/chrome/locale/ar/brand.dtd
+++ b/src/chrome/locale/ar/brand.dtd
@@ -6,3 +6,9 @@
<!ENTITY brandFullName "متصفح تور">
<!ENTITY vendorShortName "مشروع تور">
<!ENTITY trademarkInfo.part1 "فايرفوكس وشعارات فايرفوكس علامات تجارية مسجلة لمؤسسة موزيلا.">
+
+<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
+<!ENTITY plugins.installed.find "Click to load installed system plugins">
+<!ENTITY plugins.installed.enable "Enable plugins">
+<!ENTITY plugins.installed.disable "Disable plugins">
+<!ENTITY plugins.installed.disable.tip "Click to prevent loading system plugins">
diff --git a/src/chrome/locale/ar/browser.properties b/src/chrome/locale/ar/browser.properties
index 295a03a..8849b67 100644
--- a/src/chrome/locale/ar/browser.properties
+++ b/src/chrome/locale/ar/browser.properties
@@ -3,11 +3,3 @@ browser.startup.homepage=about:tor
# Spell checker dictionary
spellchecker.dictionary=en_US
-
-# Default search engine
-browser.search.defaultenginename=Startpage
-
-# Search engine order (order displayed in the search bar dropdown)
-browser.search.order.1=Startpage
-browser.search.order.2=DuckDuckGo
-browser.search.order.3=Google
diff --git a/src/chrome/locale/ar/torbutton.dtd b/src/chrome/locale/ar/torbutton.dtd
index 94ef3aa..2928c62 100644
--- a/src/chrome/locale/ar/torbutton.dtd
+++ b/src/chrome/locale/ar/torbutton.dtd
@@ -24,17 +24,19 @@
<!ENTITY torbutton.pref_connection_more_info.text "زر تور مفعّل حاليًا. إن كنت تريد تغيير إعدادات الوسيط غير المتعلقة بتور، فضلاً عطل زر تور أولاً ثم عد إلى هنا. إن كنت تريد تعديل إعدادات زر تور فاستخدم نافذة تفضيلات زر تور.">
<!ENTITY torbutton.context_menu.new_identity "هوية جديدة">
<!ENTITY torbutton.context_menu.new_identity_key "أنا">
+<!ENTITY torbutton.context_menu.new_circuit "New Tor Circuit for this Site">
+<!ENTITY torbutton.context_menu.new_circuit_key "C">
<!ENTITY torbutton.context_menu.toggle "بدّل حالة تور">
<!ENTITY torbutton.context_menu.toggle.key "ت">
-<!ENTITY torbutton.context_menu.preferences "التفضيلات...">
+<!ENTITY torbutton.context_menu.preferences "Privacy and Security Settings…">
<!ENTITY torbutton.context_menu.preferences.key "ف">
<!ENTITY torbutton.context_menu.about "عن زر تور...">
<!ENTITY torbutton.context_menu.about.key "ح">
-<!ENTITY torbutton.context_menu.networksettings "فتح إعدادات الشبكة...">
+<!ENTITY torbutton.context_menu.networksettings "Tor Network Settings…">
<!ENTITY torbutton.context_menu.networksettings.key "ح">
-<!ENTITY torbutton.context_menu.downloadUpdate "تنزيل تحديث حزمة متصفح تور...">
+<!ENTITY torbutton.context_menu.downloadUpdate "Check for Tor Browser Update…">
<!ENTITY torbutton.context_menu.downloadUpdate.key "ت">
-<!ENTITY torbutton.context_menu.cookieProtections "كعكة الحماية">
+<!ENTITY torbutton.context_menu.cookieProtections "Cookie Protections…">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.context_menu.copyTor "نسخ رابط تور">
<!ENTITY torbutton.context_menu.copyTor.key "p">
@@ -155,3 +157,4 @@
<!ENTITY torbutton.prefs.sec_med_high "شبه عالٍ">
<!ENTITY torbutton.prefs.sec_high "عالٍ">
<!ENTITY torbutton.prefs.sec_custom "قيم مخصصة">
+<!ENTITY torbutton.circuit_display.title "Tor circuit for this site">
diff --git a/src/chrome/locale/ar/torbutton.properties b/src/chrome/locale/ar/torbutton.properties
index f35285f..8846f57 100644
--- a/src/chrome/locale/ar/torbutton.properties
+++ b/src/chrome/locale/ar/torbutton.properties
@@ -1,5 +1,10 @@
torbutton.button.tooltip.disabled = فعّل تور
torbutton.button.tooltip.enabled = عطّل تور
+torbutton.circuit_display.internet = Internet
+torbutton.circuit_display.ip_unknown = IP unknown
+torbutton.circuit_display.this_browser = This browser
+torbutton.circuit_display.tor_bridge = Bridge
+torbutton.circuit_display.unknown_country = Unknown country
torbutton.panel.tooltip.disabled = انقر لتفعيل تور
torbutton.panel.tooltip.enabled = انقر لتعطيل تور
torbutton.panel.plugins.disabled = انقر لتفعيل الملحقات
@@ -46,6 +51,7 @@ torbutton.popup.short_torbrowser = معلومات هامة عن زر تور \n\n
torbutton.popup.confirm_plugins = البرامج الإضافية مثل فلاش تستطيع ان تضر بخصوصيتك و تكشف هويتك.\n\nو تستطيع ايضا ان تتجنب تور و تكشف عن مكانك الحالي و عنوان الأي بي الخاص بك.\n\nهل أنت متأكد أنك تريد تفعيل البرامج الإضافية؟\n\n
torbutton.popup.never_ask_again = لا تسألني مرة اخري
+torbutton.popup.confirm_newnym = Tor Browser will close all windows and tabs. All website sessions will be lost.\n\nRestart Tor Browser now to reset your identity?\n\n
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=هذا الموقع (٪ S) حاول استخراج بيانات الصورة HTML5، والتي يمكن استخدامها لتحديد مكانك وتحديد الكومبيوتر.\n\nهل تريد أن يسمح متصفح Tor لهذا الموقع لاستخراج بيانات الصورة ؟
diff --git a/src/chrome/locale/de/aboutTor.dtd b/src/chrome/locale/de/aboutTor.dtd
index beab0ff..f757363 100644
--- a/src/chrome/locale/de/aboutTor.dtd
+++ b/src/chrome/locale/de/aboutTor.dtd
@@ -1,5 +1,5 @@
<!--
- - Copyright (c) 2014, The Tor Project, Inc.
+ - Copyright (c) 2015, The Tor Project, Inc.
- See LICENSE for licensing information.
- vim: set sw=2 sts=2 ts=8 et syntax=xml:
-->
@@ -8,7 +8,7 @@
<!ENTITY aboutTor.outOfDateTorOn.label "Dieser Browser ist nicht mehr aktuell.">
<!ENTITY aboutTor.outOfDateTorOff.label "DIESER Browser ist auch veraltet.">
-<!ENTITY aboutTor.outOfDate2.label "Auf die Zwiebel klicken und dann die Aktualisierung des Tor-Browser-Paketes herunterladen.">
+<!ENTITY aboutTor.outOfDate2.label "Klicke auf die Zwiebel und dann ">
<!ENTITY aboutTor.check.label "Tor-Netzwerkeinstellungen testen">
@@ -25,6 +25,7 @@
<!ENTITY aboutTor.searchSPPost.link "https://startpage.com/rth/search">
<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
+<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
<!ENTITY aboutTor.torInfo1.label "Zusätzliche Informationen:">
<!ENTITY aboutTor.torInfo2.label "Land & IP-Adresse:">
diff --git a/src/chrome/locale/de/brand.dtd b/src/chrome/locale/de/brand.dtd
index e3a2aae..6089707 100644
--- a/src/chrome/locale/de/brand.dtd
+++ b/src/chrome/locale/de/brand.dtd
@@ -6,3 +6,9 @@
<!ENTITY brandFullName "Tor-Browser">
<!ENTITY vendorShortName "Tor-Projekt">
<!ENTITY trademarkInfo.part1 "Firefox und die Firefox-Logos sind Warenzeichen der Mozilla Foundation.">
+
+<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
+<!ENTITY plugins.installed.find "Klicke um System-Erweiterungen zu laden">
+<!ENTITY plugins.installed.enable "Erweiterungen aktivieren">
+<!ENTITY plugins.installed.disable "Erweiterungen deaktivieren">
+<!ENTITY plugins.installed.disable.tip "Klicke um das Laden von System-Erweiterungen zu verhindern">
diff --git a/src/chrome/locale/de/browser.properties b/src/chrome/locale/de/browser.properties
index df47914..c8a19c5 100644
--- a/src/chrome/locale/de/browser.properties
+++ b/src/chrome/locale/de/browser.properties
@@ -3,11 +3,3 @@ browser.startup.homepage=about:tor
# Spell checker dictionary
spellchecker.dictionary=de_DE
-
-# Default search engine
-browser.search.defaultenginename=Startseite
-
-# Search engine order (order displayed in the search bar dropdown)
-browser.search.order.1=Startseite
-browser.search.order.2=DuckDuckGo
-browser.search.order.3=Google
diff --git a/src/chrome/locale/de/torbutton.dtd b/src/chrome/locale/de/torbutton.dtd
index e0199c4..1772e47 100644
--- a/src/chrome/locale/de/torbutton.dtd
+++ b/src/chrome/locale/de/torbutton.dtd
@@ -24,17 +24,19 @@
<!ENTITY torbutton.pref_connection_more_info.text "Torbutten ist momentan aktiv. Wenn Sie die Vermittlungsservereinstellungen für den Betrieb ohne Tor ändern möchten, bitte zuerst Torbutton deaktivieren. Zum Ändern der Tor-Einstellungen bitte das Fenster »Torbutton-Einstellungen« verwenden.">
<!ENTITY torbutton.context_menu.new_identity "Neue Identität">
<!ENTITY torbutton.context_menu.new_identity_key "N">
+<!ENTITY torbutton.context_menu.new_circuit "Neuer Kanal für diese Seite">
+<!ENTITY torbutton.context_menu.new_circuit_key "B">
<!ENTITY torbutton.context_menu.toggle "Tor-Modus umschalten">
<!ENTITY torbutton.context_menu.toggle.key "T">
-<!ENTITY torbutton.context_menu.preferences "Einstellungen …">
+<!ENTITY torbutton.context_menu.preferences "Privatssphäre- und Sicherheits-Einstellungen...">
<!ENTITY torbutton.context_menu.preferences.key "E">
<!ENTITY torbutton.context_menu.about "Über Torbutton …">
<!ENTITY torbutton.context_menu.about.key "Ü">
-<!ENTITY torbutton.context_menu.networksettings "Netzwerkeinstellungen öffnen …">
+<!ENTITY torbutton.context_menu.networksettings "Tor-Netzwerk-Einstellungen...">
<!ENTITY torbutton.context_menu.networksettings.key "N">
-<!ENTITY torbutton.context_menu.downloadUpdate "Aktualisierung des Tor-Browser-Pakets herunterladen …">
+<!ENTITY torbutton.context_menu.downloadUpdate "Suche nach Tor-Browser-Aktualisierungen...">
<!ENTITY torbutton.context_menu.downloadUpdate.key "A">
-<!ENTITY torbutton.context_menu.cookieProtections "Cookie-Schutzvorkehrungen">
+<!ENTITY torbutton.context_menu.cookieProtections "Cookie-Schutz...">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.context_menu.copyTor "Tor-Adresse kopieren">
<!ENTITY torbutton.context_menu.copyTor.key "k">
@@ -155,3 +157,4 @@
<!ENTITY torbutton.prefs.sec_med_high "oberes Mittel">
<!ENTITY torbutton.prefs.sec_high "hoch">
<!ENTITY torbutton.prefs.sec_custom "Eigene Werte">
+<!ENTITY torbutton.circuit_display.title "Tor-Kanal für diese Seite">
diff --git a/src/chrome/locale/de/torbutton.properties b/src/chrome/locale/de/torbutton.properties
index 29bfaf4..ba20cf9 100644
--- a/src/chrome/locale/de/torbutton.properties
+++ b/src/chrome/locale/de/torbutton.properties
@@ -1,5 +1,10 @@
torbutton.button.tooltip.disabled = Tor aktivieren
torbutton.button.tooltip.enabled = Tor deaktivieren
+torbutton.circuit_display.internet = Internet
+torbutton.circuit_display.ip_unknown = IP unbekannt
+torbutton.circuit_display.this_browser = Dieser Browser
+torbutton.circuit_display.tor_bridge = Bridge
+torbutton.circuit_display.unknown_country = Unbekanntes Land
torbutton.panel.tooltip.disabled = Klicken, um Tor zu aktivieren
torbutton.panel.tooltip.enabled = Klicken, um Tor zu deaktivieren
torbutton.panel.plugins.disabled = Klicken, um die Erweiterungen zu aktivieren
@@ -46,6 +51,7 @@ torbutton.popup.short_torbrowser = Wichtige Torbutton-Information!\n\nTorbutton
torbutton.popup.confirm_plugins = Erweiterungen wie Flash können ihre Privatsphäre und Anonymität schädigen.\n\nSie können auch das Tor-Netzwerk umgehen, und Ihren derzeitigen Aufenthaltsort und ihre IP-Adresse verraten.\n\nSind Sie sicher, dass Sie Erweiterungen aktivieren wollen?\n\n
torbutton.popup.never_ask_again = Nicht mehr nachfragen
+torbutton.popup.confirm_newnym = Tor-Browser wird alle Fenster und Tabs schließen. Alle Webseiten-Sitzungen gehen verloren.\n\nTor-Browser jetzt neu starten um Ihre Identität zurückzusetzen?\n\n
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=Die Internetseite (%S) hat versucht, HTML5-Canvas-Bilddaten zu extrahieren, die verwendet werden können, um Ihren Rechner eindeutig zu identifizieren. \n\nSoll Tor-Browser es dieser Internetseite erlauben HTML5-Canvas-Bilddaten zu extrahieren?
diff --git a/src/chrome/locale/es/aboutTor.dtd b/src/chrome/locale/es/aboutTor.dtd
index af9ff47..f2c865c 100644
--- a/src/chrome/locale/es/aboutTor.dtd
+++ b/src/chrome/locale/es/aboutTor.dtd
@@ -1,5 +1,5 @@
<!--
- - Copyright (c) 2014, The Tor Project, Inc.
+ - Copyright (c) 2015, The Tor Project, Inc.
- See LICENSE for licensing information.
- vim: set sw=2 sts=2 ts=8 et syntax=xml:
-->
@@ -8,7 +8,7 @@
<!ENTITY aboutTor.outOfDateTorOn.label "SIN EMBARGO, este navegador no está actualizado.">
<!ENTITY aboutTor.outOfDateTorOff.label "ADEMÁS, este navegador tampoco está actualizado.">
-<!ENTITY aboutTor.outOfDate2.label "Haga clic en la cebolla y luego elija 'Descargar actualización del Paquete de Navegador Tor'.">
+<!ENTITY aboutTor.outOfDate2.label "Haga clic en la cebolla y luego seleccione Comprobar actualizaciones del Navegador Tor.">
<!ENTITY aboutTor.check.label "Probar las preferencias de red Tor">
@@ -25,6 +25,7 @@
<!ENTITY aboutTor.searchSPPost.link "https://startpage.com/rth/search">
<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
+<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
<!ENTITY aboutTor.torInfo1.label "Información adicional:">
<!ENTITY aboutTor.torInfo2.label "País y dirección IP:">
diff --git a/src/chrome/locale/es/brand.dtd b/src/chrome/locale/es/brand.dtd
index 7710d47..c2c9e68 100644
--- a/src/chrome/locale/es/brand.dtd
+++ b/src/chrome/locale/es/brand.dtd
@@ -6,3 +6,9 @@
<!ENTITY brandFullName "Navegador Tor">
<!ENTITY vendorShortName "Proyecto Tor">
<!ENTITY trademarkInfo.part1 "Firefox y los logotipos de Firefox son marcas registradas de la Mozilla Foundation.">
+
+<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
+<!ENTITY plugins.installed.find "Haga clic para cargar los complementos de sistema instalados">
+<!ENTITY plugins.installed.enable "Habilitar complementos">
+<!ENTITY plugins.installed.disable "Deshabilitar complementos">
+<!ENTITY plugins.installed.disable.tip "Haga clic para prevenir que se carguen complementos de sistema">
diff --git a/src/chrome/locale/es/browser.properties b/src/chrome/locale/es/browser.properties
index b236c3c..173fa7b 100644
--- a/src/chrome/locale/es/browser.properties
+++ b/src/chrome/locale/es/browser.properties
@@ -3,11 +3,3 @@ browser.startup.homepage=about:tor
# Spell checker dictionary
spellchecker.dictionary=es-ES
-
-# Default search engine
-browser.search.defaultenginename=Startpage
-
-# Search engine order (order displayed in the search bar dropdown)
-browser.search.order.1=Startpage
-browser.search.order.2=DuckDuckGo
-browser.search.order.3=Google
diff --git a/src/chrome/locale/es/torbutton.dtd b/src/chrome/locale/es/torbutton.dtd
index c51f7f9..c33695c 100644
--- a/src/chrome/locale/es/torbutton.dtd
+++ b/src/chrome/locale/es/torbutton.dtd
@@ -24,17 +24,19 @@
<!ENTITY torbutton.pref_connection_more_info.text "Torbutton está activo. Si desea cambiar la configuración para proxy de su navegación sin Tor, desactive Torbutton y regrese aquí. Si desea cambiar su configuración para Tor, use la ventana de preferencias de Torbutton.">
<!ENTITY torbutton.context_menu.new_identity "Nueva identidad (nueva instancia y conexiones de Tor)">
<!ENTITY torbutton.context_menu.new_identity_key "I">
+<!ENTITY torbutton.context_menu.new_circuit "Nuevo circuito Tor para este sitio">
+<!ENTITY torbutton.context_menu.new_circuit_key "C">
<!ENTITY torbutton.context_menu.toggle "Cambiar estado de Tor">
<!ENTITY torbutton.context_menu.toggle.key "T">
-<!ENTITY torbutton.context_menu.preferences "Preferencias...">
+<!ENTITY torbutton.context_menu.preferences "Configuración de privacidad y seguridad...">
<!ENTITY torbutton.context_menu.preferences.key "P">
<!ENTITY torbutton.context_menu.about "Acerca de Torbutton...">
<!ENTITY torbutton.context_menu.about.key "A">
-<!ENTITY torbutton.context_menu.networksettings "Abrir configuración de red…">
+<!ENTITY torbutton.context_menu.networksettings "Configuración de red Tor...">
<!ENTITY torbutton.context_menu.networksettings.key "G">
-<!ENTITY torbutton.context_menu.downloadUpdate "Descargar actualización del Paquete de Navegador Tor">
+<!ENTITY torbutton.context_menu.downloadUpdate "Comprobar actualización del Navegador Tor...">
<!ENTITY torbutton.context_menu.downloadUpdate.key "a">
-<!ENTITY torbutton.context_menu.cookieProtections "Protecciones de cookie">
+<!ENTITY torbutton.context_menu.cookieProtections "Protecciones de cookie...">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.context_menu.copyTor "Copiar URL de Tor">
<!ENTITY torbutton.context_menu.copyTor.key "U">
@@ -155,3 +157,4 @@
<!ENTITY torbutton.prefs.sec_med_high "Medio-Alto">
<!ENTITY torbutton.prefs.sec_high "Alto">
<!ENTITY torbutton.prefs.sec_custom "Valores Personalizados">
+<!ENTITY torbutton.circuit_display.title "Circuito Tor para este sitio">
diff --git a/src/chrome/locale/es/torbutton.properties b/src/chrome/locale/es/torbutton.properties
index f40fc06..8cd1ed5 100644
--- a/src/chrome/locale/es/torbutton.properties
+++ b/src/chrome/locale/es/torbutton.properties
@@ -1,5 +1,10 @@
torbutton.button.tooltip.disabled = Habilitar Tor
torbutton.button.tooltip.enabled = Deshabilitar Tor
+torbutton.circuit_display.internet = Internet
+torbutton.circuit_display.ip_unknown = IP desconocida
+torbutton.circuit_display.this_browser = Este navegador
+torbutton.circuit_display.tor_bridge = Repetior puente (bridge)
+torbutton.circuit_display.unknown_country = País desconocido
torbutton.panel.tooltip.disabled = Haga clic para habilitar Tor
torbutton.panel.tooltip.enabled = Haga clic para deshabilitar Tor
torbutton.panel.plugins.disabled = Haga clic para habilitar extensiones (plugins).
@@ -46,6 +51,7 @@ torbutton.popup.short_torbrowser = ¡Información importante sobre Torbutton! \n
torbutton.popup.confirm_plugins = Complementos (plugins) como Flash pueden dañar su privacidad y anonimato.\n\nTambién pueden evitar Tor, revelando su actual ubicación y dirección IP.\n\n¿Está seguro de que quiere habilitar los complementos?\n\n
torbutton.popup.never_ask_again = No volver a preguntar
+torbutton.popup.confirm_newnym = El Navegador Tor cerrará todas las ventanas y pestañas. Todas las sesiones de sitios web se perderán.\n\n¿Reiniciar el Navegador Tor para restablecer su identidad?\n\n
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=Este sitio web (%s) intentó extraer datos de imagen de un lienzo HTML5, que podrían usarse para identificar de forma única su computadora.\n\n¿Debe permitir el Navegador Tor a este sitio web extraer los datos de imagen de lienzos HTML5?
diff --git a/src/chrome/locale/eu/aboutTor.dtd b/src/chrome/locale/eu/aboutTor.dtd
index 7afe64b..692e1d1 100644
--- a/src/chrome/locale/eu/aboutTor.dtd
+++ b/src/chrome/locale/eu/aboutTor.dtd
@@ -1,5 +1,5 @@
<!--
- - Copyright (c) 2014, The Tor Project, Inc.
+ - Copyright (c) 2015, The Tor Project, Inc.
- See LICENSE for licensing information.
- vim: set sw=2 sts=2 ts=8 et syntax=xml:
-->
@@ -8,7 +8,7 @@
<!ENTITY aboutTor.outOfDateTorOn.label "HALA ERE, nabigatzaile hau zaharkituta dago.">
<!ENTITY aboutTor.outOfDateTorOff.label "BAITA, nabigatzaile hau zaharkituta dago.">
-<!ENTITY aboutTor.outOfDate2.label "Tipulan sakatu eta ondoren hautatu Tor Browser Bundle eguneraketa deskargatu.">
+<!ENTITY aboutTor.outOfDate2.label "Click on the onion and then choose Check for Tor Browser Update.">
<!ENTITY aboutTor.check.label "Tor sare ezarpenak frogatu">
@@ -25,6 +25,7 @@
<!ENTITY aboutTor.searchSPPost.link "https://startpage.com/rth/search">
<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
+<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
<!ENTITY aboutTor.torInfo1.label "Informazio gehiago:">
<!ENTITY aboutTor.torInfo2.label "Herrialde eta IP helbidea:">
diff --git a/src/chrome/locale/eu/brand.dtd b/src/chrome/locale/eu/brand.dtd
index f144e27..c4f0039 100644
--- a/src/chrome/locale/eu/brand.dtd
+++ b/src/chrome/locale/eu/brand.dtd
@@ -6,3 +6,9 @@
<!ENTITY brandFullName "Tor Browser">
<!ENTITY vendorShortName "Tor Project">
<!ENTITY trademarkInfo.part1 "Firefox eta Firefox logoak Mozilla Fundazioaren marka errgistratuak dira.">
+
+<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
+<!ENTITY plugins.installed.find "Click to load installed system plugins">
+<!ENTITY plugins.installed.enable "Enable plugins">
+<!ENTITY plugins.installed.disable "Disable plugins">
+<!ENTITY plugins.installed.disable.tip "Click to prevent loading system plugins">
diff --git a/src/chrome/locale/eu/browser.properties b/src/chrome/locale/eu/browser.properties
index 295a03a..8849b67 100644
--- a/src/chrome/locale/eu/browser.properties
+++ b/src/chrome/locale/eu/browser.properties
@@ -3,11 +3,3 @@ browser.startup.homepage=about:tor
# Spell checker dictionary
spellchecker.dictionary=en_US
-
-# Default search engine
-browser.search.defaultenginename=Startpage
-
-# Search engine order (order displayed in the search bar dropdown)
-browser.search.order.1=Startpage
-browser.search.order.2=DuckDuckGo
-browser.search.order.3=Google
diff --git a/src/chrome/locale/eu/torbutton.dtd b/src/chrome/locale/eu/torbutton.dtd
index 3c6d032..14f216f 100644
--- a/src/chrome/locale/eu/torbutton.dtd
+++ b/src/chrome/locale/eu/torbutton.dtd
@@ -24,17 +24,19 @@
<!ENTITY torbutton.pref_connection_more_info.text "Une honetan Torbutton gaituta dago. Zure ez-Tor proxy ezarpenak aldatu nahi badituzu, mesedez ezgaitu Torbutton eta hona bueltatu. Zure Tor ezarpenak aldatu nahi badituzu, mesedez erabili Torbutton ezarpen leihoa.">
<!ENTITY torbutton.context_menu.new_identity "Nortasun berria">
<!ENTITY torbutton.context_menu.new_identity_key "I">
+<!ENTITY torbutton.context_menu.new_circuit "New Tor Circuit for this Site">
+<!ENTITY torbutton.context_menu.new_circuit_key "C">
<!ENTITY torbutton.context_menu.toggle "Aldatu Toren egoera">
<!ENTITY torbutton.context_menu.toggle.key "T">
-<!ENTITY torbutton.context_menu.preferences "Hobespenak...">
+<!ENTITY torbutton.context_menu.preferences "Privacy and Security Settings…">
<!ENTITY torbutton.context_menu.preferences.key "P">
<!ENTITY torbutton.context_menu.about "Torbuttoni buruz...">
<!ENTITY torbutton.context_menu.about.key "A">
-<!ENTITY torbutton.context_menu.networksettings "Sare ezarpenak ireki...">
+<!ENTITY torbutton.context_menu.networksettings "Tor Network Settings…">
<!ENTITY torbutton.context_menu.networksettings.key "S">
-<!ENTITY torbutton.context_menu.downloadUpdate "Deskargatu Tor Browser Bundle eguneraketa...">
+<!ENTITY torbutton.context_menu.downloadUpdate "Check for Tor Browser Update…">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
-<!ENTITY torbutton.context_menu.cookieProtections "Cookie Babesak">
+<!ENTITY torbutton.context_menu.cookieProtections "Cookie Protections…">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.context_menu.copyTor "Kopiatu Tor URLa">
<!ENTITY torbutton.context_menu.copyTor.key "p">
@@ -44,7 +46,7 @@
<!ENTITY torbutton.context_menu.openTorWindow.key "d">
<!ENTITY torbutton.button.label "Torbutton">
<!ENTITY torbutton.button.tooltip "Sakatu Torbutton abiarazteko">
-<!ENTITY torbutton.prefs.privacy_security_settings "Privacy and Security Settings">
+<!ENTITY torbutton.prefs.privacy_security_settings "Pribatutasun eta segurtasun ezarpenak">
<!ENTITY torbutton.prefs.block_thread "Blokeatu historia irakurketak Tor bitartean (erabakigarria)">
<!ENTITY torbutton.prefs.block_thwrite "Blokeatu historia idazketak Tor bitartean (gomendatua)">
<!ENTITY torbutton.prefs.block_nthread "Blokeatu historia irakurketak Ez-Tor bitartean (hautazkoa)">
@@ -149,9 +151,10 @@
<!ENTITY torbutton.prefs.restrict_thirdparty "Hirugarrenen cookie-ak eta beste jarraipen datuak murriztu">
<!ENTITY torbutton.prefs.block_plugins "Nabigatzaile pluginak ezgaitu (Flash bezala)">
<!ENTITY torbutton.prefs.resist_fingerprinting "Zu beste Tor Browser erabiltzaileengandik nabarmentzen zaituzten xehetasunak aldatu">
-<!ENTITY torbutton.prefs.sec_caption "Security Level">
-<!ENTITY torbutton.prefs.sec_low "Low (default)">
-<!ENTITY torbutton.prefs.sec_med_low "Medium-Low">
-<!ENTITY torbutton.prefs.sec_med_high "Medium-High">
-<!ENTITY torbutton.prefs.sec_high "High">
-<!ENTITY torbutton.prefs.sec_custom "Custom Values">
+<!ENTITY torbutton.prefs.sec_caption "Segurtasun maila">
+<!ENTITY torbutton.prefs.sec_low "Baxua (lehentsia)">
+<!ENTITY torbutton.prefs.sec_med_low "Ertaina-baxua">
+<!ENTITY torbutton.prefs.sec_med_high "Ertaina-altua">
+<!ENTITY torbutton.prefs.sec_high "Altua">
+<!ENTITY torbutton.prefs.sec_custom "Balio pertsonalizatuak">
+<!ENTITY torbutton.circuit_display.title "Tor circuit for this site">
diff --git a/src/chrome/locale/eu/torbutton.properties b/src/chrome/locale/eu/torbutton.properties
index bd4f51e..d856bec 100644
--- a/src/chrome/locale/eu/torbutton.properties
+++ b/src/chrome/locale/eu/torbutton.properties
@@ -1,5 +1,10 @@
torbutton.button.tooltip.disabled = Tor gaitu
torbutton.button.tooltip.enabled = Tor ezgaitu
+torbutton.circuit_display.internet = Internet
+torbutton.circuit_display.ip_unknown = IP unknown
+torbutton.circuit_display.this_browser = This browser
+torbutton.circuit_display.tor_bridge = Bridge
+torbutton.circuit_display.unknown_country = Unknown country
torbutton.panel.tooltip.disabled = Sakatu Tor gaitzeko
torbutton.panel.tooltip.enabled = Sakatu Tor ezgaitzeko
torbutton.panel.plugins.disabled = Sakatu gehigarriak gaitzeko
@@ -46,6 +51,7 @@ torbutton.popup.short_torbrowser = Torbutton informazio garrantzitsua!\n\nTorbut
torbutton.popup.confirm_plugins = Flash bezalako pluginek zure pribatutasuna eta anonimotasuna kaltetu dezakete.\n\nTor saltatu dezakete zure uneko kokalekua eta IP helbidea erakusteko.\n\nPluginak gaitu nahi dituzulaz ziur al zaude?\n\n
torbutton.popup.never_ask_again = Ez nazazu galdetu berriz
+torbutton.popup.confirm_newnym = Tor Browser will close all windows and tabs. All website sessions will be lost.\n\nRestart Tor Browser now to reset your identity?\n\n
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=Webgune hau (% S) HTML5 canvas irudi datuak ateratzen saiatu da, eta zure ordenagailua identifikatzeko erabil daitezke.\n\nTor Nabigatzailea baimendu nahi duzu webgune honetan HTML5 canvas irudiaren datuak ateratzeko?
diff --git a/src/chrome/locale/fa/aboutTor.dtd b/src/chrome/locale/fa/aboutTor.dtd
index e0768d3..8c94506 100644
--- a/src/chrome/locale/fa/aboutTor.dtd
+++ b/src/chrome/locale/fa/aboutTor.dtd
@@ -1,5 +1,5 @@
<!--
- - Copyright (c) 2014, The Tor Project, Inc.
+ - Copyright (c) 2015, The Tor Project, Inc.
- See LICENSE for licensing information.
- vim: set sw=2 sts=2 ts=8 et syntax=xml:
-->
@@ -8,7 +8,7 @@
<!ENTITY aboutTor.outOfDateTorOn.label "با این حال ٫ این مرورگر قدیمی می باشد.">
<!ENTITY aboutTor.outOfDateTorOff.label "همچنین ٫ این مرورگر قدیمی می باشد .">
-<!ENTITY aboutTor.outOfDate2.label "بر روی پیاز(نماد تور) کلیک نمایید و بسته مرورگر تور را جهت بروزرسانی دریافت نمایید.">
+<!ENTITY aboutTor.outOfDate2.label "Click on the onion and then choose Check for Tor Browser Update.">
<!ENTITY aboutTor.check.label "تنظیمات شبکهی تور را بررسی کنید">
@@ -25,6 +25,7 @@
<!ENTITY aboutTor.searchSPPost.link "https://startpage.com/rth/search">
<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
+<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
<!ENTITY aboutTor.torInfo1.label "اطلاعات بيشتر">
<!ENTITY aboutTor.torInfo2.label "كشور و آدرس آى پی:">
diff --git a/src/chrome/locale/fa/brand.dtd b/src/chrome/locale/fa/brand.dtd
index b11f2dc..62d877c 100644
--- a/src/chrome/locale/fa/brand.dtd
+++ b/src/chrome/locale/fa/brand.dtd
@@ -6,3 +6,9 @@
<!ENTITY brandFullName "مرورگر تور">
<!ENTITY vendorShortName "پروژهٔ تور">
<!ENTITY trademarkInfo.part1 "فایرفاکس و لوگو فایرفاکس نشان تجاری بنیاد موزیلا می باشند.">
+
+<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
+<!ENTITY plugins.installed.find "Click to load installed system plugins">
+<!ENTITY plugins.installed.enable "Enable plugins">
+<!ENTITY plugins.installed.disable "Disable plugins">
+<!ENTITY plugins.installed.disable.tip "Click to prevent loading system plugins">
diff --git a/src/chrome/locale/fa/browser.properties b/src/chrome/locale/fa/browser.properties
index 37e0215..8849b67 100644
--- a/src/chrome/locale/fa/browser.properties
+++ b/src/chrome/locale/fa/browser.properties
@@ -3,11 +3,3 @@ browser.startup.homepage=about:tor
# Spell checker dictionary
spellchecker.dictionary=en_US
-
-# Default search engine
-browser.search.defaultenginename=Startpage
-
-# Search engine order (order displayed in the search bar dropdown)
-browser.search.order.1=Startpage
-browser.search.order.2=DuckDuckGo
-browser.search.order.3=گوگل کانادا
diff --git a/src/chrome/locale/fa/torbutton.dtd b/src/chrome/locale/fa/torbutton.dtd
index 07c0bc7..1c999fd 100644
--- a/src/chrome/locale/fa/torbutton.dtd
+++ b/src/chrome/locale/fa/torbutton.dtd
@@ -24,17 +24,19 @@
<!ENTITY torbutton.pref_connection_more_info.text "دکمه تُرهم اکنون فعال شده است.اگر میخواهيد تنظيمات پراکسی غيرمرتبط با تُر را تغيير دهيد، لطفا دکمه تُر را غيرفعال کنيد و دوباره به اينجا بازگرديد. اگر ميخواهيد تنظيمات تُر را تغيير دهيد، از پنجره تنظيمات دکمه تُر استفاده کنيد.">
<!ENTITY torbutton.context_menu.new_identity "هویت جدید">
<!ENTITY torbutton.context_menu.new_identity_key "من">
+<!ENTITY torbutton.context_menu.new_circuit "New Tor Circuit for this Site">
+<!ENTITY torbutton.context_menu.new_circuit_key "C">
<!ENTITY torbutton.context_menu.toggle "ضامن فعال/غيرفعال کردن تُر">
<!ENTITY torbutton.context_menu.toggle.key "T">
-<!ENTITY torbutton.context_menu.preferences "تنظيمات...">
+<!ENTITY torbutton.context_menu.preferences "Privacy and Security Settings…">
<!ENTITY torbutton.context_menu.preferences.key "P">
<!ENTITY torbutton.context_menu.about "درباره ي دکمه تُر...">
<!ENTITY torbutton.context_menu.about.key "A">
-<!ENTITY torbutton.context_menu.networksettings "باز کردن تنظیمات شبکه">
+<!ENTITY torbutton.context_menu.networksettings "Tor Network Settings…">
<!ENTITY torbutton.context_menu.networksettings.key "S">
-<!ENTITY torbutton.context_menu.downloadUpdate "بهروزرساندن مرورگر تُر">
+<!ENTITY torbutton.context_menu.downloadUpdate "Check for Tor Browser Update…">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
-<!ENTITY torbutton.context_menu.cookieProtections "حفاظت کلوچکها">
+<!ENTITY torbutton.context_menu.cookieProtections "Cookie Protections…">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.context_menu.copyTor "کپی به نشانی اينترنتی">
<!ENTITY torbutton.context_menu.copyTor.key "p">
@@ -155,3 +157,4 @@
<!ENTITY torbutton.prefs.sec_med_high "متوسط - بالا">
<!ENTITY torbutton.prefs.sec_high "زیاد">
<!ENTITY torbutton.prefs.sec_custom "تنظیم سفارشی">
+<!ENTITY torbutton.circuit_display.title "Tor circuit for this site">
diff --git a/src/chrome/locale/fa/torbutton.properties b/src/chrome/locale/fa/torbutton.properties
index 265aa65..8e02910 100644
--- a/src/chrome/locale/fa/torbutton.properties
+++ b/src/chrome/locale/fa/torbutton.properties
@@ -1,5 +1,10 @@
torbutton.button.tooltip.disabled = فعال کردن تُر
torbutton.button.tooltip.enabled = غيرفعال کردن تُر
+torbutton.circuit_display.internet = Internet
+torbutton.circuit_display.ip_unknown = IP unknown
+torbutton.circuit_display.this_browser = This browser
+torbutton.circuit_display.tor_bridge = Bridge
+torbutton.circuit_display.unknown_country = Unknown country
torbutton.panel.tooltip.disabled = برای فعال کردن تُرکليک کنيد
torbutton.panel.tooltip.enabled = برای غيرفعال کردن تُر کليک کنيد
torbutton.panel.plugins.disabled = برای فعال کردن پلاگين ها کليک کنيد
@@ -46,6 +51,7 @@ torbutton.popup.short_torbrowser = اطلاعلت مهم Torbutton!\n\nTorbutton
torbutton.popup.confirm_plugins = پلاگینها مانند فلش، میتوانند اختفا و ناشناس بودن شما را به خطر بیاندازند.\n\nآنها همچنین میتوانند "تر" را دور زده تا موقعیت کنونی و آدرس IP شما را برملا کنند.\n\nمطمئنید که میخواهید پلاگینها را فعال کنید؟\n\n
torbutton.popup.never_ask_again = دیگر هیچگاه این را از من نپرس
+torbutton.popup.confirm_newnym = Tor Browser will close all windows and tabs. All website sessions will be lost.\n\nRestart Tor Browser now to reset your identity?\n\n
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=این وبسایت (%S) سعی دارد اطلاعات بوم تصویر HTML5 را دریافت کند که ممکن است برای شناسایی منحصر به فرد کامپیوتر شما استفاده شود.\n\nآیا مرورگر تور میبایست اجازه دریافت این اطلاعات را بدهد؟
diff --git a/src/chrome/locale/fr/aboutTor.dtd b/src/chrome/locale/fr/aboutTor.dtd
index 41ad3e5..baeba8e 100644
--- a/src/chrome/locale/fr/aboutTor.dtd
+++ b/src/chrome/locale/fr/aboutTor.dtd
@@ -1,5 +1,5 @@
<!--
- - Copyright (c) 2014, The Tor Project, Inc.
+ - Copyright (c) 2015, The Tor Project, Inc.
- See LICENSE for licensing information.
- vim: set sw=2 sts=2 ts=8 et syntax=xml:
-->
@@ -8,7 +8,7 @@
<!ENTITY aboutTor.outOfDateTorOn.label "CEPENDANT, ce navigateur n'est pas à jour.">
<!ENTITY aboutTor.outOfDateTorOff.label "DE PLUS, ce navigateur n'est pas à jour.">
-<!ENTITY aboutTor.outOfDate2.label "Cliquez sur l'oignon, puis choisissez Télécharger les mises à jour du Tor Browser Bundle.">
+<!ENTITY aboutTor.outOfDate2.label "Cliquez sur l'oignon et choissisez ensuite Vérifier les mises à jour du Tor Browser">
<!ENTITY aboutTor.check.label "Tester les paramètres du réseau Tor">
@@ -25,6 +25,7 @@
<!ENTITY aboutTor.searchSPPost.link "https://startpage.com/rth/search">
<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
+<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
<!ENTITY aboutTor.torInfo1.label "Informations supplémentaires :">
<!ENTITY aboutTor.torInfo2.label "Pays & adresse IP :">
diff --git a/src/chrome/locale/fr/brand.dtd b/src/chrome/locale/fr/brand.dtd
index 775472a..4a4f0ea 100644
--- a/src/chrome/locale/fr/brand.dtd
+++ b/src/chrome/locale/fr/brand.dtd
@@ -6,3 +6,9 @@
<!ENTITY brandFullName "Navigateur Tor">
<!ENTITY vendorShortName "Projet Tor">
<!ENTITY trademarkInfo.part1 "Firefox et les logos de Firefox sont des marques déposées de la Fondation Mozilla.">
+
+<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
+<!ENTITY plugins.installed.find "Cliquer pour charger les modules complémentaires du système installés">
+<!ENTITY plugins.installed.enable "Activer les modules complémentaires">
+<!ENTITY plugins.installed.disable "Désactiver les modules complémentaires">
+<!ENTITY plugins.installed.disable.tip "Cliquer pour empêcher le chargement de modules complémentaires du système">
diff --git a/src/chrome/locale/fr/browser.properties b/src/chrome/locale/fr/browser.properties
index e8c588c..3b96d52 100644
--- a/src/chrome/locale/fr/browser.properties
+++ b/src/chrome/locale/fr/browser.properties
@@ -3,11 +3,3 @@ browser.startup.homepage=about:tor
# Spell checker dictionary
spellchecker.dictionary=fr_FR
-
-# Default search engine
-browser.search.defaultenginename=Page d'accueil
-
-# Search engine order (order displayed in the search bar dropdown)
-browser.search.order.1=Page d'accueil
-browser.search.order.2=DuckDuckGo
-browser.search.order.3=Google
diff --git a/src/chrome/locale/fr/torbutton.dtd b/src/chrome/locale/fr/torbutton.dtd
index f72e094..0e7b345 100644
--- a/src/chrome/locale/fr/torbutton.dtd
+++ b/src/chrome/locale/fr/torbutton.dtd
@@ -24,17 +24,19 @@
<!ENTITY torbutton.pref_connection_more_info.text "Torbutton est actuellement activé. Si vous souhaitez modifier vos paramètres proxy non-Tor, veuillez désactiver Torbutton et revenir à cette fenêtre. Si vous souhaitez modifier vos paramètres Tor, veuillez utiliser la fenêtre des préférences Torbutton.">
<!ENTITY torbutton.context_menu.new_identity "Nouvelle identité">
<!ENTITY torbutton.context_menu.new_identity_key "I">
+<!ENTITY torbutton.context_menu.new_circuit "New Tor Circuit for this Site">
+<!ENTITY torbutton.context_menu.new_circuit_key "C">
<!ENTITY torbutton.context_menu.toggle "Activer/Désactiver Tor">
<!ENTITY torbutton.context_menu.toggle.key "T">
-<!ENTITY torbutton.context_menu.preferences "Préférences...">
+<!ENTITY torbutton.context_menu.preferences "Privacy and Security Settings…">
<!ENTITY torbutton.context_menu.preferences.key "P">
<!ENTITY torbutton.context_menu.about "À propos de Torbutton...">
<!ENTITY torbutton.context_menu.about.key "A">
-<!ENTITY torbutton.context_menu.networksettings "Ouvrir les paramètres réseaux...">
+<!ENTITY torbutton.context_menu.networksettings "Tor Network Settings…">
<!ENTITY torbutton.context_menu.networksettings.key "S">
-<!ENTITY torbutton.context_menu.downloadUpdate "Télécharger la mise à jour de Tor Browser Bundle...">
+<!ENTITY torbutton.context_menu.downloadUpdate "Check for Tor Browser Update…">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
-<!ENTITY torbutton.context_menu.cookieProtections "Protections de cookies">
+<!ENTITY torbutton.context_menu.cookieProtections "Cookie Protections…">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.context_menu.copyTor "Copier l'URL Tor">
<!ENTITY torbutton.context_menu.copyTor.key "p">
@@ -155,3 +157,4 @@
<!ENTITY torbutton.prefs.sec_med_high "Moyen-Haut">
<!ENTITY torbutton.prefs.sec_high "Haut">
<!ENTITY torbutton.prefs.sec_custom "Valeurs personnalisées">
+<!ENTITY torbutton.circuit_display.title "Tor circuit for this site">
diff --git a/src/chrome/locale/fr/torbutton.properties b/src/chrome/locale/fr/torbutton.properties
index 870d293..61083eb 100644
--- a/src/chrome/locale/fr/torbutton.properties
+++ b/src/chrome/locale/fr/torbutton.properties
@@ -1,5 +1,10 @@
torbutton.button.tooltip.disabled = Activer Tor
torbutton.button.tooltip.enabled = Désactiver Tor
+torbutton.circuit_display.internet = Internet
+torbutton.circuit_display.ip_unknown = IP unknown
+torbutton.circuit_display.this_browser = This browser
+torbutton.circuit_display.tor_bridge = Bridge
+torbutton.circuit_display.unknown_country = Unknown country
torbutton.panel.tooltip.disabled = Cliquer pour activer Tor
torbutton.panel.tooltip.enabled = Cliquer pour désactiver Tor
torbutton.panel.plugins.disabled = Cliquer pour activer les plugins
@@ -46,6 +51,7 @@ torbutton.popup.short_torbrowser = Information importante concernant Torbutton!\
torbutton.popup.confirm_plugins = Les greffons tels que Flash peuvent nuire à votre anonymat et vie privée.\n\nIls peuvent également contourner Tor afin de révéler votre position actuelle ainsi que votre adresse IP.\n\nÊtes-vous certain de vouloir activer les greffons ?\n\n
torbutton.popup.never_ask_again = Ne plus me poser la question.
+torbutton.popup.confirm_newnym = Tor Browser will close all windows and tabs. All website sessions will be lost.\n\nRestart Tor Browser now to reset your identity?\n\n
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=Ce site (%S) tente d'extraire des informations d'image canvas HTML5 qui pourraient être utilisées comme identifiant unique pour votre ordinateur.\n\nTor Browser doit-il autoriser le site à extraire les informations d'image canvas HTML5 ?
diff --git a/src/chrome/locale/it/aboutTor.dtd b/src/chrome/locale/it/aboutTor.dtd
index 09e2064..ae9aeae 100644
--- a/src/chrome/locale/it/aboutTor.dtd
+++ b/src/chrome/locale/it/aboutTor.dtd
@@ -1,5 +1,5 @@
<!--
- - Copyright (c) 2014, The Tor Project, Inc.
+ - Copyright (c) 2015, The Tor Project, Inc.
- See LICENSE for licensing information.
- vim: set sw=2 sts=2 ts=8 et syntax=xml:
-->
@@ -8,7 +8,7 @@
<!ENTITY aboutTor.outOfDateTorOn.label "TUTTAVIA, questo browser non è aggiornato.">
<!ENTITY aboutTor.outOfDateTorOff.label "INOLTRE, questo browser non è aggiornato.">
-<!ENTITY aboutTor.outOfDate2.label "Clicca sulla cipolla e poi scegli Scarica Aggiornamento Tor Browser Bundle.">
+<!ENTITY aboutTor.outOfDate2.label "Click on the onion and then choose Check for Tor Browser Update.">
<!ENTITY aboutTor.check.label "Test Impostazioni della Rete Tor">
@@ -25,6 +25,7 @@
<!ENTITY aboutTor.searchSPPost.link "https://startpage.com/rth/search">
<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
+<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
<!ENTITY aboutTor.torInfo1.label "Ulteriori Info:">
<!ENTITY aboutTor.torInfo2.label "Nazione & Indirizzo IP:">
diff --git a/src/chrome/locale/it/brand.dtd b/src/chrome/locale/it/brand.dtd
index f813020..17fbe4b 100644
--- a/src/chrome/locale/it/brand.dtd
+++ b/src/chrome/locale/it/brand.dtd
@@ -6,3 +6,9 @@
<!ENTITY brandFullName "Tor Browser">
<!ENTITY vendorShortName "Tor Project">
<!ENTITY trademarkInfo.part1 "Firefox e i loghi Firefox sono marchi registrati della Mozilla Foundation.">
+
+<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
+<!ENTITY plugins.installed.find "Click to load installed system plugins">
+<!ENTITY plugins.installed.enable "Enable plugins">
+<!ENTITY plugins.installed.disable "Disable plugins">
+<!ENTITY plugins.installed.disable.tip "Click to prevent loading system plugins">
diff --git a/src/chrome/locale/it/browser.properties b/src/chrome/locale/it/browser.properties
index 295a03a..8849b67 100644
--- a/src/chrome/locale/it/browser.properties
+++ b/src/chrome/locale/it/browser.properties
@@ -3,11 +3,3 @@ browser.startup.homepage=about:tor
# Spell checker dictionary
spellchecker.dictionary=en_US
-
-# Default search engine
-browser.search.defaultenginename=Startpage
-
-# Search engine order (order displayed in the search bar dropdown)
-browser.search.order.1=Startpage
-browser.search.order.2=DuckDuckGo
-browser.search.order.3=Google
diff --git a/src/chrome/locale/it/torbutton.dtd b/src/chrome/locale/it/torbutton.dtd
index 11741a7..18d0a25 100644
--- a/src/chrome/locale/it/torbutton.dtd
+++ b/src/chrome/locale/it/torbutton.dtd
@@ -24,17 +24,19 @@
<!ENTITY torbutton.pref_connection_more_info.text "Torbutton è attualmente attivo. Se vuoi cambiare la configurazione del proxy quando non usi Tor, disabilita Torbutton e torna qui. Se vuoi modificare la configurazione quando usi Tor, usa la finestra delle preferenze di Torbutton.">
<!ENTITY torbutton.context_menu.new_identity "Nuova identità">
<!ENTITY torbutton.context_menu.new_identity_key "I">
+<!ENTITY torbutton.context_menu.new_circuit "New Tor Circuit for this Site">
+<!ENTITY torbutton.context_menu.new_circuit_key "C">
<!ENTITY torbutton.context_menu.toggle "Cambia lo stato di Tor">
<!ENTITY torbutton.context_menu.toggle.key "T">
-<!ENTITY torbutton.context_menu.preferences "Preferenze...">
+<!ENTITY torbutton.context_menu.preferences "Privacy and Security Settings…">
<!ENTITY torbutton.context_menu.preferences.key "P">
<!ENTITY torbutton.context_menu.about "Informazioni su Torbutton...">
<!ENTITY torbutton.context_menu.about.key "A">
-<!ENTITY torbutton.context_menu.networksettings "Apri Impostazioni di Rete...">
+<!ENTITY torbutton.context_menu.networksettings "Tor Network Settings…">
<!ENTITY torbutton.context_menu.networksettings.key "S">
-<!ENTITY torbutton.context_menu.downloadUpdate "Download Aggiornamento Tor Browser Bundle...">
+<!ENTITY torbutton.context_menu.downloadUpdate "Check for Tor Browser Update…">
<!ENTITY torbutton.context_menu.downloadUpdate.key "A">
-<!ENTITY torbutton.context_menu.cookieProtections "Protezione dei Cookies">
+<!ENTITY torbutton.context_menu.cookieProtections "Cookie Protections…">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.context_menu.copyTor "Copia URL Tor">
<!ENTITY torbutton.context_menu.copyTor.key "p">
@@ -155,3 +157,4 @@
<!ENTITY torbutton.prefs.sec_med_high "Medio-Alto">
<!ENTITY torbutton.prefs.sec_high "Alto">
<!ENTITY torbutton.prefs.sec_custom "Valori Customizzabili">
+<!ENTITY torbutton.circuit_display.title "Tor circuit for this site">
diff --git a/src/chrome/locale/it/torbutton.properties b/src/chrome/locale/it/torbutton.properties
index 34f7671..641dc07 100644
--- a/src/chrome/locale/it/torbutton.properties
+++ b/src/chrome/locale/it/torbutton.properties
@@ -1,5 +1,10 @@
torbutton.button.tooltip.disabled = Attiva Tor
torbutton.button.tooltip.enabled = Disattiva Tor
+torbutton.circuit_display.internet = Internet
+torbutton.circuit_display.ip_unknown = IP unknown
+torbutton.circuit_display.this_browser = This browser
+torbutton.circuit_display.tor_bridge = Bridge
+torbutton.circuit_display.unknown_country = Unknown country
torbutton.panel.tooltip.disabled = Fai clic per attivare Tor
torbutton.panel.tooltip.enabled = Fai clic per disattivare Tor
torbutton.panel.plugins.disabled = Fai clic per attivare i plugin
@@ -46,6 +51,7 @@ torbutton.popup.short_torbrowser = Informazioni importanti su Torbutton!\n\nTorb
torbutton.popup.confirm_plugins = Alcuni plugin come Flash possono violare la tua privacy e anonimità.\n\nPossono anche eludere Tor per rivelare la tua posizione attuale e il tuo indirizzo IP.\n\nSei sicuro di volere attivare i plugin?\n
torbutton.popup.never_ask_again = Non chiedermelo più
+torbutton.popup.confirm_newnym = Tor Browser will close all windows and tabs. All website sessions will be lost.\n\nRestart Tor Browser now to reset your identity?\n\n
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=Questo sito (%S) tentato di estrarre i dati di immagine HTML5 canvas, che possono essere utilizzati per identificare in modo univoco il computer.\n\nPermettere a Tor Browser di estrarre l'immagine HTML5 canvas per questo sito?
diff --git a/src/chrome/locale/ja/aboutTor.dtd b/src/chrome/locale/ja/aboutTor.dtd
index cf272b4..fe1edef 100644
--- a/src/chrome/locale/ja/aboutTor.dtd
+++ b/src/chrome/locale/ja/aboutTor.dtd
@@ -1,5 +1,5 @@
<!--
- - Copyright (c) 2014, The Tor Project, Inc.
+ - Copyright (c) 2015, The Tor Project, Inc.
- See LICENSE for licensing information.
- vim: set sw=2 sts=2 ts=8 et syntax=xml:
-->
@@ -8,7 +8,7 @@
<!ENTITY aboutTor.outOfDateTorOn.label "しかし、このブラウザは古いバージョンです。">
<!ENTITY aboutTor.outOfDateTorOff.label "また、このブラウザは古いバージョンです。">
-<!ENTITY aboutTor.outOfDate2.label "オニオンをクリックして、Tor Browser Bundleのアップデートをダウンロードを選択">
+<!ENTITY aboutTor.outOfDate2.label "Click on the onion and then choose Check for Tor Browser Update.">
<!ENTITY aboutTor.check.label "Torのネットワーク設定をテストする">
@@ -25,6 +25,7 @@
<!ENTITY aboutTor.searchSPPost.link "https://startpage.com/rth/search">
<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
+<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
<!ENTITY aboutTor.torInfo1.label "追加情報: ">
<!ENTITY aboutTor.torInfo2.label "国とIPアドレス:">
diff --git a/src/chrome/locale/ja/brand.dtd b/src/chrome/locale/ja/brand.dtd
index dd9e0d2..35a8894 100644
--- a/src/chrome/locale/ja/brand.dtd
+++ b/src/chrome/locale/ja/brand.dtd
@@ -6,3 +6,9 @@
<!ENTITY brandFullName "Tor Browser">
<!ENTITY vendorShortName "Tor Project">
<!ENTITY trademarkInfo.part1 "FirefoxおよびFirefoxのロゴはMozilla財団の登録商標です。">
+
+<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
+<!ENTITY plugins.installed.find "Click to load installed system plugins">
+<!ENTITY plugins.installed.enable "Enable plugins">
+<!ENTITY plugins.installed.disable "Disable plugins">
+<!ENTITY plugins.installed.disable.tip "Click to prevent loading system plugins">
diff --git a/src/chrome/locale/ja/browser.properties b/src/chrome/locale/ja/browser.properties
index 1c59f6e..8849b67 100644
--- a/src/chrome/locale/ja/browser.properties
+++ b/src/chrome/locale/ja/browser.properties
@@ -3,11 +3,3 @@ browser.startup.homepage=about:tor
# Spell checker dictionary
spellchecker.dictionary=en_US
-
-# Default search engine
-browser.search.defaultenginename=スタートページ
-
-# Search engine order (order displayed in the search bar dropdown)
-browser.search.order.1=スタートページ
-browser.search.order.2=DuckDuckGo
-browser.search.order.3=Google
diff --git a/src/chrome/locale/ja/torbutton.dtd b/src/chrome/locale/ja/torbutton.dtd
index 1f1d0a2..1dc7e6c 100644
--- a/src/chrome/locale/ja/torbutton.dtd
+++ b/src/chrome/locale/ja/torbutton.dtd
@@ -24,17 +24,19 @@
<!ENTITY torbutton.pref_connection_more_info.text "Torbuttonは現在オンになっています。もし、非Torの設定を変更する場合は、まずTorbuttonをオフにしてください。Torの設定を変更する場合にはTorbutton設定ウィンドウを使ってください。">
<!ENTITY torbutton.context_menu.new_identity "新しい識別">
<!ENTITY torbutton.context_menu.new_identity_key "I">
+<!ENTITY torbutton.context_menu.new_circuit "New Tor Circuit for this Site">
+<!ENTITY torbutton.context_menu.new_circuit_key "C">
<!ENTITY torbutton.context_menu.toggle "Torのステータスを変更">
<!ENTITY torbutton.context_menu.toggle.key "T">
-<!ENTITY torbutton.context_menu.preferences "設定...">
+<!ENTITY torbutton.context_menu.preferences "Privacy and Security Settings…">
<!ENTITY torbutton.context_menu.preferences.key "P">
<!ENTITY torbutton.context_menu.about "Torbuttonについて...">
<!ENTITY torbutton.context_menu.about.key "A">
-<!ENTITY torbutton.context_menu.networksettings "ネットワーク設定を開く...">
+<!ENTITY torbutton.context_menu.networksettings "Tor Network Settings…">
<!ENTITY torbutton.context_menu.networksettings.key "S">
-<!ENTITY torbutton.context_menu.downloadUpdate "Tor Browser Bundleのアップデートをダウンロード">
+<!ENTITY torbutton.context_menu.downloadUpdate "Check for Tor Browser Update…">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
-<!ENTITY torbutton.context_menu.cookieProtections "Cookie保護">
+<!ENTITY torbutton.context_menu.cookieProtections "Cookie Protections…">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.context_menu.copyTor "TorのURLをコピー">
<!ENTITY torbutton.context_menu.copyTor.key "p">
@@ -155,3 +157,4 @@
<!ENTITY torbutton.prefs.sec_med_high "中の上">
<!ENTITY torbutton.prefs.sec_high "高い">
<!ENTITY torbutton.prefs.sec_custom "カスタム値">
+<!ENTITY torbutton.circuit_display.title "Tor circuit for this site">
diff --git a/src/chrome/locale/ja/torbutton.properties b/src/chrome/locale/ja/torbutton.properties
index 4d10949..44c6155 100644
--- a/src/chrome/locale/ja/torbutton.properties
+++ b/src/chrome/locale/ja/torbutton.properties
@@ -1,5 +1,10 @@
torbutton.button.tooltip.disabled = Torを有効にする
torbutton.button.tooltip.enabled = Torを無効にする
+torbutton.circuit_display.internet = Internet
+torbutton.circuit_display.ip_unknown = IP unknown
+torbutton.circuit_display.this_browser = This browser
+torbutton.circuit_display.tor_bridge = Bridge
+torbutton.circuit_display.unknown_country = Unknown country
torbutton.panel.tooltip.disabled = クリックしてTorを有効にする
torbutton.panel.tooltip.enabled = クリックしてTorを無効にする
torbutton.panel.plugins.disabled = プラグインを有効にする
@@ -46,6 +51,7 @@ torbutton.popup.short_torbrowser = 重要なTorbuttonの情報!\n\nTorbuttonは
torbutton.popup.confirm_plugins = Flashなどのプラグインはあなたのプライバシーや匿名性を損なう恐れがあります。 \n\nそれらはTorを迂回しあなたの現在の位置やIPアドレスを漏らしてしまう恐れがあります。\n\n本当にプラグインを有効にしますか?\n\n
torbutton.popup.never_ask_again = 次からはたずねない
+torbutton.popup.confirm_newnym = Tor Browser will close all windows and tabs. All website sessions will be lost.\n\nRestart Tor Browser now to reset your identity?\n\n
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=このWebサイト(%S)がHTML5 canvas画像を使用しようとしています。これはあなたのコンピューターを識別するために使われる可能性があります。\n\nTor ブラウザーにHTML5 canvas画像の使用を許可しますか?
diff --git a/src/chrome/locale/ko/aboutTor.dtd b/src/chrome/locale/ko/aboutTor.dtd
index 2817dd6..53f141e 100644
--- a/src/chrome/locale/ko/aboutTor.dtd
+++ b/src/chrome/locale/ko/aboutTor.dtd
@@ -1,5 +1,5 @@
<!--
- - Copyright (c) 2014, The Tor Project, Inc.
+ - Copyright (c) 2015, The Tor Project, Inc.
- See LICENSE for licensing information.
- vim: set sw=2 sts=2 ts=8 et syntax=xml:
-->
@@ -8,7 +8,7 @@
<!ENTITY aboutTor.outOfDateTorOn.label "그러나, 이 브라우저가 업데이트 되지 않았습니다.">
<!ENTITY aboutTor.outOfDateTorOff.label "또한, 이 브라우저가 업데이트 되지 않았습니다.">
-<!ENTITY aboutTor.outOfDate2.label "양파 모양을 클릭하고 Tor 브라우저 번들 업데이트를 다운로드 합니다.">
+<!ENTITY aboutTor.outOfDate2.label "Click on the onion and then choose Check for Tor Browser Update.">
<!ENTITY aboutTor.check.label "Tor 네트워크 설정 테스트">
@@ -25,6 +25,7 @@
<!ENTITY aboutTor.searchSPPost.link "https://startpage.com/rth/search">
<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
+<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
<!ENTITY aboutTor.torInfo1.label "추가 정보 :">
<!ENTITY aboutTor.torInfo2.label "국가 & IP 주소 :">
diff --git a/src/chrome/locale/ko/brand.dtd b/src/chrome/locale/ko/brand.dtd
index 4b55e20..c7bdff6 100644
--- a/src/chrome/locale/ko/brand.dtd
+++ b/src/chrome/locale/ko/brand.dtd
@@ -6,3 +6,9 @@
<!ENTITY brandFullName "Tor 브라우저">
<!ENTITY vendorShortName "Tor 프로젝트">
<!ENTITY trademarkInfo.part1 "파이어폭스와 파이어폭스 로고들은 모질라 재단의 등록 상표입니다.">
+
+<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
+<!ENTITY plugins.installed.find "Click to load installed system plugins">
+<!ENTITY plugins.installed.enable "Enable plugins">
+<!ENTITY plugins.installed.disable "Disable plugins">
+<!ENTITY plugins.installed.disable.tip "Click to prevent loading system plugins">
diff --git a/src/chrome/locale/ko/browser.properties b/src/chrome/locale/ko/browser.properties
index a2b61b5..99872f4 100644
--- a/src/chrome/locale/ko/browser.properties
+++ b/src/chrome/locale/ko/browser.properties
@@ -3,11 +3,3 @@ browser.startup.homepage=Tor에 관하여
# Spell checker dictionary
spellchecker.dictionary=영어-미국
-
-# Default search engine
-browser.search.defaultenginename=시작 페이지
-
-# Search engine order (order displayed in the search bar dropdown)
-browser.search.order.1=시작 페이지
-browser.search.order.2=DuckDuckGo
-browser.search.order.3=구글
diff --git a/src/chrome/locale/ko/torbutton.dtd b/src/chrome/locale/ko/torbutton.dtd
index 26023f7..9ef3362 100644
--- a/src/chrome/locale/ko/torbutton.dtd
+++ b/src/chrome/locale/ko/torbutton.dtd
@@ -24,17 +24,19 @@
<!ENTITY torbutton.pref_connection_more_info.text "Torbutton이 현재 활성화되었습니다. 만약 Tor 프록시가 아닌 일반 프록시 서버 설정을 하시려면, Torbutton을 비활성화하고 이 창으로 돌아오십시오. 혹시 Tor 프록시 설정을 바꾸고 싶으시다면, Torbutton 설정 화면을 사용해 주세요.">
<!ENTITY torbutton.context_menu.new_identity "새로운 신원">
<!ENTITY torbutton.context_menu.new_identity_key "I">
+<!ENTITY torbutton.context_menu.new_circuit "New Tor Circuit for this Site">
+<!ENTITY torbutton.context_menu.new_circuit_key "C">
<!ENTITY torbutton.context_menu.toggle "Tor 작동 상태">
<!ENTITY torbutton.context_menu.toggle.key "T">
-<!ENTITY torbutton.context_menu.preferences "설정...">
+<!ENTITY torbutton.context_menu.preferences "Privacy and Security Settings…">
<!ENTITY torbutton.context_menu.preferences.key "P">
<!ENTITY torbutton.context_menu.about "Torbutton에 대하여...">
<!ENTITY torbutton.context_menu.about.key "A">
-<!ENTITY torbutton.context_menu.networksettings "네트워크 설정 열기">
+<!ENTITY torbutton.context_menu.networksettings "Tor Network Settings…">
<!ENTITY torbutton.context_menu.networksettings.key "S">
-<!ENTITY torbutton.context_menu.downloadUpdate "Tor browser bundle 업데이트 다운로드">
+<!ENTITY torbutton.context_menu.downloadUpdate "Check for Tor Browser Update…">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
-<!ENTITY torbutton.context_menu.cookieProtections "쿠키 보호">
+<!ENTITY torbutton.context_menu.cookieProtections "Cookie Protections…">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.context_menu.copyTor "Tor URL 복사">
<!ENTITY torbutton.context_menu.copyTor.key "P">
@@ -155,3 +157,4 @@
<!ENTITY torbutton.prefs.sec_med_high "중간 높음">
<!ENTITY torbutton.prefs.sec_high "높음">
<!ENTITY torbutton.prefs.sec_custom "맞춤 값">
+<!ENTITY torbutton.circuit_display.title "Tor circuit for this site">
diff --git a/src/chrome/locale/ko/torbutton.properties b/src/chrome/locale/ko/torbutton.properties
index 03ce18a..2a72a99 100644
--- a/src/chrome/locale/ko/torbutton.properties
+++ b/src/chrome/locale/ko/torbutton.properties
@@ -1,5 +1,10 @@
torbutton.button.tooltip.disabled = Tor 활성화
torbutton.button.tooltip.enabled = Tor 비활성화
+torbutton.circuit_display.internet = Internet
+torbutton.circuit_display.ip_unknown = IP unknown
+torbutton.circuit_display.this_browser = This browser
+torbutton.circuit_display.tor_bridge = Bridge
+torbutton.circuit_display.unknown_country = Unknown country
torbutton.panel.tooltip.disabled = Tor를 활성화하려면 클릭
torbutton.panel.tooltip.enabled = Tor를 비활성화하려면 클릭
torbutton.panel.plugins.disabled = 플러그인을 활성화하려면 클릭
@@ -46,6 +51,7 @@ torbutton.popup.short_torbrowser = 중요한 Torbutton 정보! Torbutton은 이
torbutton.popup.confirm_plugins = 플래시와 같은 플러그인들은 당신의 프라이버시와 익명성을 해칠 수 있습니다.\n\n또한 Tor을 우회하여 당신의 현재 위치와 IP주소를 노출시킬 수도 있습니다.\n\n정말로 플러그인을 허용하시겠습니까?\n\n
torbutton.popup.never_ask_again = 다시는 물어보지 않기
+torbutton.popup.confirm_newnym = Tor Browser will close all windows and tabs. All website sessions will be lost.\n\nRestart Tor Browser now to reset your identity?\n\n
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=This website (%S) attempted to extract HTML5 canvas image data, which may be used to uniquely identify your computer.\n\nShould Tor Browser allow this website to extract HTML5 canvas image data?
diff --git a/src/chrome/locale/nl/aboutTor.dtd b/src/chrome/locale/nl/aboutTor.dtd
index 980ac35..6e92558 100644
--- a/src/chrome/locale/nl/aboutTor.dtd
+++ b/src/chrome/locale/nl/aboutTor.dtd
@@ -1,5 +1,5 @@
<!--
- - Copyright (c) 2014, The Tor Project, Inc.
+ - Copyright (c) 2015, The Tor Project, Inc.
- See LICENSE for licensing information.
- vim: set sw=2 sts=2 ts=8 et syntax=xml:
-->
@@ -8,9 +8,9 @@
<!ENTITY aboutTor.outOfDateTorOn.label "ECHTER, deze browser is verouderd.">
<!ENTITY aboutTor.outOfDateTorOff.label "BOVENDIEN is deze browser verouderd.">
-<!ENTITY aboutTor.outOfDate2.label "Click op de ui en kies Download Tor Browser Pakket Update.">
+<!ENTITY aboutTor.outOfDate2.label "Klik op de ui en kies Controleer op Tor Browser Update">
-<!ENTITY aboutTor.check.label "Test Tor Netwerk Instellingen">
+<!ENTITY aboutTor.check.label "Test Tor Netwerkinstellingen">
<!ENTITY aboutTor.success.label "Gefeliciteerd!">
<!ENTITY aboutTor.success2.label "Deze browser is ingesteld om Tor te gebruiken.">
@@ -25,22 +25,23 @@
<!ENTITY aboutTor.searchSPPost.link "https://startpage.com/rth/search">
<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
+<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
<!ENTITY aboutTor.torInfo1.label "Bijkomende informatie:">
-<!ENTITY aboutTor.torInfo2.label "Land & IP Adres:">
+<!ENTITY aboutTor.torInfo2.label "Land & IP-adres:">
<!ENTITY aboutTor.torInfo3.label "Exit Node:">
<!ENTITY aboutTor.torInfo4.label "Deze server logt geen enkele informatie over bezoekers.">
<!ENTITY aboutTor.whatnextQuestion.label "Wat nu?">
-<!ENTITY aboutTor.whatnextAnswer.label "Tor is NIET alles wat u nodig heeft om anoniem te kunnen browsen. Mogelijk is het nodig dat u bepaalde browsing-gewoontes veranderen om te vezekeren dat uw identiteit veilig blijft.">
+<!ENTITY aboutTor.whatnextAnswer.label "Tor is NIET alles wat je nodig hebt om anoniem te kunnen browsen. Mogelijk is het nodig dat je bepaalde browsing-gewoontes veranderen om te verzekeren dat je identiteit veilig blijft.">
<!ENTITY aboutTor.whatnext.label "Tips om anoniem te blijven »">
<!ENTITY aboutTor.whatnext.link "https://www.torproject.org/download/download.html.en#warning">
<!ENTITY aboutTor.helpInfo1.label "Jij kan helpen!">
<!ENTITY aboutTor.helpInfo2.label "Er zijn veel verschillende manieren hoe jij kan helpen het Tor Netwerk sneller en sterker te maken:">
<!ENTITY aboutTor.helpInfo3.label "Draai een Tor Relay Node »">
<!ENTITY aboutTor.helpInfo3.link "https://www.torproject.org/docs/tor-doc-relay.html.en">
-<!ENTITY aboutTor.helpInfo4.label "Wordt vrijwilliger">
+<!ENTITY aboutTor.helpInfo4.label "Word vrijwilliger">
<!ENTITY aboutTor.helpInfo4.link "https://www.torproject.org/getinvolved/volunteer.html.en">
-<!ENTITY aboutTor.helpInfo5.label "Doe een donatie »">
+<!ENTITY aboutTor.helpInfo5.label "Maak een donatie »">
<!ENTITY aboutTor.helpInfo5.link "https://www.torproject.org/donate/donate.html.en">
<!ENTITY aboutTor.footer.label "Het Tor Project is een US 501(c)(3) non-profit voor onderzoek, ontwikkeling, onderwijs in online anonimiteit en privacy.">
diff --git a/src/chrome/locale/nl/brand.dtd b/src/chrome/locale/nl/brand.dtd
index af3e58a..bdd9afb 100644
--- a/src/chrome/locale/nl/brand.dtd
+++ b/src/chrome/locale/nl/brand.dtd
@@ -6,3 +6,9 @@
<!ENTITY brandFullName "Tor Browser">
<!ENTITY vendorShortName "Tor Project">
<!ENTITY trademarkInfo.part1 "Firefox and het Firefox logo zijn handelsmerken van de Mozilla Foundation.">
+
+<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
+<!ENTITY plugins.installed.find "Klok om de geïnstalleerde systeem plugins te laden">
+<!ENTITY plugins.installed.enable "Zet de plugins aan">
+<!ENTITY plugins.installed.disable "Zet de plugins uit">
+<!ENTITY plugins.installed.disable.tip "Klik om het laden van systeem plugins te voorkomen">
diff --git a/src/chrome/locale/nl/browser.properties b/src/chrome/locale/nl/browser.properties
index 8196ec1..8849b67 100644
--- a/src/chrome/locale/nl/browser.properties
+++ b/src/chrome/locale/nl/browser.properties
@@ -3,11 +3,3 @@ browser.startup.homepage=about:tor
# Spell checker dictionary
spellchecker.dictionary=en_US
-
-# Default search engine
-browser.search.defaultenginename=Startpage
-
-# Search engine order (order displayed in the search bar dropdown)
-browser.search.order.1=Startpage
-browser.search.order.2=Startpage
-browser.search.order.3=Startpage
diff --git a/src/chrome/locale/nl/torbutton.dtd b/src/chrome/locale/nl/torbutton.dtd
index c963be5..4e48991 100644
--- a/src/chrome/locale/nl/torbutton.dtd
+++ b/src/chrome/locale/nl/torbutton.dtd
@@ -24,17 +24,19 @@
<!ENTITY torbutton.pref_connection_more_info.text "Torbutton is momenteel ingeschakeld. Als u uw niet aan Tor gerelateerde proxy-instellingen wilt wijzigen dient u Torbutton uit te schakelen en dan hier terug te komen. Als u uw Tor instellingen wilt wijzigen, gebruik dan het Torbutton Voorkeuren-venster.">
<!ENTITY torbutton.context_menu.new_identity "Nieuwe identiteit">
<!ENTITY torbutton.context_menu.new_identity_key "I">
+<!ENTITY torbutton.context_menu.new_circuit "Nieuw tor circuit voor deze website">
+<!ENTITY torbutton.context_menu.new_circuit_key "C">
<!ENTITY torbutton.context_menu.toggle "Tor status wisselen">
<!ENTITY torbutton.context_menu.toggle.key "W">
-<!ENTITY torbutton.context_menu.preferences "Voorkeuren...">
+<!ENTITY torbutton.context_menu.preferences "Privacy en beveiliging instellingen...">
<!ENTITY torbutton.context_menu.preferences.key "V">
<!ENTITY torbutton.context_menu.about "Over Torbutton...">
<!ENTITY torbutton.context_menu.about.key "O">
-<!ENTITY torbutton.context_menu.networksettings "Open netwerkinstellingen">
+<!ENTITY torbutton.context_menu.networksettings "Tor netwerk instellingen">
<!ENTITY torbutton.context_menu.networksettings.key "S">
-<!ENTITY torbutton.context_menu.downloadUpdate "Download Tor Browser Bundle update...">
+<!ENTITY torbutton.context_menu.downloadUpdate "Controleer op updates voor de Tor Browser...">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
-<!ENTITY torbutton.context_menu.cookieProtections "Cookie Beveiligingen">
+<!ENTITY torbutton.context_menu.cookieProtections "Cookie beveiligingen...">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.context_menu.copyTor "Kopieer Tor URL">
<!ENTITY torbutton.context_menu.copyTor.key "P">
@@ -155,3 +157,4 @@
<!ENTITY torbutton.prefs.sec_med_high "Medium-Hoog">
<!ENTITY torbutton.prefs.sec_high "Hoog">
<!ENTITY torbutton.prefs.sec_custom "Aangepaste waarden">
+<!ENTITY torbutton.circuit_display.title "Tor circuit voor deze website">
diff --git a/src/chrome/locale/nl/torbutton.properties b/src/chrome/locale/nl/torbutton.properties
index c2e105d..4e24acf 100644
--- a/src/chrome/locale/nl/torbutton.properties
+++ b/src/chrome/locale/nl/torbutton.properties
@@ -1,5 +1,10 @@
torbutton.button.tooltip.disabled = Tor inschakelen
torbutton.button.tooltip.enabled = Tor uitschakelen
+torbutton.circuit_display.internet = Internet
+torbutton.circuit_display.ip_unknown = Onbekend IP adres
+torbutton.circuit_display.this_browser = Deze browser
+torbutton.circuit_display.tor_bridge = Bridge
+torbutton.circuit_display.unknown_country = Onbekend land
torbutton.panel.tooltip.disabled = Hier klikken om Tor in te schakelen
torbutton.panel.tooltip.enabled = Hier klikken om Tor uit te schakelen
torbutton.panel.plugins.disabled = Hier klikken om plugins in te schakelen
@@ -46,6 +51,7 @@ torbutton.popup.short_torbrowser = Belangrijke Torbutton Informatie!\n\nTorbutte
torbutton.popup.confirm_plugins = plug-ins zoals flash kunnen u privacy en anonimiteit schaden.⏎ ⏎ Ze kunnen ook tor negeren om zo u huidige locatie en IP adres uit te vinden⏎ ⏎ Weet u zeker dat u deze plug-ins wilt inschakelen?⏎ \n\n
torbutton.popup.never_ask_again = Vraag me dit nooit meer.
+torbutton.popup.confirm_newnym = De Tor Browser zal alle windows en tabs sluiten. Alle website sessies zullen verloren gaan.\n\nHerstart de Tor Browser om je identiteit te resetten?\n\n
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=De website (%S) heeft geprobeerd HTML5 canvas image data op te vragen, wat kan gebruikt worden voor een unieke identificatie van je computer.\n\nMoet Tor Browser deze website toestaan om HTML5 canvas image data op te vragen?
diff --git a/src/chrome/locale/pl/aboutTor.dtd b/src/chrome/locale/pl/aboutTor.dtd
index 654dc58..d3a938d 100644
--- a/src/chrome/locale/pl/aboutTor.dtd
+++ b/src/chrome/locale/pl/aboutTor.dtd
@@ -1,5 +1,5 @@
<!--
- - Copyright (c) 2014, The Tor Project, Inc.
+ - Copyright (c) 2015, The Tor Project, Inc.
- See LICENSE for licensing information.
- vim: set sw=2 sts=2 ts=8 et syntax=xml:
-->
@@ -8,7 +8,7 @@
<!ENTITY aboutTor.outOfDateTorOn.label "JEDNAK, ta przeglądarka jest nieaktualna.">
<!ENTITY aboutTor.outOfDateTorOff.label "PONADTO, ta przeglądarka jest nieaktualna.">
-<!ENTITY aboutTor.outOfDate2.label "Kliknij na cebulę, a następnie wybierz Pobierz aktualizację Tor Browser Bundle.">
+<!ENTITY aboutTor.outOfDate2.label "Kliknij na cebulę a następnie wybierz Sprawdź czy są dostępne aktualizacje.">
<!ENTITY aboutTor.check.label "Przetestuj Ustawienia Sieci Tor">
@@ -25,6 +25,7 @@
<!ENTITY aboutTor.searchSPPost.link "https://startpage.com/rth/search">
<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
+<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
<!ENTITY aboutTor.torInfo1.label "Dodatkowe informacje:">
<!ENTITY aboutTor.torInfo2.label "Kraj i adres IP:">
diff --git a/src/chrome/locale/pl/brand.dtd b/src/chrome/locale/pl/brand.dtd
index 5f8db34..f325478 100644
--- a/src/chrome/locale/pl/brand.dtd
+++ b/src/chrome/locale/pl/brand.dtd
@@ -6,3 +6,9 @@
<!ENTITY brandFullName "Przeglądarka Tor">
<!ENTITY vendorShortName "Project Tor">
<!ENTITY trademarkInfo.part1 "Firefox i jego loga są znakami towarowymi Mozilla Foundation.">
+
+<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
+<!ENTITY plugins.installed.find "Kliknij, aby załadować wszystkie zainstalowane wtyczki">
+<!ENTITY plugins.installed.enable "Włącz wtyczki">
+<!ENTITY plugins.installed.disable "Wyłącz wtyczki">
+<!ENTITY plugins.installed.disable.tip "Kliknij, aby zapobiec włączaniu wtyczek systemowych.">
diff --git a/src/chrome/locale/pl/browser.properties b/src/chrome/locale/pl/browser.properties
index 9d1593f..8849b67 100644
--- a/src/chrome/locale/pl/browser.properties
+++ b/src/chrome/locale/pl/browser.properties
@@ -3,11 +3,3 @@ browser.startup.homepage=about:tor
# Spell checker dictionary
spellchecker.dictionary=en_US
-
-# Default search engine
-browser.search.defaultenginename=Strona startowa
-
-# Search engine order (order displayed in the search bar dropdown)
-browser.search.order.1=Strona startowa
-browser.search.order.2=DuckDuckGo
-browser.search.order.3=Google
diff --git a/src/chrome/locale/pl/torbutton.dtd b/src/chrome/locale/pl/torbutton.dtd
index 5cfb5ef..0e16322 100644
--- a/src/chrome/locale/pl/torbutton.dtd
+++ b/src/chrome/locale/pl/torbutton.dtd
@@ -24,17 +24,19 @@
<!ENTITY torbutton.pref_connection_more_info.text "Torbutton jest włączony. Jeśli chcesz zmienić inne ustawienia proxy musisz wyłączyć Torbutton i powrócić tutaj. Jeśli chcesz zmienić ustawienia proxy Tor, zrób to tutaj.">
<!ENTITY torbutton.context_menu.new_identity "Nowa Tożsamość">
<!ENTITY torbutton.context_menu.new_identity_key "o">
+<!ENTITY torbutton.context_menu.new_circuit "Nowy obwód dla tej strony">
+<!ENTITY torbutton.context_menu.new_circuit_key "c">
<!ENTITY torbutton.context_menu.toggle "Zmień status Tora">
<!ENTITY torbutton.context_menu.toggle.key "Z">
-<!ENTITY torbutton.context_menu.preferences "Ustawienia">
+<!ENTITY torbutton.context_menu.preferences "Ustawienia Prywatności i Bezpieczeństwa...">
<!ENTITY torbutton.context_menu.preferences.key "U">
<!ENTITY torbutton.context_menu.about "O Torbutton">
<!ENTITY torbutton.context_menu.about.key "T">
-<!ENTITY torbutton.context_menu.networksettings "Otwórz ustawienia sieci...">
+<!ENTITY torbutton.context_menu.networksettings "Ustawienia Sieci Tor...">
<!ENTITY torbutton.context_menu.networksettings.key "s">
-<!ENTITY torbutton.context_menu.downloadUpdate "Pobierz aktualizację Paczki Tora z Przeglądarką">
+<!ENTITY torbutton.context_menu.downloadUpdate "Sprawdź czy są aktualizacje Tor Browser...">
<!ENTITY torbutton.context_menu.downloadUpdate.key "u">
-<!ENTITY torbutton.context_menu.cookieProtections "Ochrona Ciasteczek">
+<!ENTITY torbutton.context_menu.cookieProtections "Ochrona plików cookie...">
<!ENTITY torbutton.context_menu.cookieProtections.key "c">
<!ENTITY torbutton.context_menu.copyTor "Kopiuj URL Tora">
<!ENTITY torbutton.context_menu.copyTor.key "p">
@@ -155,3 +157,4 @@
<!ENTITY torbutton.prefs.sec_med_high "Średni-Wysoki">
<!ENTITY torbutton.prefs.sec_high "Wysoki">
<!ENTITY torbutton.prefs.sec_custom "Wartości niestandardowe">
+<!ENTITY torbutton.circuit_display.title "Obwód Tor dla tej strony">
diff --git a/src/chrome/locale/pl/torbutton.properties b/src/chrome/locale/pl/torbutton.properties
index 2b78918..f267dbe 100644
--- a/src/chrome/locale/pl/torbutton.properties
+++ b/src/chrome/locale/pl/torbutton.properties
@@ -1,5 +1,10 @@
torbutton.button.tooltip.disabled = Włącz Tora
torbutton.button.tooltip.enabled = Wyłącz Tora
+torbutton.circuit_display.internet = Internet
+torbutton.circuit_display.ip_unknown = IP nieznany
+torbutton.circuit_display.this_browser = Ta przeglądarka
+torbutton.circuit_display.tor_bridge = Bridge
+torbutton.circuit_display.unknown_country = Nieznane państwo
torbutton.panel.tooltip.disabled = Kliknij tutaj, aby włączyć Tora
torbutton.panel.tooltip.enabled = Kliknij tutaj, aby wyłączyć Tora
torbutton.panel.plugins.disabled = Kliknij aby włączyć wtyczki
@@ -46,6 +51,7 @@ torbutton.popup.short_torbrowser = Ważne informacje o Torbuttonie!\n\nTorbutton
torbutton.popup.confirm_plugins = Wtyczki takie jak Flash mogą szkodzić Twojej prywatności i anonimowości.\n\nMogą też omijać Tora, aby odkryć Twoją bieżącą lokalizację i adres IP.\n\nCzy na pewno chcesz włączyć wtyczki?\n\n
torbutton.popup.never_ask_again = Nie pytaj mnie więcej
+torbutton.popup.confirm_newnym = Tor Browser zamknie wszystkie otwarte okna i karty. Wszystkie sesje zostaną utracone.\n\nCzy chcesz zrestartować Tor Browser teraz, aby zmienić tożsamość?\n\n
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=Ta strona internetowa (%S) próbowała wydobyć HTML5 canvas danych obrazu, które mogą być wykorzystane w celu identyfikacji Twojego komputera.\n\nCzy chcesz, aby Tor Browser pozwolił tej stronie na wydobycie danych obrazu HTML5 canvas?
diff --git a/src/chrome/locale/pt/aboutTor.dtd b/src/chrome/locale/pt/aboutTor.dtd
index fd5cea7..3ad709e 100644
--- a/src/chrome/locale/pt/aboutTor.dtd
+++ b/src/chrome/locale/pt/aboutTor.dtd
@@ -1,5 +1,5 @@
<!--
- - Copyright (c) 2014, The Tor Project, Inc.
+ - Copyright (c) 2015, The Tor Project, Inc.
- See LICENSE for licensing information.
- vim: set sw=2 sts=2 ts=8 et syntax=xml:
-->
@@ -8,7 +8,7 @@
<!ENTITY aboutTor.outOfDateTorOn.label "CONTUDO, este navegador está desatualizado.">
<!ENTITY aboutTor.outOfDateTorOff.label "TAMBÉM, este navegador está desatualizado.">
-<!ENTITY aboutTor.outOfDate2.label "Clique no símbolo da cebola e escolha Download Tor Browser Bundle Update.">
+<!ENTITY aboutTor.outOfDate2.label "Click on the onion and then choose Check for Tor Browser Update.">
<!ENTITY aboutTor.check.label "Testar as Definições da Rede Tor">
@@ -25,6 +25,7 @@
<!ENTITY aboutTor.searchSPPost.link "https://startpage.com/rth/search">
<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
+<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
<!ENTITY aboutTor.torInfo1.label "Informação adicional:">
<!ENTITY aboutTor.torInfo2.label "País e endereço IP:">
diff --git a/src/chrome/locale/pt/brand.dtd b/src/chrome/locale/pt/brand.dtd
index 95bd25c..2969197 100644
--- a/src/chrome/locale/pt/brand.dtd
+++ b/src/chrome/locale/pt/brand.dtd
@@ -6,3 +6,9 @@
<!ENTITY brandFullName "Navegador Tor">
<!ENTITY vendorShortName "Projeto Tor">
<!ENTITY trademarkInfo.part1 "O Firefox e os logos Firefox são marcas registadas da Fundação Mozilla.">
+
+<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
+<!ENTITY plugins.installed.find "Click to load installed system plugins">
+<!ENTITY plugins.installed.enable "Enable plugins">
+<!ENTITY plugins.installed.disable "Disable plugins">
+<!ENTITY plugins.installed.disable.tip "Click to prevent loading system plugins">
diff --git a/src/chrome/locale/pt/browser.properties b/src/chrome/locale/pt/browser.properties
index 57324c5..8849b67 100644
--- a/src/chrome/locale/pt/browser.properties
+++ b/src/chrome/locale/pt/browser.properties
@@ -3,11 +3,3 @@ browser.startup.homepage=about:tor
# Spell checker dictionary
spellchecker.dictionary=en_US
-
-# Default search engine
-browser.search.defaultenginename=Página inicial
-
-# Search engine order (order displayed in the search bar dropdown)
-browser.search.order.1=Página inicial
-browser.search.order.2=DuckDuckGo
-browser.search.order.3=Google
diff --git a/src/chrome/locale/pt/torbutton.dtd b/src/chrome/locale/pt/torbutton.dtd
index d2b83a9..b7cc81c 100644
--- a/src/chrome/locale/pt/torbutton.dtd
+++ b/src/chrome/locale/pt/torbutton.dtd
@@ -24,17 +24,19 @@
<!ENTITY torbutton.pref_connection_more_info.text "Torbutton está activo. Se deseja mudar as configurações de Proxy que não sejam do Tor, por favor desactive o Torbutton e volte aqui. Se deseja alterar as configurações do Tor, por favor, use a janela de preferências do Torbutton.">
<!ENTITY torbutton.context_menu.new_identity "Identidade Nova">
<!ENTITY torbutton.context_menu.new_identity_key "I">
+<!ENTITY torbutton.context_menu.new_circuit "New Tor Circuit for this Site">
+<!ENTITY torbutton.context_menu.new_circuit_key "C">
<!ENTITY torbutton.context_menu.toggle "Alterar Status Tor">
<!ENTITY torbutton.context_menu.toggle.key "T">
-<!ENTITY torbutton.context_menu.preferences "Preferências...">
+<!ENTITY torbutton.context_menu.preferences "Privacy and Security Settings…">
<!ENTITY torbutton.context_menu.preferences.key "P">
<!ENTITY torbutton.context_menu.about "Sobre o Torbutton...">
<!ENTITY torbutton.context_menu.about.key "A">
-<!ENTITY torbutton.context_menu.networksettings "Open Network Settings…">
+<!ENTITY torbutton.context_menu.networksettings "Tor Network Settings…">
<!ENTITY torbutton.context_menu.networksettings.key "S">
-<!ENTITY torbutton.context_menu.downloadUpdate "Download Tor Browser Bundle Update...">
+<!ENTITY torbutton.context_menu.downloadUpdate "Check for Tor Browser Update…">
<!ENTITY torbutton.context_menu.downloadUpdate.key "A">
-<!ENTITY torbutton.context_menu.cookieProtections "Proteções de Cookies">
+<!ENTITY torbutton.context_menu.cookieProtections "Cookie Protections…">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.context_menu.copyTor "Copiar endereço do Tor">
<!ENTITY torbutton.context_menu.copyTor.key "P">
@@ -155,3 +157,4 @@
<!ENTITY torbutton.prefs.sec_med_high "Médio-Alto">
<!ENTITY torbutton.prefs.sec_high "Alto">
<!ENTITY torbutton.prefs.sec_custom "Valores definidos">
+<!ENTITY torbutton.circuit_display.title "Tor circuit for this site">
diff --git a/src/chrome/locale/pt/torbutton.properties b/src/chrome/locale/pt/torbutton.properties
index 4c920a3..3130115 100644
--- a/src/chrome/locale/pt/torbutton.properties
+++ b/src/chrome/locale/pt/torbutton.properties
@@ -1,5 +1,10 @@
torbutton.button.tooltip.disabled = Activar Tor
torbutton.button.tooltip.enabled = Desactivar Tor
+torbutton.circuit_display.internet = Internet
+torbutton.circuit_display.ip_unknown = IP unknown
+torbutton.circuit_display.this_browser = This browser
+torbutton.circuit_display.tor_bridge = Bridge
+torbutton.circuit_display.unknown_country = Unknown country
torbutton.panel.tooltip.disabled = Clique para activar Tor
torbutton.panel.tooltip.enabled = Clique para desactivar Tor
torbutton.panel.plugins.disabled = Clique para activar plugins
@@ -46,6 +51,7 @@ torbutton.popup.short_torbrowser = Informação importante do Torbutton!\nO Torb
torbutton.popup.confirm_plugins = Plugins such as Flash can harm your privacy and anonymity.\n\nThey can also bypass Tor to reveal your current location and IP address.\n\nAre you sure you want to enable plugins?\n\n
torbutton.popup.never_ask_again = Never ask me again
+torbutton.popup.confirm_newnym = Tor Browser will close all windows and tabs. All website sessions will be lost.\n\nRestart Tor Browser now to reset your identity?\n\n
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=Este site (%S) tentou extrair informação HTML5, que pode ser usada para identificar claramente o seu computador.\n\nQuer que o navegador Tor permita que o site extraia a informação HTML5?
diff --git a/src/chrome/locale/ru/aboutTor.dtd b/src/chrome/locale/ru/aboutTor.dtd
index efe3ff1..c1cdf4c 100644
--- a/src/chrome/locale/ru/aboutTor.dtd
+++ b/src/chrome/locale/ru/aboutTor.dtd
@@ -1,5 +1,5 @@
<!--
- - Copyright (c) 2014, The Tor Project, Inc.
+ - Copyright (c) 2015, The Tor Project, Inc.
- See LICENSE for licensing information.
- vim: set sw=2 sts=2 ts=8 et syntax=xml:
-->
@@ -8,7 +8,7 @@
<!ENTITY aboutTor.outOfDateTorOn.label "ТЕМ НЕ МЕНЕЕ, данный браузер устарел.">
<!ENTITY aboutTor.outOfDateTorOff.label "КРОМЕ ТОГО, данный браузер устарел.">
-<!ENTITY aboutTor.outOfDate2.label "Кликните по изображению лука и выбирите Загрузить обновление пакета Tor для браузера.">
+<!ENTITY aboutTor.outOfDate2.label "Нажмите на "лук"и затем выберите "Проверить обновления Tor Browser"">
<!ENTITY aboutTor.check.label "Проверка интернет-настроек Tor">
@@ -25,6 +25,7 @@
<!ENTITY aboutTor.searchSPPost.link "https://startpage.com/rth/search">
<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
+<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
<!ENTITY aboutTor.torInfo1.label "Дополнительные сведения:">
<!ENTITY aboutTor.torInfo2.label "Страна & IP-адрес">
diff --git a/src/chrome/locale/ru/brand.dtd b/src/chrome/locale/ru/brand.dtd
index 043e478..dff02f0 100644
--- a/src/chrome/locale/ru/brand.dtd
+++ b/src/chrome/locale/ru/brand.dtd
@@ -6,3 +6,9 @@
<!ENTITY brandFullName "Tor Browser">
<!ENTITY vendorShortName "Проект Tor">
<!ENTITY trademarkInfo.part1 "Firefox и его логотипы это торговые знаки Mozilla Foundation.">
+
+<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
+<!ENTITY plugins.installed.find "Click to load installed system plugins">
+<!ENTITY plugins.installed.enable "Enable plugins">
+<!ENTITY plugins.installed.disable "Disable plugins">
+<!ENTITY plugins.installed.disable.tip "Click to prevent loading system plugins">
diff --git a/src/chrome/locale/ru/browser.properties b/src/chrome/locale/ru/browser.properties
index e34fcba..8849b67 100644
--- a/src/chrome/locale/ru/browser.properties
+++ b/src/chrome/locale/ru/browser.properties
@@ -3,11 +3,3 @@ browser.startup.homepage=about:tor
# Spell checker dictionary
spellchecker.dictionary=en_US
-
-# Default search engine
-browser.search.defaultenginename=Начальная страница
-
-# Search engine order (order displayed in the search bar dropdown)
-browser.search.order.1=Начальная страница
-browser.search.order.2=DuckDuckGo
-browser.search.order.3=Google
diff --git a/src/chrome/locale/ru/torbutton.dtd b/src/chrome/locale/ru/torbutton.dtd
index 3bc9df2..760ce93 100644
--- a/src/chrome/locale/ru/torbutton.dtd
+++ b/src/chrome/locale/ru/torbutton.dtd
@@ -24,17 +24,19 @@
<!ENTITY torbutton.pref_connection_more_info.text "Torbutton включен. Если будут изменяться настройки прокси, не являющегося частью сети Tor, необходимо сначала отключить Torbutton и затем вернуться сюда. Если будут изменяться настройки Tor, необходимо использовать окно настроек Torbutton.">
<!ENTITY torbutton.context_menu.new_identity "Новая личность">
<!ENTITY torbutton.context_menu.new_identity_key "Я">
+<!ENTITY torbutton.context_menu.new_circuit "New Tor Circuit for this Site">
+<!ENTITY torbutton.context_menu.new_circuit_key "C">
<!ENTITY torbutton.context_menu.toggle "Изменить состояние Tor">
<!ENTITY torbutton.context_menu.toggle.key "T">
-<!ENTITY torbutton.context_menu.preferences "Настройки...">
+<!ENTITY torbutton.context_menu.preferences "Privacy and Security Settings…">
<!ENTITY torbutton.context_menu.preferences.key "Н">
<!ENTITY torbutton.context_menu.about "О Torbutton...">
<!ENTITY torbutton.context_menu.about.key "О">
-<!ENTITY torbutton.context_menu.networksettings "Открыть Сетевые настройки...">
+<!ENTITY torbutton.context_menu.networksettings "Tor Network Settings…">
<!ENTITY torbutton.context_menu.networksettings.key "S">
-<!ENTITY torbutton.context_menu.downloadUpdate "Скачать обновления Tor Browser Bundle">
+<!ENTITY torbutton.context_menu.downloadUpdate "Check for Tor Browser Update…">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
-<!ENTITY torbutton.context_menu.cookieProtections "Защита Cookie">
+<!ENTITY torbutton.context_menu.cookieProtections "Cookie Protections…">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.context_menu.copyTor "Копировать URL Tor">
<!ENTITY torbutton.context_menu.copyTor.key "p">
@@ -155,3 +157,4 @@
<!ENTITY torbutton.prefs.sec_med_high "Средне-Высокий">
<!ENTITY torbutton.prefs.sec_high "Высокий">
<!ENTITY torbutton.prefs.sec_custom "Собственные Значения">
+<!ENTITY torbutton.circuit_display.title "Tor circuit for this site">
diff --git a/src/chrome/locale/ru/torbutton.properties b/src/chrome/locale/ru/torbutton.properties
index ae55102..33ced7f 100644
--- a/src/chrome/locale/ru/torbutton.properties
+++ b/src/chrome/locale/ru/torbutton.properties
@@ -1,5 +1,10 @@
torbutton.button.tooltip.disabled = Включить Tor
torbutton.button.tooltip.enabled = Отключить Tor
+torbutton.circuit_display.internet = Internet
+torbutton.circuit_display.ip_unknown = IP unknown
+torbutton.circuit_display.this_browser = This browser
+torbutton.circuit_display.tor_bridge = Bridge
+torbutton.circuit_display.unknown_country = Unknown country
torbutton.panel.tooltip.disabled = Нажмите, чтобы включить Tor
torbutton.panel.tooltip.enabled = Нажмите, чтобы отключить Tor
torbutton.panel.plugins.disabled = Нажмите, чтобы включить плагины
@@ -46,6 +51,7 @@ torbutton.popup.short_torbrowser = Важная информация Torbutton!
torbutton.popup.confirm_plugins = Плагины вроде Flash могут нанести вред вашей конфиденциальности и анонимности.\nОни также могут обходить Tor, чтобы раскрыть ваше текущее местоположение и IP-адрес.\nВы уверены, что хотите включить плагины?\n
torbutton.popup.never_ask_again = Больше не спрашивать
+torbutton.popup.confirm_newnym = Tor Browser will close all windows and tabs. All website sessions will be lost.\n\nRestart Tor Browser now to reset your identity?\n\n
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=Этот веб-сайт (%S) пытается извлечь данные изображения HTML5 canvas, что может быть использовано для получения информации о вашем компьютере.\n\nДолжен ли Tor Browser разрешить этому сайту извлечь данные изображения HTML5 canvas?
diff --git a/src/chrome/locale/sv/aboutTor.dtd b/src/chrome/locale/sv/aboutTor.dtd
index 7fd6957..5b454fb 100644
--- a/src/chrome/locale/sv/aboutTor.dtd
+++ b/src/chrome/locale/sv/aboutTor.dtd
@@ -1,5 +1,5 @@
<!--
- - Copyright (c) 2014, The Tor Project, Inc.
+ - Copyright (c) 2015, The Tor Project, Inc.
- See LICENSE for licensing information.
- vim: set sw=2 sts=2 ts=8 et syntax=xml:
-->
@@ -8,7 +8,7 @@
<!ENTITY aboutTor.outOfDateTorOn.label "EMELLERTID, denna webbläsare är ej uppdaterad.">
<!ENTITY aboutTor.outOfDateTorOff.label "DESSUTOM, denna webbläsare är ej uppdaterad.">
-<!ENTITY aboutTor.outOfDate2.label "Klicka på löken och välj sedan Ladda ner uppdatering för Tor Browser Bundle.">
+<!ENTITY aboutTor.outOfDate2.label "Click on the onion and then choose Check for Tor Browser Update.">
<!ENTITY aboutTor.check.label "Testa nätverksinställningarna för Tor">
@@ -25,6 +25,7 @@
<!ENTITY aboutTor.searchSPPost.link "https://startpage.com/rth/search">
<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
+<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
<!ENTITY aboutTor.torInfo1.label "Ytterligare information:">
<!ENTITY aboutTor.torInfo2.label "Land och IP-adress:">
diff --git a/src/chrome/locale/sv/brand.dtd b/src/chrome/locale/sv/brand.dtd
index 312a603..83a75a4 100644
--- a/src/chrome/locale/sv/brand.dtd
+++ b/src/chrome/locale/sv/brand.dtd
@@ -6,3 +6,9 @@
<!ENTITY brandFullName "Tor Browser">
<!ENTITY vendorShortName "Tor-projektet">
<!ENTITY trademarkInfo.part1 "Firefox och Firefox-logotypen är varumärken som tillhör Mozilla Foundation.">
+
+<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
+<!ENTITY plugins.installed.find "Click to load installed system plugins">
+<!ENTITY plugins.installed.enable "Enable plugins">
+<!ENTITY plugins.installed.disable "Disable plugins">
+<!ENTITY plugins.installed.disable.tip "Click to prevent loading system plugins">
diff --git a/src/chrome/locale/sv/browser.properties b/src/chrome/locale/sv/browser.properties
index cade860..6542522 100644
--- a/src/chrome/locale/sv/browser.properties
+++ b/src/chrome/locale/sv/browser.properties
@@ -3,11 +3,3 @@ browser.startup.homepage=about:tor
# Spell checker dictionary
spellchecker.dictionary=sv_SE
-
-# Default search engine
-browser.search.defaultenginename=Startpage
-
-# Search engine order (order displayed in the search bar dropdown)
-browser.search.order.1=Startpage
-browser.search.order.2=DuckDuckGo
-browser.search.order.3=Google
diff --git a/src/chrome/locale/sv/torbutton.dtd b/src/chrome/locale/sv/torbutton.dtd
index d88a10c..2285c2a 100644
--- a/src/chrome/locale/sv/torbutton.dtd
+++ b/src/chrome/locale/sv/torbutton.dtd
@@ -24,17 +24,19 @@
<!ENTITY torbutton.pref_connection_more_info.text "Torbutton är aktiverad. Om du vill ändra inställningar för proxy utan Tor, inaktivera Tor och kom tillbaka hit. Om du vill ändra inställningar för Tor, använd Torbutton-inställningarna.">
<!ENTITY torbutton.context_menu.new_identity "Ny identitet">
<!ENTITY torbutton.context_menu.new_identity_key "N">
+<!ENTITY torbutton.context_menu.new_circuit "New Tor Circuit for this Site">
+<!ENTITY torbutton.context_menu.new_circuit_key "S">
<!ENTITY torbutton.context_menu.toggle "Slå på/av Tor">
<!ENTITY torbutton.context_menu.toggle.key "T">
-<!ENTITY torbutton.context_menu.preferences "Inställningar...">
+<!ENTITY torbutton.context_menu.preferences "Privacy and Security Settings…">
<!ENTITY torbutton.context_menu.preferences.key "I">
<!ENTITY torbutton.context_menu.about "Om Torbutton...">
<!ENTITY torbutton.context_menu.about.key "O">
-<!ENTITY torbutton.context_menu.networksettings "Öppna nätverksinställningar...">
+<!ENTITY torbutton.context_menu.networksettings "Tor Network Settings…">
<!ENTITY torbutton.context_menu.networksettings.key "Ö">
-<!ENTITY torbutton.context_menu.downloadUpdate "Ladda ner uppdatering för Tor Browser Bundle...">
+<!ENTITY torbutton.context_menu.downloadUpdate "Check for Tor Browser Update…">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
-<!ENTITY torbutton.context_menu.cookieProtections "Skyddade kakor">
+<!ENTITY torbutton.context_menu.cookieProtections "Cookie Protections…">
<!ENTITY torbutton.context_menu.cookieProtections.key "S">
<!ENTITY torbutton.context_menu.copyTor "Kopiera Tor URL">
<!ENTITY torbutton.context_menu.copyTor.key "p">
@@ -155,3 +157,4 @@
<!ENTITY torbutton.prefs.sec_med_high "Medium-hög">
<!ENTITY torbutton.prefs.sec_high "Hög">
<!ENTITY torbutton.prefs.sec_custom "Anpassad nivå">
+<!ENTITY torbutton.circuit_display.title "Tor circuit for this site">
diff --git a/src/chrome/locale/sv/torbutton.properties b/src/chrome/locale/sv/torbutton.properties
index d55e43a..5289a40 100644
--- a/src/chrome/locale/sv/torbutton.properties
+++ b/src/chrome/locale/sv/torbutton.properties
@@ -1,5 +1,10 @@
torbutton.button.tooltip.disabled = Aktivera Tor
torbutton.button.tooltip.enabled = Inaktivera Tor
+torbutton.circuit_display.internet = Internet
+torbutton.circuit_display.ip_unknown = IP unknown
+torbutton.circuit_display.this_browser = This browser
+torbutton.circuit_display.tor_bridge = Bridge
+torbutton.circuit_display.unknown_country = Unknown country
torbutton.panel.tooltip.disabled = Klicka för att aktivera Tor
torbutton.panel.tooltip.enabled = Klicka för att inaktivera Tor
torbutton.panel.plugins.disabled = Klicka för att aktivera plugins
@@ -46,6 +51,7 @@ torbutton.popup.short_torbrowser = Viktig information om Torbutton!\n\nTorbutton
torbutton.popup.confirm_plugins = Insticksmoduler så som Flash kan äventyra din anonymitet och personliga integritet.\n\nDe kan också kringgå Tor för att avslöja var du befinner dig och vad din IP-adress är.\n\nÄr du säker på att du vill aktivera insticksmoduler?\n\n
torbutton.popup.never_ask_again = Fråga aldrig igen
+torbutton.popup.confirm_newnym = Tor Browser will close all windows and tabs. All website sessions will be lost.\n\nRestart Tor Browser now to reset your identity?\n\n
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=Denna webbsida (%S) försökte komma åt HTML5-bilddata på ett kanvas, som skulle kunna användas för att identifiera just din dator.\n\nSka Tor Browser tillåta den här webbsidan att använda HTML5-bilddata på kanvas?
diff --git a/src/chrome/locale/tr/aboutTor.dtd b/src/chrome/locale/tr/aboutTor.dtd
index bdcd023..e14481c 100644
--- a/src/chrome/locale/tr/aboutTor.dtd
+++ b/src/chrome/locale/tr/aboutTor.dtd
@@ -1,5 +1,5 @@
<!--
- - Copyright (c) 2014, The Tor Project, Inc.
+ - Copyright (c) 2015, The Tor Project, Inc.
- See LICENSE for licensing information.
- vim: set sw=2 sts=2 ts=8 et syntax=xml:
-->
@@ -8,7 +8,7 @@
<!ENTITY aboutTor.outOfDateTorOn.label "AMA, bu tarayıcı güncel değil.">
<!ENTITY aboutTor.outOfDateTorOff.label "AYRICA, bu tarayıcı güncel değil.">
-<!ENTITY aboutTor.outOfDate2.label "Soğana tıklayın ve Tor Tarayıcı Paketi Güncellemesini İndir'i seçin.">
+<!ENTITY aboutTor.outOfDate2.label "Soğan'a tıklayın ve ardından Tor Tarayıcı Güncellemesini Denetle seçin.">
<!ENTITY aboutTor.check.label "Tor Ağ Ayarlarını Test Edin">
@@ -25,6 +25,7 @@
<!ENTITY aboutTor.searchSPPost.link "https://startpage.com/rth/search">
<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
+<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
<!ENTITY aboutTor.torInfo1.label "Ek bilgi:">
<!ENTITY aboutTor.torInfo2.label "Ülke ve IP Adresi:">
diff --git a/src/chrome/locale/tr/brand.dtd b/src/chrome/locale/tr/brand.dtd
index f07182a..45ea406 100644
--- a/src/chrome/locale/tr/brand.dtd
+++ b/src/chrome/locale/tr/brand.dtd
@@ -6,3 +6,9 @@
<!ENTITY brandFullName "Tor Tarayıcı">
<!ENTITY vendorShortName "Tor Projesi">
<!ENTITY trademarkInfo.part1 "Firefox ve Firefox logoları Mozilla Vakfı'nın ticari markalarıdır.">
+
+<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
+<!ENTITY plugins.installed.find "Yüklü sistem eklentilerini yüklemek için tıklayın">
+<!ENTITY plugins.installed.enable "Eklentileri etkinleştir">
+<!ENTITY plugins.installed.disable "Eklentileri devre dışı bırak">
+<!ENTITY plugins.installed.disable.tip "Sistem eklentilerinin yüklenmesini önlemek için tıklayın">
diff --git a/src/chrome/locale/tr/browser.properties b/src/chrome/locale/tr/browser.properties
index d788077..7b312a5 100644
--- a/src/chrome/locale/tr/browser.properties
+++ b/src/chrome/locale/tr/browser.properties
@@ -3,11 +3,3 @@ browser.startup.homepage=about:tor
# Spell checker dictionary
spellchecker.dictionary=tr_TR
-
-# Default search engine
-browser.search.defaultenginename=Startpage
-
-# Search engine order (order displayed in the search bar dropdown)
-browser.search.order.1=Startpage
-browser.search.order.2=DuckDuckGo
-browser.search.order.3=Google
diff --git a/src/chrome/locale/tr/torbutton.dtd b/src/chrome/locale/tr/torbutton.dtd
index 606928a..a4e7a21 100644
--- a/src/chrome/locale/tr/torbutton.dtd
+++ b/src/chrome/locale/tr/torbutton.dtd
@@ -24,17 +24,19 @@
<!ENTITY torbutton.pref_connection_more_info.text "Torbutton şu anda devre dışı. Vekil sunucu ayarlarını değiştirmek istiyorsanız, Torbutton'ı tekrar devre dışı bırakın. Genel ayarları değiştirecekseniz, ayarlar penceresini kullanın.">
<!ENTITY torbutton.context_menu.new_identity "Yeni Bağlantı">
<!ENTITY torbutton.context_menu.new_identity_key "S">
+<!ENTITY torbutton.context_menu.new_circuit "Bu site için yeni Tor devresi">
+<!ENTITY torbutton.context_menu.new_circuit_key "C">
<!ENTITY torbutton.context_menu.toggle "Durum">
<!ENTITY torbutton.context_menu.toggle.key "T">
-<!ENTITY torbutton.context_menu.preferences "Ayarlar">
+<!ENTITY torbutton.context_menu.preferences "Gizlilik ve Güvenlik Ayarları...">
<!ENTITY torbutton.context_menu.preferences.key "A">
<!ENTITY torbutton.context_menu.about "Hakkında">
<!ENTITY torbutton.context_menu.about.key "H">
-<!ENTITY torbutton.context_menu.networksettings "Ağ Ayarlarını Aç...">
+<!ENTITY torbutton.context_menu.networksettings "Tor Ağ Ayarları...">
<!ENTITY torbutton.context_menu.networksettings.key "S">
-<!ENTITY torbutton.context_menu.downloadUpdate "Tor Tarayıcı Paketi Güncelleştirmesini İndirin.">
+<!ENTITY torbutton.context_menu.downloadUpdate "Tor Tarayıcı Güncellemesini Denetle...">
<!ENTITY torbutton.context_menu.downloadUpdate.key "H">
-<!ENTITY torbutton.context_menu.cookieProtections "Çerez Korumaları">
+<!ENTITY torbutton.context_menu.cookieProtections "Çerez Korumaları...">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.context_menu.copyTor "Tor URL'sini kopyala">
<!ENTITY torbutton.context_menu.copyTor.key "p">
@@ -155,3 +157,4 @@
<!ENTITY torbutton.prefs.sec_med_high "Orta-Yüksek">
<!ENTITY torbutton.prefs.sec_high "Yüksek">
<!ENTITY torbutton.prefs.sec_custom "Özel Değerler">
+<!ENTITY torbutton.circuit_display.title "Bu site için Tor devresi">
diff --git a/src/chrome/locale/tr/torbutton.properties b/src/chrome/locale/tr/torbutton.properties
index 5a39ac2..d5d3276 100644
--- a/src/chrome/locale/tr/torbutton.properties
+++ b/src/chrome/locale/tr/torbutton.properties
@@ -1,5 +1,10 @@
torbutton.button.tooltip.disabled = Tor'u Etkinleştir
torbutton.button.tooltip.enabled = Tor'u Devre Dışı Bırak
+torbutton.circuit_display.internet = İnternet
+torbutton.circuit_display.ip_unknown = Bilinmeyen IP
+torbutton.circuit_display.this_browser = Bu tarayıcı
+torbutton.circuit_display.tor_bridge = Köprü
+torbutton.circuit_display.unknown_country = Bilinmeyen ülke
torbutton.panel.tooltip.disabled = Tor'u etkinleştirmek için tıklayın
torbutton.panel.tooltip.enabled = Tor'u devre dışı bırakmak için tıklayın
torbutton.panel.plugins.disabled = Eklentileri etkinleştirmek için tıklayın
@@ -46,6 +51,7 @@ torbutton.popup.short_torbrowser = Önemli Torbutton bilgisi!\nTorbutton şimdi
torbutton.popup.confirm_plugins = Flash gibi eklentiler gizliliğinizi ve anonimliğinizi zedeleyebilir.\n\nAynı zaman Tor'u atlatarak geçerli konumunuzu ve IP adresinizi ortaya çıkarabilir.\n\nEklentileri aktif etmek istiyor musunuz?\n
torbutton.popup.never_ask_again = Bir daha sorma
+torbutton.popup.confirm_newnym = Tor Browser will close all windows and tabs. All website sessions will be lost.\n\nRestart Tor Browser now to reset your identity?\n\n
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=Bu web sitesi (%S) bilgisayarınızı benzersiz olarak tanımlayabilmek için kullanılabilen HTML5 tuvalindeki resim verisine erişmeye çalıştı.\n\nTor Tarayıcı bu web sitesine HTML5 tuval resim verisini çıkarmasına izin vermeli mi?
diff --git a/src/chrome/locale/vi/aboutTor.dtd b/src/chrome/locale/vi/aboutTor.dtd
index afb7da7..c3c8027 100644
--- a/src/chrome/locale/vi/aboutTor.dtd
+++ b/src/chrome/locale/vi/aboutTor.dtd
@@ -1,5 +1,5 @@
<!--
- - Copyright (c) 2014, The Tor Project, Inc.
+ - Copyright (c) 2015, The Tor Project, Inc.
- See LICENSE for licensing information.
- vim: set sw=2 sts=2 ts=8 et syntax=xml:
-->
@@ -8,7 +8,7 @@
<!ENTITY aboutTor.outOfDateTorOn.label "Tuy nhiên, trình duyệt này đã lỗi thời.">
<!ENTITY aboutTor.outOfDateTorOff.label "Ngoài ra, trình duyệt này đã lỗi thời.">
-<!ENTITY aboutTor.outOfDate2.label "Click on the onion and then choose Download Tor Browser Bundle Update.">
+<!ENTITY aboutTor.outOfDate2.label "Click on the onion and then choose Check for Tor Browser Update.">
<!ENTITY aboutTor.check.label "Test Tor Network Settings">
@@ -25,6 +25,7 @@
<!ENTITY aboutTor.searchSPPost.link "https://startpage.com/rth/search">
<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
+<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
<!ENTITY aboutTor.torInfo1.label "Additional Info:">
<!ENTITY aboutTor.torInfo2.label "Quốc gia & Địa chỉ IP:">
diff --git a/src/chrome/locale/vi/brand.dtd b/src/chrome/locale/vi/brand.dtd
index 49ca087..c73eca2 100644
--- a/src/chrome/locale/vi/brand.dtd
+++ b/src/chrome/locale/vi/brand.dtd
@@ -6,3 +6,9 @@
<!ENTITY brandFullName "Tor Browser">
<!ENTITY vendorShortName "Dự án Tor">
<!ENTITY trademarkInfo.part1 "Firefox and the Firefox logos are trademarks of the Mozilla Foundation.">
+
+<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
+<!ENTITY plugins.installed.find "Click to load installed system plugins">
+<!ENTITY plugins.installed.enable "Enable plugins">
+<!ENTITY plugins.installed.disable "Disable plugins">
+<!ENTITY plugins.installed.disable.tip "Click to prevent loading system plugins">
diff --git a/src/chrome/locale/vi/browser.properties b/src/chrome/locale/vi/browser.properties
index 295a03a..8849b67 100644
--- a/src/chrome/locale/vi/browser.properties
+++ b/src/chrome/locale/vi/browser.properties
@@ -3,11 +3,3 @@ browser.startup.homepage=about:tor
# Spell checker dictionary
spellchecker.dictionary=en_US
-
-# Default search engine
-browser.search.defaultenginename=Startpage
-
-# Search engine order (order displayed in the search bar dropdown)
-browser.search.order.1=Startpage
-browser.search.order.2=DuckDuckGo
-browser.search.order.3=Google
diff --git a/src/chrome/locale/vi/torbutton.dtd b/src/chrome/locale/vi/torbutton.dtd
index f33340d..5378f43 100644
--- a/src/chrome/locale/vi/torbutton.dtd
+++ b/src/chrome/locale/vi/torbutton.dtd
@@ -24,17 +24,19 @@
<!ENTITY torbutton.pref_connection_more_info.text "Torbutton hiện đang được hiệu hóa. Nếu bạn muốn thay đổi thiết lập proxy không thuộc chương trình Tor, vui lòng tắt Torbutton và quay trở lại đây. Nếu bạn muốn thay đổi thiết lập từ Tor, vui lòng dùng cửa sổ tùy chỉnh Torbutton.">
<!ENTITY torbutton.context_menu.new_identity "Giám định Mới">
<!ENTITY torbutton.context_menu.new_identity_key "I">
+<!ENTITY torbutton.context_menu.new_circuit "New Tor Circuit for this Site">
+<!ENTITY torbutton.context_menu.new_circuit_key "C">
<!ENTITY torbutton.context_menu.toggle "Bật/tắt trạng thái của Tor">
<!ENTITY torbutton.context_menu.toggle.key "T">
-<!ENTITY torbutton.context_menu.preferences "Tùy chỉnh...">
+<!ENTITY torbutton.context_menu.preferences "Privacy and Security Settings…">
<!ENTITY torbutton.context_menu.preferences.key "P">
<!ENTITY torbutton.context_menu.about "Thông tin về Torbutton...">
<!ENTITY torbutton.context_menu.about.key "A">
-<!ENTITY torbutton.context_menu.networksettings "Mở các Thiết đặt Mạng...">
+<!ENTITY torbutton.context_menu.networksettings "Tor Network Settings…">
<!ENTITY torbutton.context_menu.networksettings.key "S">
-<!ENTITY torbutton.context_menu.downloadUpdate "Tải về Bản cập nhật Bổ trợ cho Trình duyệt Tor...">
+<!ENTITY torbutton.context_menu.downloadUpdate "Check for Tor Browser Update…">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
-<!ENTITY torbutton.context_menu.cookieProtections "Cơ chế bảo vệ Cookie">
+<!ENTITY torbutton.context_menu.cookieProtections "Cookie Protections…">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.context_menu.copyTor "Sao chép địa chỉ URL của Tor">
<!ENTITY torbutton.context_menu.copyTor.key "p">
@@ -155,3 +157,4 @@
<!ENTITY torbutton.prefs.sec_med_high "Medium-High">
<!ENTITY torbutton.prefs.sec_high "High">
<!ENTITY torbutton.prefs.sec_custom "Custom Values">
+<!ENTITY torbutton.circuit_display.title "Tor circuit for this site">
diff --git a/src/chrome/locale/vi/torbutton.properties b/src/chrome/locale/vi/torbutton.properties
index 20b1f61..9c563d4 100644
--- a/src/chrome/locale/vi/torbutton.properties
+++ b/src/chrome/locale/vi/torbutton.properties
@@ -1,5 +1,10 @@
torbutton.button.tooltip.disabled = Bật Tor
torbutton.button.tooltip.enabled = Tắt Tor
+torbutton.circuit_display.internet = Internet
+torbutton.circuit_display.ip_unknown = IP unknown
+torbutton.circuit_display.this_browser = This browser
+torbutton.circuit_display.tor_bridge = Bridge
+torbutton.circuit_display.unknown_country = Unknown country
torbutton.panel.tooltip.disabled = Nhấn để bật Tor
torbutton.panel.tooltip.enabled = Nhấn để tắt Tor
torbutton.panel.plugins.disabled = Nhấn để bật phần bổ trợ
@@ -46,6 +51,7 @@ torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton
torbutton.popup.confirm_plugins = Plugins such as Flash can harm your privacy and anonymity.\n\nThey can also bypass Tor to reveal your current location and IP address.\n\nAre you sure you want to enable plugins?\n\n
torbutton.popup.never_ask_again = Never ask me again
+torbutton.popup.confirm_newnym = Tor Browser will close all windows and tabs. All website sessions will be lost.\n\nRestart Tor Browser now to reset your identity?\n\n
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=This website (%S) attempted to extract HTML5 canvas image data, which may be used to uniquely identify your computer.\n\nShould Tor Browser allow this website to extract HTML5 canvas image data?
diff --git a/src/chrome/locale/zh-CN/aboutTor.dtd b/src/chrome/locale/zh-CN/aboutTor.dtd
index 3e2cff4..8237217 100644
--- a/src/chrome/locale/zh-CN/aboutTor.dtd
+++ b/src/chrome/locale/zh-CN/aboutTor.dtd
@@ -1,5 +1,5 @@
<!--
- - Copyright (c) 2014, The Tor Project, Inc.
+ - Copyright (c) 2015, The Tor Project, Inc.
- See LICENSE for licensing information.
- vim: set sw=2 sts=2 ts=8 et syntax=xml:
-->
@@ -8,7 +8,7 @@
<!ENTITY aboutTor.outOfDateTorOn.label "但是该浏览器并非最新版本。">
<!ENTITY aboutTor.outOfDateTorOff.label "另外,该浏览器并非最新版本。">
-<!ENTITY aboutTor.outOfDate2.label "请单击洋葱图标,然后选择“下载 Tor Browser Bundle”更新。">
+<!ENTITY aboutTor.outOfDate2.label "点击洋葱,然后选择 Tor Browser 检查更新。">
<!ENTITY aboutTor.check.label "测试 Tor 网络设置">
@@ -25,6 +25,7 @@
<!ENTITY aboutTor.searchSPPost.link "https://startpage.com/rth/search">
<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
+<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
<!ENTITY aboutTor.torInfo1.label "更多信息:">
<!ENTITY aboutTor.torInfo2.label "国家与 IP 地址:">
diff --git a/src/chrome/locale/zh-CN/brand.dtd b/src/chrome/locale/zh-CN/brand.dtd
index 7868d2d..97f75bb 100644
--- a/src/chrome/locale/zh-CN/brand.dtd
+++ b/src/chrome/locale/zh-CN/brand.dtd
@@ -6,3 +6,9 @@
<!ENTITY brandFullName "Tor Browser">
<!ENTITY vendorShortName "Tor Project">
<!ENTITY trademarkInfo.part1 "Firefox 与 Firefox 图标为 Mozilla Foundation 的商标。">
+
+<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
+<!ENTITY plugins.installed.find "点击加载已安装的系统插件">
+<!ENTITY plugins.installed.enable "启用插件">
+<!ENTITY plugins.installed.disable "禁用插件">
+<!ENTITY plugins.installed.disable.tip "点击阻止加载系统插件">
diff --git a/src/chrome/locale/zh-CN/browser.properties b/src/chrome/locale/zh-CN/browser.properties
index b3a313b..452496c 100644
--- a/src/chrome/locale/zh-CN/browser.properties
+++ b/src/chrome/locale/zh-CN/browser.properties
@@ -3,11 +3,3 @@ browser.startup.homepage=about:tor
# Spell checker dictionary
spellchecker.dictionary=zh_CN
-
-# Default search engine
-browser.search.defaultenginename=Startpage
-
-# Search engine order (order displayed in the search bar dropdown)
-browser.search.order.1=Startpage
-browser.search.order.2=DuckDuckGo
-browser.search.order.3=Google
diff --git a/src/chrome/locale/zh-CN/torbutton.dtd b/src/chrome/locale/zh-CN/torbutton.dtd
index 39b07dc..7da1472 100644
--- a/src/chrome/locale/zh-CN/torbutton.dtd
+++ b/src/chrome/locale/zh-CN/torbutton.dtd
@@ -24,17 +24,19 @@
<!ENTITY torbutton.pref_connection_more_info.text "Torbutton 当前已启用。如需对 Tor 之外的代理设置进行更改,请禁用 Torbutton 后再返回这里。如需更改 Tor 的设置,请在 Torbutton 首选项窗口中进行设置。">
<!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_key "C">
<!ENTITY torbutton.context_menu.toggle "切换 Tor 状态">
<!ENTITY torbutton.context_menu.toggle.key "T">
-<!ENTITY torbutton.context_menu.preferences "首选项...">
+<!ENTITY torbutton.context_menu.preferences "隐私与安全设置…">
<!ENTITY torbutton.context_menu.preferences.key "P">
<!ENTITY torbutton.context_menu.about "关于 Torbutton...">
<!ENTITY torbutton.context_menu.about.key "A">
-<!ENTITY torbutton.context_menu.networksettings "打开网络设置…">
+<!ENTITY torbutton.context_menu.networksettings "Tor 网络设置…">
<!ENTITY torbutton.context_menu.networksettings.key "S">
-<!ENTITY torbutton.context_menu.downloadUpdate "下载 Tor Browser Bundle 更新...">
+<!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 "Cookie 保护…">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.context_menu.copyTor "复制 Tor 网址">
<!ENTITY torbutton.context_menu.copyTor.key "p">
@@ -155,3 +157,4 @@
<!ENTITY torbutton.prefs.sec_med_high "中高">
<!ENTITY torbutton.prefs.sec_high "高">
<!ENTITY torbutton.prefs.sec_custom "自定义">
+<!ENTITY torbutton.circuit_display.title "对此网站的 Tor 线路">
diff --git a/src/chrome/locale/zh-CN/torbutton.properties b/src/chrome/locale/zh-CN/torbutton.properties
index 49bb702..cee64a2 100644
--- a/src/chrome/locale/zh-CN/torbutton.properties
+++ b/src/chrome/locale/zh-CN/torbutton.properties
@@ -1,5 +1,10 @@
torbutton.button.tooltip.disabled = 启用 Tor
torbutton.button.tooltip.enabled = 禁用 Tor
+torbutton.circuit_display.internet = 互联网
+torbutton.circuit_display.ip_unknown = IP 未知
+torbutton.circuit_display.this_browser = 本浏览器
+torbutton.circuit_display.tor_bridge = 网桥
+torbutton.circuit_display.unknown_country = 未知国家
torbutton.panel.tooltip.disabled = 点击启用 Tor
torbutton.panel.tooltip.enabled = 点击禁用 Tor
torbutton.panel.plugins.disabled = 点击启用插件
@@ -46,6 +51,7 @@ torbutton.popup.short_torbrowser = Torbutton的重要信息!\n\nTorbutton 目
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
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=此网站 (%S) 试图获取 HTML5 Canva 图像数据,该数据可用作你所用计算机的唯一标识。\n\nTor Browser 是否应允许此网站获取 HTML5 Canva 图像数据?
1
0

[tor-launcher/master] Bug 13271: Ask about bridges before proxy in wizard.
by mikeperry@torproject.org 13 Feb '15
by mikeperry@torproject.org 13 Feb '15
13 Feb '15
commit 23704117fbbfc90f18e90c61874fa120e6e1de3a
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Wed Feb 11 15:09:24 2015 -0500
Bug 13271: Ask about bridges before proxy in wizard.
Reorder wizardpage elements and fix associated logic.
Replace "proxy" with "local proxy" within prompts to help users distinguish
bridges from proxies that are needed for local Internet access.
Reorder Network Settings dialog elements to match wizard order.
Remove unneeded label=" " from wizardpage elements.
Linux and Windows: Fix problem where prev/next buttons were displayed
on first wizard page.
Use showWizardNavButtons() in more places.
---
src/chrome/content/network-settings-wizard.xul | 62 +++++++++++-----------
src/chrome/content/network-settings.js | 67 ++++++++++++++----------
src/chrome/content/network-settings.xul | 16 +++---
src/chrome/locale/en/network-settings.dtd | 8 +--
4 files changed, 83 insertions(+), 70 deletions(-)
diff --git a/src/chrome/content/network-settings-wizard.xul b/src/chrome/content/network-settings-wizard.xul
index 33ba6c5..9c75894 100644
--- a/src/chrome/content/network-settings-wizard.xul
+++ b/src/chrome/content/network-settings-wizard.xul
@@ -29,7 +29,7 @@
<!-- This page requires a setTimeout for onpageshow because it may be
shown first -->
- <wizardpage label=" " pageid="first" next="proxy" onextra2="onCopyLog();"
+ <wizardpage pageid="first" next="proxy" onextra2="onCopyLog();"
onpageshow="setTimeout(function() { showWizardNavButtons(false); }, 0);">
<hbox class="tbb-header">
<vbox class="tbb-logo-box" align="start">
@@ -54,72 +54,74 @@
</vbox>
</wizardpage>
- <wizardpage label=" " pageid="proxy" next="bridges" onextra2="onCopyLog();"
+ <wizardpage pageid="bridges" next="proxy" onextra2="onCopyLog();"
onpageshow="showWizardNavButtons(true);"
- onpageadvanced="return onWizardProxyNext(this);">
+ onpageadvanced="return onWizardUseBridgesNext(this)">
<vbox class="tbb-logo-box" align="start">
<image class="tbb-logo" />
</vbox>
<separator class="tbb-logo-separator" />
<hbox>
<vbox flex="1">
- <label class="question">&torSettings.proxyQuestion;</label>
- <radiogroup id="proxyRadioGroup">
- <radio id="proxyRadioYes" label="&torSettings.yes;" />
- <radio id="proxyRadioNo" label="&torSettings.no;" selected="true" />
+ <label class="question">&torSettings.bridgeQuestion;</label>
+ <radiogroup id="useBridgesRadioGroup">
+ <radio id="bridgesRadioYes" label="&torSettings.yes;" />
+ <radio id="bridgesRadioNo" label="&torSettings.no;" selected="true" />
</radiogroup>
- <description class="questionHelp">&torSettings.proxyHelp;
+ <description class="questionHelp">&torSettings.bridgeHelp;
</description>
</vbox>
</hbox>
</wizardpage>
- <wizardpage pageid="proxyYES" next="bridges" onextra2="onCopyLog();"
- onpageadvanced="return (getAndValidateProxySettings() != null)">
+ <wizardpage pageid="bridgeSettings" next="proxy" onextra2="onCopyLog();"
+ onpageshow="onWizardBridgeSettingsShow();">
<vbox class="tbb-logo-box" align="start">
<image class="tbb-logo" />
</vbox>
<separator class="tbb-logo-separator" />
- <label class="instructions">&torSettings.enterProxy;</label>
- <groupbox id="proxySpecificSettings" />
+ <vbox>
+ <label id="bridgeSettingsPrompt"
+ class="question">&torSettings.bridgeSettingsPrompt;</label>
+ <groupbox id="bridgeSpecificSettings" />
+ </vbox>
</wizardpage>
- <wizardpage pageid="bridges" onextra2="onCopyLog();"
- onpageshow="onWizardUseBridgesRadioChange(this)">
+ <wizardpage pageid="proxy" onextra2="onCopyLog();"
+ onpageshow="onWizardUseProxyRadioChange()"
+ onpageadvanced="return onWizardProxyNext(this);">
<vbox class="tbb-logo-box" align="start">
<image class="tbb-logo" />
</vbox>
<separator class="tbb-logo-separator" />
<hbox>
<vbox flex="1">
- <label class="question">&torSettings.bridgeQuestion;</label>
- <radiogroup id="useBridgesRadioGroup"
- oncommand="onWizardUseBridgesRadioChange()">
- <radio id="bridgesRadioYes" label="&torSettings.yes;" />
- <radio id="bridgesRadioNo" label="&torSettings.no;" selected="true" />
+ <label class="question">&torSettings.proxyQuestion;</label>
+ <radiogroup id="proxyRadioGroup"
+ oncommand="onWizardUseProxyRadioChange()">
+ <radio id="proxyRadioYes" label="&torSettings.yes;" />
+ <radio id="proxyRadioNo" label="&torSettings.no;" selected="true" />
</radiogroup>
- <description class="questionHelp">&torSettings.bridgeHelp;
+ <description class="questionHelp">&torSettings.proxyHelp;
</description>
</vbox>
</hbox>
</wizardpage>
- <wizardpage label=" " pageid="bridgeSettings" onextra2="onCopyLog();"
- onpageshow="onWizardBridgeSettingsShow()">
+ <wizardpage pageid="proxyYES" onextra2="onCopyLog();"
+ onpageshow="onWizardProxySettingsShow()"
+ onpageadvanced="return (getAndValidateProxySettings() != null)">
<vbox class="tbb-logo-box" align="start">
<image class="tbb-logo" />
</vbox>
<separator class="tbb-logo-separator" />
- <vbox>
- <label id="bridgeSettingsPrompt"
- class="question">&torSettings.bridgeSettingsPrompt;</label>
- <groupbox id="bridgeSpecificSettings" />
- </vbox>
+ <label class="instructions">&torSettings.enterProxy;</label>
+ <groupbox id="proxySpecificSettings" />
</wizardpage>
<!-- This page requires a setTimeout for onpageshow because it may be
shown first -->
- <wizardpage label=" " pageid="startingTor" next="notUsed"
+ <wizardpage pageid="startingTor" next="notUsed"
onpageshow="setTimeout(function() { showWizardNavButtons(false); }, 0);">
<spring flex="1" />
<hbox>
@@ -130,7 +132,7 @@
<spring flex="1" />
</wizardpage>
- <wizardpage label=" " pageid="errorPanel" next="notUsed"
+ <wizardpage pageid="errorPanel" next="notUsed"
onpageshow="showWizardNavButtons(false);"
onextra2="onCopyLog();">
<spring flex="1" />
@@ -149,7 +151,7 @@
<spring flex="1" />
</wizardpage>
- <wizardpage class="help" label=" " pageid="bridgeHelp" next="notUsed"
+ <wizardpage class="help" pageid="bridgeHelp" next="notUsed"
onpageadvanced="closeHelp(); return false;">
<vbox id="bridgeHelpContent" />
</wizardpage>
diff --git a/src/chrome/content/network-settings.js b/src/chrome/content/network-settings.js
index aa07e1e..3277553 100644
--- a/src/chrome/content/network-settings.js
+++ b/src/chrome/content/network-settings.js
@@ -248,7 +248,7 @@ function getWizard()
function onWizardConfigure()
{
- getWizard().advance("proxy");
+ getWizard().advance("bridges");
}
@@ -257,34 +257,51 @@ function onWizardProxyNext(aWizPage)
if (aWizPage)
{
var hasProxy = getElemValue("proxyRadioYes", false);
- aWizPage.next = (hasProxy) ? "proxyYES" : "bridges";
+ aWizPage.next = (hasProxy) ? "proxyYES" : "";
}
return true;
}
-function onWizardUseBridgesRadioChange(aWizPage)
+function onWizardUseProxyRadioChange()
{
var wizard = getWizard();
- if (!aWizPage)
- aWizPage = wizard.currentPage;
+ if (wizard && wizard.currentPage)
+ {
+ var hasProxy = getElemValue("proxyRadioYes", false);
+ wizard.setAttribute("lastpage", !hasProxy);
+ wizard._wizardButtons.onPageChange();
+ }
+}
+
+
+function onWizardProxySettingsShow()
+{
+ var wizard = getWizard();
+ if (wizard)
+ {
+ wizard.setAttribute("lastpage", true);
+ wizard._wizardButtons.onPageChange();
+ }
+}
+
+
+function onWizardUseBridgesNext(aWizPage)
+{
if (aWizPage)
{
var useBridges = getElemValue("bridgesRadioYes", false);
- aWizPage.next = (useBridges) ? "bridgeSettings" : "";
- wizard.setAttribute("lastpage", !useBridges);
- wizard._wizardButtons.onPageChange();
+ aWizPage.next = (useBridges) ? "bridgeSettings" : "proxy";
}
+
+ return true;
}
function onWizardBridgeSettingsShow()
{
- var wizard = getWizard();
- wizard.setAttribute("lastpage", true);
- wizard._wizardButtons.onPageChange();
- var btn = document.documentElement.getButton("finish");
+ var btn = document.documentElement.getButton("next");
if (btn)
btn.focus();
}
@@ -335,10 +352,7 @@ var gObserver = {
var haveWizard = (getWizard() != null);
showPanel();
if (haveWizard)
- {
- showOrHideButton("back", true, false);
- showOrHideButton("next", true, false);
- }
+ showWizardNavButtons(true);
readTorSettings();
}
else if (kTorProcessDidNotStartTopic == aTopic)
@@ -400,8 +414,8 @@ function readTorSettings()
try
{
// TODO: retrieve > 1 key at one time inside initProxySettings() et al.
- didSucceed = initProxySettings() && initFirewallSettings() &&
- initBridgeSettings();
+ didSucceed = initBridgeSettings() &&
+ initProxySettings() && initFirewallSettings();
}
catch (e) { TorLauncherLogger.safelog(4, "Error in readTorSettings: ", e); }
@@ -437,6 +451,9 @@ function showPanel(aPanelID)
else if (wizard.currentPage.pageid != aPanelID)
wizard.goTo(aPanelID);
+ if (wizard && (aPanelID == "first"))
+ setTimeout( function() { showWizardNavButtons(false); }, 0);
+
showOrHideButton("accept", (aPanelID == "settings"), true);
}
@@ -466,10 +483,7 @@ function showStartingTorPanel()
{
var haveWizard = (getWizard() != null);
if (haveWizard)
- {
- showOrHideButton("back", false, false);
- showOrHideButton("next", false, false);
- }
+ showWizardNavButtons(false);
showPanel("startingTor");
}
@@ -505,10 +519,7 @@ function showErrorMessage(aTorExited, aErrorMsg)
var haveWizard = (getWizard() != null);
if (haveWizard)
- {
- showOrHideButton("back", false, false);
- showOrHideButton("next", false, false);
- }
+ showWizardNavButtons(false);
var haveErrorOrWarning = (gTorProcessService.TorBootstrapErrorOccurred ||
gProtocolSvc.TorLogHasWarnOrErr)
@@ -969,8 +980,8 @@ function applySettings()
var didSucceed = false;
try
{
- didSucceed = applyProxySettings() && applyFirewallSettings() &&
- applyBridgeSettings();
+ didSucceed = applyBridgeSettings() &&
+ applyProxySettings() && applyFirewallSettings();
}
catch (e) { TorLauncherLogger.safelog(4, "Error in applySettings: ", e); }
diff --git a/src/chrome/content/network-settings.xul b/src/chrome/content/network-settings.xul
index 4f98559..9fffbec 100644
--- a/src/chrome/content/network-settings.xul
+++ b/src/chrome/content/network-settings.xul
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<!--
- - Copyright (c) 2014, The Tor Project, Inc.
+ - Copyright (c) 2015, The Tor Project, Inc.
- See LICENSE for licensing information.
- vim: set sw=2 sts=2 ts=8 et syntax=xml:
-->
@@ -33,6 +33,13 @@
<deck id="deck">
<vbox id="settings">
<vbox>
+ <checkbox id="useBridges" groupboxID="bridgeSpecificSettings"
+ label="&torsettings.useBridges.checkbox;"
+ oncommand="toggleElemUI(this);" />
+ <groupbox id="bridgeSpecificSettings" />
+ </vbox>
+
+ <vbox>
<separator orient="horizontal" class="thin" />
<checkbox id="useProxy" groupboxID="proxySpecificSettings"
label="&torsettings.useProxy.checkbox;"
@@ -46,13 +53,6 @@
oncommand="toggleElemUI(this)"/>
<groupbox id="firewallSpecificSettings" />
</vbox>
-
- <vbox>
- <checkbox id="useBridges" groupboxID="bridgeSpecificSettings"
- label="&torsettings.useBridges.checkbox;"
- oncommand="toggleElemUI(this);" />
- <groupbox id="bridgeSpecificSettings" />
- </vbox>
</vbox>
<vbox id="startingTor">
<spring flex="1" />
diff --git a/src/chrome/locale/en/network-settings.dtd b/src/chrome/locale/en/network-settings.dtd
index 3661088..5ce6ee8 100644
--- a/src/chrome/locale/en/network-settings.dtd
+++ b/src/chrome/locale/en/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
<!ENTITY torSettings.connect "Connect">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a proxy.">
+<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
1
0

[torbutton/master] Bug 9906: Warn users before closing all windows and performing new identity.
by mikeperry@torproject.org 13 Feb '15
by mikeperry@torproject.org 13 Feb '15
13 Feb '15
commit 2310af87aafc831db955c06616e282d3def99e21
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Tue Feb 10 15:07:38 2015 -0800
Bug 9906: Warn users before closing all windows and performing new identity.
---
src/chrome/content/torbutton.js | 28 +++++++++++++++++++++++++++-
src/chrome/locale/en/torbutton.properties | 1 +
src/defaults/preferences/preferences.js | 1 +
3 files changed, 29 insertions(+), 1 deletion(-)
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index 4fa3d63..cd534a7 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -1558,7 +1558,33 @@ function torbutton_new_identity() {
// Make sure that we can only click once on New Identiy to avoid race
// conditions leading to failures (see bug 11783 for an example).
document.getElementById("torbutton-new-identity").disabled = true;
- torbutton_do_new_identity();
+
+ let shouldConfirm = m_tb_prefs.getBoolPref("extensions.torbutton.confirm_newnym");
+
+ if (shouldConfirm) {
+ let prompts = Cc["@mozilla.org/embedcomp/prompt-service;1"]
+ .getService(Ci.nsIPromptService);
+
+ // Display two buttons, both with string titles.
+ let flags = prompts.STD_YES_NO_BUTTONS;
+
+ let message = torbutton_get_property_string("torbutton.popup.confirm_newnym");
+ let askAgainText = torbutton_get_property_string("torbutton.popup.never_ask_again");
+ let askAgain = {value: false};
+
+ let confirmed = (prompts.confirmEx(null, "", message, flags, null, null, null,
+ askAgainText, askAgain) == 0);
+
+ m_tb_prefs.setBoolPref("extensions.torbutton.confirm_newnym", !askAgain.value);
+
+ if (confirmed) {
+ torbutton_do_new_identity();
+ } else {
+ document.getElementById("torbutton-new-identity").disabled = false;
+ }
+ } else {
+ torbutton_do_new_identity();
+ }
} catch(e) {
// If something went wrong make sure we have the New Identity button
// enabled (again).
diff --git a/src/chrome/locale/en/torbutton.properties b/src/chrome/locale/en/torbutton.properties
index c3e85a3..505f31b 100644
--- a/src/chrome/locale/en/torbutton.properties
+++ b/src/chrome/locale/en/torbutton.properties
@@ -51,6 +51,7 @@ torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton
torbutton.popup.confirm_plugins = Plugins such as Flash can harm your privacy and anonymity.\n\nThey can also bypass Tor to reveal your current location and IP address.\n\nAre you sure you want to enable plugins?\n\n
torbutton.popup.never_ask_again = Never ask me again
+torbutton.popup.confirm_newnym = Tor Browser will close all windows and tabs. All website sessions will be lost.\n\nRestart Tor Browser now to reset your identity?\n\n
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=This website (%S) attempted to extract HTML5 canvas image data, which may be used to uniquely identify your computer.\n\nShould Tor Browser allow this website to extract HTML5 canvas image data?
diff --git a/src/defaults/preferences/preferences.js b/src/defaults/preferences/preferences.js
index 6dde983..3584581 100644
--- a/src/defaults/preferences/preferences.js
+++ b/src/defaults/preferences/preferences.js
@@ -221,6 +221,7 @@ pref("extensions.torbutton.useragent_vendorSub","");
pref("extensions.torbutton.prompt_torbrowser", true);
pref("extensions.torbutton.confirm_plugins", true);
+pref("extensions.torbutton.confirm_newnym", true);
// Browser home page, and spell checker dictionary:
pref("browser.startup.homepage", "chrome://torbutton/locale/browser.properties");
1
0

13 Feb '15
commit 0020d0dda4af8ef64919d27de5f4b2d0f259f395
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Tue Feb 10 16:25:02 2015 -0800
Bug 9442: Add New Circuit button
This adds a button to utilize the domain isolation to get a new circuit for
the current tab only.
---
src/chrome/content/popup.xul | 5 +++++
src/chrome/content/torbutton.js | 16 ++++++++++++++++
src/chrome/locale/en/torbutton.dtd | 2 ++
src/components/domain-isolator.js | 20 +++++++++++++++++---
4 files changed, 40 insertions(+), 3 deletions(-)
diff --git a/src/chrome/content/popup.xul b/src/chrome/content/popup.xul
index 4117632..e0c1f74 100644
--- a/src/chrome/content/popup.xul
+++ b/src/chrome/content/popup.xul
@@ -18,6 +18,11 @@
accesskey="&torbutton.context_menu.new_identity_key;"
insertafter="context-stop"
oncommand="torbutton_new_identity()"/>
+ <menuitem id="torbutton-new-circuit"
+ label="&torbutton.context_menu.new_circuit;"
+ accesskey="&torbutton.context_menu.new_circuit_key;"
+ insertafter="context-stop"
+ oncommand="torbutton_new_circuit()"/>
<menuseparator/>
<menuitem id="torbutton-cookie-protector"
label="&torbutton.context_menu.cookieProtections;"
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index cd534a7..8ae1d5d 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -1552,6 +1552,22 @@ function torbutton_send_ctrl_cmd(command) {
}
}
+// Bug 1506 P4: Needed for New IP Address
+function torbutton_new_circuit() {
+ let thirdPartyUtil = Cc["@mozilla.org/thirdpartyutil;1"]
+ .getService(Ci.mozIThirdPartyUtil);
+
+ let firstPartyDomain = thirdPartyUtil
+ .getFirstPartyHostForIsolation(gBrowser.currentURI);
+
+ let domainIsolator = Cc["@torproject.org/domain-isolator;1"]
+ .getService(Ci.nsISupports).wrappedJSObject;
+
+ domainIsolator.newCircuitForDomain(firstPartyDomain);
+
+ gBrowser.reloadWithFlags(Ci.nsIWebNavigation.LOAD_FLAGS_BYPASS_CACHE);
+}
+
// Bug 1506 P4: Needed for New Identity.
function torbutton_new_identity() {
try {
diff --git a/src/chrome/locale/en/torbutton.dtd b/src/chrome/locale/en/torbutton.dtd
index 1b90d63..15ae1e6 100644
--- a/src/chrome/locale/en/torbutton.dtd
+++ b/src/chrome/locale/en/torbutton.dtd
@@ -24,6 +24,8 @@
<!ENTITY torbutton.pref_connection_more_info.text "Torbutton is currently enabled. If you would like to change your non-Tor proxy settings, please disable Torbutton and return here. If you would like to change your Tor settings, please use the Torbutton preference window.">
<!ENTITY torbutton.context_menu.new_identity "New Identity">
<!ENTITY torbutton.context_menu.new_identity_key "I">
+<!ENTITY torbutton.context_menu.new_circuit "New Tor Circuit for this Site">
+<!ENTITY torbutton.context_menu.new_circuit_key "C">
<!ENTITY torbutton.context_menu.toggle "Toggle Tor status">
<!ENTITY torbutton.context_menu.toggle.key "T">
<!ENTITY torbutton.context_menu.preferences "Privacy and Security Settings…">
diff --git a/src/components/domain-isolator.js b/src/components/domain-isolator.js
index e8e6bfa..6e6201e 100644
--- a/src/components/domain-isolator.js
+++ b/src/components/domain-isolator.js
@@ -108,8 +108,10 @@ const kMODULE_CID = Components.ID("e33fd6d4-270f-475f-a96f-ff3140279f68");
// Import XPCOMUtils object.
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-// DomainIsolator object. Constructor does nothing.
-function DomainIsolator() { }
+// DomainIsolator object.
+function DomainIsolator() {
+ this.wrappedJSObject = this;
+}
// Firefox component requirements
DomainIsolator.prototype = {
QueryInterface: XPCOMUtils.generateQI([Ci.nsISupports, Ci.nsIObserver]),
@@ -121,7 +123,19 @@ DomainIsolator.prototype = {
logger.eclog(3, "domain isolator: set up isolating circuits by domain");
tor.isolateCircuitsByDomain();
}
- }
+ },
+ newCircuitForDomain: function (domain) {
+ // Check if we already have a nonce. If not, create
+ // one for this domain.
+ if (!tor.noncesForDomains.hasOwnProperty(domain)) {
+ tor.noncesForDomains[domain] = 0;
+ } else {
+ tor.noncesForDomains[domain] += 1;
+ }
+ logger.eclog(3, "New domain isolation count " +tor.noncesForDomains[domain] + " for " + domain);
+ },
+
+ wrappedJSObject: null
};
// Assign factory to global object.
1
0

[torbutton/master] Bug #14866: Show correct circuit when more than one exists for a given domain
by mikeperry@torproject.org 13 Feb '15
by mikeperry@torproject.org 13 Feb '15
13 Feb '15
commit b862e0c70af24fb18da276bcda1b22ea39896093
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Wed Feb 11 22:10:31 2015 -0800
Bug #14866: Show correct circuit when more than one exists for a given domain
---
src/chrome/content/tor-circuit-display.js | 56 ++++++++++++++++++-----------
1 file changed, 36 insertions(+), 20 deletions(-)
diff --git a/src/chrome/content/tor-circuit-display.js b/src/chrome/content/tor-circuit-display.js
index d0977f1..35a7dfc 100644
--- a/src/chrome/content/tor-circuit-display.js
+++ b/src/chrome/content/tor-circuit-display.js
@@ -36,12 +36,13 @@ let { controller } = Cu.import("resource://torbutton/modules/tor-control-port.js
let logger = Cc["@torproject.org/torbutton-logger;1"]
.getService(Components.interfaces.nsISupports).wrappedJSObject;
-// ## Circuit/stream domain and node monitoring
+// ## Circuit/stream credentials and node monitoring
-// A mutable map that stores the current nodes for each domain.
-let domainToNodeDataMap = {},
+// A mutable map that stores the current nodes for each
+// SOCKS username/password pair.
+let credentialsToNodeDataMap = {},
// A mutable map that reports `true` for IDs of "mature" circuits
- // (those that have conveyed a stream)..
+ // (those that have conveyed a stream).
knownCircuitIDs = {},
// A map from bridge fingerprint to its IP address.
bridgeIDtoIPmap = new Map();
@@ -130,7 +131,7 @@ let getCircuitStatusByID = function* (aController, circuitID) {
// Watches for STREAM SENTCONNECT events. When a SENTCONNECT event occurs, then
// we assume isolation settings (SOCKS username+password) are now fixed for the
// corresponding circuit. Whenever the first stream on a new circuit is seen,
-// looks up u+p and records the node data in the domainToNodeDataMap.
+// looks up u+p and records the node data in the credentialsToNodeDataMap.
let collectIsolationData = function (aController) {
aController.watchEvent(
"STREAM",
@@ -140,10 +141,11 @@ let collectIsolationData = function (aController) {
logger.eclog(3, "streamEvent.CircuitID: " + streamEvent.CircuitID);
knownCircuitIDs[streamEvent.CircuitID] = true;
let circuitStatus = yield getCircuitStatusByID(aController, streamEvent.CircuitID),
- domain = trimQuotes(circuitStatus.SOCKS_USERNAME);
- if (domain) {
+ credentials = trimQuotes(circuitStatus.SOCKS_USERNAME) + ":" +
+ trimQuotes(circuitStatus.SOCKS_PASSWORD);
+ if (credentials) {
let nodeData = yield nodeDataForCircuit(aController, circuitStatus);
- domainToNodeDataMap[domain] = nodeData;
+ credentialsToNodeDataMap[credentials] = nodeData;
}
}
}).then(null, Cu.reportError));
@@ -204,24 +206,38 @@ let nodeLines = function (nodeData) {
return result;
};
+// __getSOCKSCredentials(browser)__.
+// Reads the SOCKS credentials for the corresponding browser object.
+let getSOCKSCredentialsForBrowser = function (browser) {
+ if (browser === null) return null;
+ let docShell = browser.docShell;
+ if (docShell === null) return null;
+ let channel = docShell.currentDocumentChannel;
+ if (channel === null) return null;
+ try {
+ channel.QueryInterface(Ci.nsIProxiedChannel);
+ } catch (e) {
+ return null;
+ }
+ let proxyInfo = channel.proxyInfo;
+ if (proxyInfo === null) return null;
+ return proxyInfo.username + ":" + proxyInfo.password;
+};
+
// __updateCircuitDisplay()__.
// Updates the Tor circuit display SVG, showing the current domain
// and the relay nodes for that domain.
let updateCircuitDisplay = function () {
let selectedBrowser = gBrowser.selectedBrowser;
if (selectedBrowser) {
- let URI = selectedBrowser.currentURI,
- domain = null,
- nodeData = null;
- // Try to get a domain for this URI. Otherwise it remains null.
- try {
- domain = URI.host;
- } catch (e) { }
- if (domain) {
- // Check if we have anything to show for this domain.
- nodeData = domainToNodeDataMap[domain];
+ let credentials = getSOCKSCredentialsForBrowser(selectedBrowser),
+ nodeData = null;
+ if (credentials) {
+ // Check if we have anything to show for these credentials.
+ nodeData = credentialsToNodeDataMap[credentials];
if (nodeData) {
// Update the displayed domain.
+ let domain = credentials.split(":")[0];
document.querySelector("svg#tor-circuit text#domain").innerHTML = "(" + domain + "):";
// Update the displayed information for the relay nodes.
let diagramNodes = document.querySelectorAll("svg#tor-circuit text.node-text"),
@@ -232,8 +248,8 @@ let updateCircuitDisplay = function () {
}
}
}
- // Only show the Tor circuit if we have a domain and node data.
- showCircuitDisplay(domain && nodeData);
+ // Only show the Tor circuit if we have credentials and node data.
+ showCircuitDisplay(credentials && nodeData);
}
};
1
0

[torbutton/master] Bug 10280: Strings and pref for preventing plugin initialization.
by mikeperry@torproject.org 13 Feb '15
by mikeperry@torproject.org 13 Feb '15
13 Feb '15
commit 433fa8b779a4e7b9e5ec3cf09cb49979d5fcc038
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Thu Feb 12 16:22:47 2015 -0800
Bug 10280: Strings and pref for preventing plugin initialization.
---
src/chrome/content/torbutton.js | 2 ++
src/chrome/locale/en/brand.dtd | 6 ++++++
2 files changed, 8 insertions(+)
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index 8ae1d5d..69891c8 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -2062,6 +2062,8 @@ function torbutton_tor_check_ok()
// toggles plugins: true for disabled, false for enabled
function torbutton_toggle_plugins(disable_plugins) {
if (m_tb_tbb) {
+ m_tb_prefs.setBoolPref("plugin.disable", disable_plugins);
+
var PH=Cc["@mozilla.org/plugin/host;1"].getService(Ci.nsIPluginHost);
var P=PH.getPluginTags({});
for(var i=0; i<P.length; i++) {
diff --git a/src/chrome/locale/en/brand.dtd b/src/chrome/locale/en/brand.dtd
index 59f665e..cc65346 100644
--- a/src/chrome/locale/en/brand.dtd
+++ b/src/chrome/locale/en/brand.dtd
@@ -6,3 +6,9 @@
<!ENTITY brandFullName "Tor Browser">
<!ENTITY vendorShortName "Tor Project">
<!ENTITY trademarkInfo.part1 "Firefox and the Firefox logos are trademarks of the Mozilla Foundation.">
+
+<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
+<!ENTITY plugins.installed.find "Click to load installed system plugins">
+<!ENTITY plugins.installed.enable "Enable plugins">
+<!ENTITY plugins.installed.disable "Disable plugins">
+<!ENTITY plugins.installed.disable.tip "Click to prevent loading system plugins">
1
0

[torbutton/master] Bug 11175: Remove "About Torbutton" from onion menu.
by mikeperry@torproject.org 13 Feb '15
by mikeperry@torproject.org 13 Feb '15
13 Feb '15
commit 98c9a821aaa392519f78946ba0577d5565c430cb
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Mon Feb 9 14:56:07 2015 -0800
Bug 11175: Remove "About Torbutton" from onion menu.
Patch originally by Saint, but in this version we keep the actual dialog in
case we want to move it somewhere else later.
---
src/chrome/content/popup.xul | 5 -----
1 file changed, 5 deletions(-)
diff --git a/src/chrome/content/popup.xul b/src/chrome/content/popup.xul
index e61dcfe..f4ad7d2 100644
--- a/src/chrome/content/popup.xul
+++ b/src/chrome/content/popup.xul
@@ -28,11 +28,6 @@
accesskey="&torbutton.context_menu.preferences.key;"
insertafter="context-stop"
oncommand="torbutton_open_prefs_dialog()"/>
- <menuitem id="torbutton-about"
- label="&torbutton.context_menu.about;"
- accesskey="&torbutton.context_menu.about.key;"
- insertafter="context-stop"
- oncommand="window.open('chrome://torbutton/content/about.xul', '', 'chrome,centerscreen');"/>
<menuitem id="torbutton-networksettings"
label="&torbutton.context_menu.networksettings;"
accesskey="&torbutton.context_menu.networksettings.key;"
1
0

13 Feb '15
commit 2d94a9de3e8b7c3e611bfe18db1f2316a8b88a70
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Wed Feb 4 11:01:37 2015 -0500
Bug 13900: Remove SafeCache code.
The SafeCache functionality that we need has been reimplemented
in C++ inside Tor Browser.
---
src/chrome/content/stanford-safecache.js | 448 ------------------------------
src/chrome/content/torbutton.js | 7 -
src/chrome/content/torbutton.xul | 3 -
src/defaults/preferences/preferences.js | 3 -
4 files changed, 461 deletions(-)
diff --git a/src/chrome/content/stanford-safecache.js b/src/chrome/content/stanford-safecache.js
deleted file mode 100644
index 0ef52ad..0000000
--- a/src/chrome/content/stanford-safecache.js
+++ /dev/null
@@ -1,448 +0,0 @@
-// Bug 1506 P3: This file provides important cache isolation properties,
-// but it is not very useful without a patched Firefox to go with it.
-// It could probably also use some refactoring into an XPCOM component.
-// It is currently registered from torbutton.js's "main window" observers,
-// which is not the right place.
-
-/*
-
-Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- * Neither the name of Stanford University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-*/
-// Dual-keyed cache/cookie same-origin policy
-// Ensures that cache and cookies set in HTTP headers cannot be used for
-// non-cooperative or semi-cooperative tracking.
-//
-// Author: Edward Pastuszenski
-//
-// Based on Stanford SafeCache
-// Author: Collin Jackson
-// Other contributors: Andrew Bortz, John Mitchell, Dan Boneh
-//
-
-//////////////////////////////////////////////////////////////////////////////
-// Constants
-
-const kSSC_ENABLED_PREF = "extensions.torbutton.safecache";
-const kSSC_SC_ENABLED_PREF = "extensions.torbutton.dual_key_cookies";
-const kSSC_TORBUTTON_PREF = "extensions.torbutton.tor_enabled";
-const kSSC_COOKIE_JS_PREF = "extensions.torbutton.cookie_js_allow";
-
-////////////////////////////////////////////////////////////////////////////
-// Debug stuff
-
-/**
- * Dump information to the console?
- */
-var SSC_debug = true;
-
-/**
- * Sends data to the console if we're in debug mode
- * @param msg The string containing the message to display
- */
-function SSC_dump(msg) {
- if (SSC_debug)
- torbutton_log(3, "SSC: " + msg);
-}
-
-////////////////////////////////////////////////////////////////////////////
-// "Major" objects/classes
-
-/**
- * SafeCache HTTP Request Listener
- * Watches for the authentication requests and presents password dialog
- */
-
-function SSC_RequestListener(controller) {
- this.controller = controller;
- this.thirdPartyUtil = Cc["@mozilla.org/thirdpartyutil;1"].
- getService(Ci.mozIThirdPartyUtil);
- this.cookie_permissions = Cc["@mozilla.org/cookie/permission;1"].
- getService(Ci.nsICookiePermission);
-}
-
-SSC_RequestListener.prototype =
-{
- controller: null, // The SSC_Controller that created this
-
- observe: function(subject, topic, data) {
- try {
- if(this.controller.getEnabled() == 2) return;
- if(this.controller.getEnabled() == 1
- && !this.controller.getTorButton()) return;
- if (topic == 'http-on-modify-request') {
- subject.QueryInterface(Components.interfaces.nsIHttpChannel);
- subject.QueryInterface(Components.interfaces.nsIHttpChannelInternal);
- subject.QueryInterface(Components.interfaces.nsICachingChannel);
- subject.QueryInterface(Components.interfaces.nsIChannel);
- this.onModifyRequest(subject);
- } else if (topic == 'http-on-examine-response') {
- subject.QueryInterface(Components.interfaces.nsIHttpChannel);
- subject.QueryInterface(Components.interfaces.nsIHttpChannelInternal);
- subject.QueryInterface(Components.interfaces.nsICachingChannel);
- subject.QueryInterface(Components.interfaces.nsIChannel);
- this.onExamineResponse(subject);
- }
- } catch(e) {try {torbutton_log(4, "SSC: "+e);} catch(ex) {}}
- },
-
- bypassCache: function(channel) {
- channel.loadFlags |= channel.LOAD_BYPASS_CACHE;
- // INHIBIT_PERSISTENT_CACHING instead?
- channel.cacheKey = this.newCacheKey(0);
- SSC_dump("Bypassed cache for " + channel.URI.spec);
- },
-
- setCacheKey: function(channel, str) {
- try {
- channel.cacheDomain = str;
- SSC_dump("Set cacheDomain to "+str+" for "+channel.URI.spec);
- } catch(e) {
- var oldData = this.readCacheKey(channel);
- var newKey = this.newCacheKey(this.getHash(str) + oldData);
- channel.cacheKey = newKey;
- SSC_dump("Set cache key to hash(" + str + ") = " +
- newKey.data + " for " + channel.URI.spec);
- }
- },
-
- onModifyRequest: function(channel) {
- var parent_host = null;
- var parent_spec = null;
- if (channel.notificationCallbacks ||
- channel.loadGroup && channel.loadGroup.notificationCallbacks) {
- var callbacks = null;
- if (channel.notificationCallbacks) {
- callbacks = channel.notificationCallbacks;
- } else {
- callbacks = channel.loadGroup.notificationCallbacks;
- }
- try {
- var wind = callbacks.QueryInterface(
- Components.interfaces.nsIInterfaceRequestor).getInterface(
- Components.interfaces.nsIDOMWindow);
- parent_host = wind.window.top.location.hostname;
- parent_spec = wind.window.top.location.href;
- } catch(e) {
- }
- SSC_dump("Parent "+parent_host+" for "+ channel.URI.spec);
- }
-
- if (channel.documentURI && channel.documentURI == channel.URI) {
- parent_host = null; // first party interaction
- parent_spec = null;
- } else if(!parent_host) {
- // Questionable first party interaction..
- try {
- var anuri = null;
- try {
- anuri = this.thirdPartyUtil.getFirstPartyURIFromChannel(channel, false);
- } catch (e) {
- torbutton_safelog(2, "FirstParty API failed to get parent: "+e+" ", channel.URI.spec);
- // We are not using the TBB based on ESR 24. Falling back to the old
- // method.
- anuri = this.cookie_permissions.getOriginatingURI(channel);
- }
- parent_host = anuri.host;
- parent_spec = anuri.spec;
- } catch(e) {
- // XXX: This can still fail for OCSP and other windowless requests..
- torbutton_safelog(3, "Cookie API failed to get parent: "+e+" ",channel.URI.spec);
- if (!channel.referrer) {
- torbutton_safelog(3, "SSC: No cache isolation parent for ", channel.URI.spec);
- } else {
- parent_host = channel.referrer.host;
- parent_spec = channel.referrer.spec;
- }
- }
- }
-
- // Same-origin policy
- var referrer;
- if (parent_host && parent_host != channel.URI.host) {
- SSC_dump("Segmenting " + channel.URI.spec +
- " content loaded by " + parent_host);
- this.setCacheKey(channel, parent_host);
- referrer = parent_host;
- try {
- // Disable 3rd party http auth, but exempt the browser (for favicon loads)
- // FIXME: Hrmm, this is just going to disable auth for 3rd party domains.
- // It would be better if we could isolate the auth, but still
- // allow it to be transmitted.. But I guess, who still uses http auth anyways?
- if (channel.getRequestHeader("Authorization") !== null) {
- if (parent_spec == "chrome://browser/content/browser.xul") {
- torbutton_log(3, "Allowing auth for browser load of "+channel.URI.spec);
- } else {
- torbutton_safelog(4, "Removing 3rd party HTTP auth for url ",
- channel.URI.spec+", parent: "+parent_spec);
- channel.setRequestHeader("Authorization", null, false);
- channel.setRequestHeader("Pragma", null, false);
- channel.setRequestHeader("Cache-Control", null, false);
- }
- }
- } catch (e) {}
- } else {
- referrer = channel.URI.host;
- if(!this.readCacheKey(channel)) {
- this.setCacheKey(channel, channel.URI.host);
- } else {
- SSC_dump("Existing cache key detected; leaving it unchanged.");
- }
- }
-
- if (this.controller.getBlockThirdPartyCache()) {
- if(parent_host && parent_host != channel.URI.host) {
- //SSC_dump("Third party cache blocked for " + channel.URI.spec +
- //" content loaded by " + parent_host);
- this.bypassCache(channel);
- }
- }
-
- var cookie = null;
- if (this.controller.getSafeCookieEnabled()) {
- try{
- cookie = channel.getRequestHeader("Cookie");
- //SSC_dump("Cookie: " + cookie);
- } catch(e) {cookie = null;}
- }
-
- if(cookie) {
- //Strip the secondary key from every referrer-matched cookie
- var newHeader = "";
- var i = 0;
- var lastStart = 0;
- //State 0: no information on next cookie
- //State 1: cookie will be sent.
- //State 2: cookie will not be sent.
- var state = 0;
- while (i < cookie.length) {
- //Dual-keyed cookie
- if(state == 0 && cookie.charAt(i) == '|'){
- //If referrers match, strip key and send cookie
- var cookieReferrer = cookie.toString().substr(lastStart, i - lastStart);
- if (referrer == cookieReferrer){
- lastStart = i+1;
- state = 1;
- } else {
- state = 2;
- }
- }
- //Single-keyed cookie that was set via scripting.
- if (state == 0 && cookie.charAt(i) == '='){
- if(this.controller.getCookieJS()) state = 1;
- else {
- if (referrer == channel.getRequestHeader("Host")) state = 1;
- else state = 2;
- }
- }
- //End of a cookie
- if (cookie.charAt(i) == ';') {
- var thisCookie = cookie.toString().substr(lastStart, i - lastStart + 2);
- if (state == 1){
- newHeader += thisCookie;
- }
- if (state == 2){
- SSC_dump("Declining to send " + thisCookie +
- " for request by embedded domain " + channel.URI.host +
- + " " + channel.getRequestHeader("Host") +
- " on embedding page " + referrer);
- }
- lastStart = i+2;
- state = 0;
- }
- //End of the string
- if (i == cookie.length - 1){
- thisCookie = cookie.toString().substr(lastStart, i - lastStart + 1);
- if (state == 1){
- newHeader += thisCookie;
- }
- if (state == 2){
- SSC_dump("Declining to send " + thisCookie +
- " for request by embedded domain " + channel.URI.host +
- + " " + channel.getRequestHeader("Host") +
- " on embedding page " + referrer);
- }
- lastStart = i+1;
- }
- i++;
- }
- channel.setRequestHeader("Cookie", newHeader, false);
- }
-
- },
-
- onExamineResponse: function(channel) {
- var setCookie;
- try{
- setCookie = channel.getResponseHeader("Set-Cookie");
- } catch(e) {setCookie = null;}
-
- if(setCookie) {
- var parent = null;
- // XXX: need to use loadGroup here if null..
- if (channel.notificationCallbacks) {
- var wind = channel.notificationCallbacks.QueryInterface(
- Components.interfaces.nsIInterfaceRequestor).getInterface(
- Components.interfaces.nsIDOMWindow);
- parent = wind.window.top.location;
- }
-
- if (channel.documentURI && channel.documentURI == channel.URI) {
- parent = null; // first party interaction
- }
-
- var referrer;
- // Same-origin policy
- if (parent && parent.hostname != channel.URI.host) {
- //SSC_dump("Segmenting " + channel.URI.host +
- //" content loaded by " + parent.host);
- referrer = parent.hostname;
- } else {
- referrer = channel.URI.host;
- }
- //Dual-key each cookie set in the header
- var newHeader = "";
- var i = 0;
- var lastStart = 0;
- //Some messy code that prevents multiple embedding-domain keys
- //from being concatenated to cookie names.
- var passedname = false;
- var namebar = false;
- while (i < setCookie.length) {
- if (setCookie.charAt(i) == '=') passedname = true;
- else if (setCookie.charAt(i) == '|' && passedname == false)
- namebar = true;
- if (i == setCookie.length - 1 || setCookie.charAt(i) == '\n'){
- if(!namebar){
- newHeader += referrer + "|" +
- setCookie.toString().substr(lastStart, i - lastStart + 1);
- }
- lastStart = i+1;
- passedname = false;
- namebar = false;
- }
- i++;
- }
- //SSC_dump("MODIFIED Set-Cookie: " + newHeader);
- channel.setResponseHeader("Set-Cookie", newHeader, false);
- }
- },
-
- // Read the integer data contained in a cache key
- readCacheKey: function(channel) {
- try {
- return channel.cacheDomain;
- } catch(e) {
- channel.cacheKey.QueryInterface(Components.interfaces.nsISupportsPRUint32);
- return channel.cacheKey.data;
- }
- },
-
- // Construct a new cache key with some integer data
- newCacheKey: function(data) {
- var cacheKey =
- Components.classes["@mozilla.org/supports-PRUint32;1"]
- .createInstance(Components.interfaces.nsISupportsPRUint32);
- cacheKey.data = data;
- return cacheKey;
- },
-
- strMD5: function(str) {
- var converter =
- Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].
- createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
-
- // nsIURI.host is UTF-8
- converter.charset = "UTF-8";
- // result.value will contain the array length
- var result = {};
- // data is an array of bytes
- var data = converter.convertToByteArray(str, result);
- var ch = Components.classes["@mozilla.org/security/hash;1"]
- .createInstance(Components.interfaces.nsICryptoHash);
- ch.init(ch.MD5);
- ch.update(data, data.length);
- return ch.finish(false);
- },
-
- // Get an integer hash of a string
- getHash: function(str) {
- var hash = this.strMD5(str);
- var intHash = 0;
- for(var i = 0; i < hash.length && i < 8; i++)
- intHash += hash.charCodeAt(i) << (i << 3);
- return intHash;
- },
-}
-
-/**
- * Master control object. Adds and removes the RequestListener
- */
-function SSC_Controller() {
- this.prefs = Components.classes["@mozilla.org/preferences-service;1"]
- .getService(Components.interfaces.nsIPrefService);
- this.addListener(new SSC_RequestListener(this));
-}
-
-SSC_Controller.prototype = {
-
- getEnabled: function() {
- return (this.prefs.getIntPref(kSSC_ENABLED_PREF));
- },
-
- getSafeCookieEnabled: function() {
- return (this.prefs.getBoolPref(kSSC_SC_ENABLED_PREF));
- },
-
- getBlockThirdPartyCache: function() {
- // Meh, no pref for now. Always allow.
- return false;
- },
-
- getTorButton: function() {
- return (this.prefs.getBoolPref(kSSC_TORBUTTON_PREF));
- },
-
- getCookieJS: function() {
- return (this.prefs.getBoolPref(kSSC_COOKIE_JS_PREF));
- },
-
- addListener: function(listener) {
- this.listener = listener;
- var observerService =
- Components.classes["@mozilla.org/observer-service;1"]
- .getService(Components.interfaces.nsIObserverService);
- observerService.addObserver(listener, "http-on-modify-request", false);
- // XXX: We need an observer to add this listener when the pref gets set
- if (this.getSafeCookieEnabled()) {
- observerService.addObserver(listener, "http-on-examine-response", false);
- }
- },
-
- removeListener: function() {
- var observerService =
- Components.classes["@mozilla.org/observer-service;1"]
- .getService(Components.interfaces.nsIObserverService);
- observerService.removeObserver(this.listener, "http-on-modify-request");
- if (this.getSafeCookieEnabled()) {
- observerService.removeObserver(this.listener, "http-on-examine-response");
- }
- },
-}
-
-////////////////////////////////////////////////////////////////////////////
-// Global stuff
-// "What script would be complete without a couple of globals?" --Fritz
-
-var SSC_controller;
-
-function SSC_startup() {
- if(!SSC_controller) SSC_controller = new SSC_Controller();
- SSC_dump("Loaded controller");
-}
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index 2fa7189..01591cc 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -2865,10 +2865,6 @@ function torbutton_do_main_window_startup()
//torbutton_wrap_search_service();
torbutton_unique_pref_observer.register();
-
- // Bug 1506: This is probably the most important observer in this function
- // XXX: We should fold this into our code/move it to its own component
- SSC_startup();
}
// Bug 1506 P4: Most of this function is now useless, save
@@ -3134,9 +3130,6 @@ function torbutton_close_window(event) {
progress.removeProgressListener(torbutton_weblistener);
torbutton_unique_pref_observer.unregister();
- // XXX: We should fold this into our code..
- SSC_controller.removeListener();
-
if(m_tb_is_main_window) { // main window not reset above
// This happens on Mac OS because they allow firefox
// to still persist without a navigator window
diff --git a/src/chrome/content/torbutton.xul b/src/chrome/content/torbutton.xul
index 00dc6f0..5da3439 100644
--- a/src/chrome/content/torbutton.xul
+++ b/src/chrome/content/torbutton.xul
@@ -7,9 +7,6 @@
<overlay id="torbutton-overlay"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
- <!-- SAFECACHE -->
- <script src="chrome://torbutton/content/stanford-safecache.js" />
-
<script type="application/x-javascript" src="chrome://torbutton/content/torbutton_util.js" />
<script type="application/x-javascript" src="chrome://torbutton/content/tor-circuit-display.js" />
<script type="application/x-javascript" src="chrome://torbutton/content/torbutton.js" />
diff --git a/src/defaults/preferences/preferences.js b/src/defaults/preferences/preferences.js
index c6fb8e4..6dde983 100644
--- a/src/defaults/preferences/preferences.js
+++ b/src/defaults/preferences/preferences.js
@@ -219,9 +219,6 @@ pref("extensions.torbutton.buildID_override","0");
pref("extensions.torbutton.useragent_vendor", "");
pref("extensions.torbutton.useragent_vendorSub","");
-pref("extensions.torbutton.safecache",1); // 0=always, 1=during tor, 2=never
-pref("extensions.torbutton.dual_key_cookies",false);
-pref("extensions.torbutton.cookie_js_allow", true);
pref("extensions.torbutton.prompt_torbrowser", true);
pref("extensions.torbutton.confirm_plugins", true);
1
0

[torbutton/master] Bug 14632: Disable Cookie Manager until we get it working.
by mikeperry@torproject.org 13 Feb '15
by mikeperry@torproject.org 13 Feb '15
13 Feb '15
commit 3b8c21044edea186da1e7039f4c4151fde3a0cd8
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Mon Feb 9 15:04:48 2015 -0800
Bug 14632: Disable Cookie Manager until we get it working.
Also update the string so it is more clear that it is a secondary
dialog, once we do get it working again.
---
src/chrome/content/popup.xul | 3 ++-
src/chrome/content/torbutton.js | 4 ++++
src/chrome/locale/en/torbutton.dtd | 2 +-
3 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/src/chrome/content/popup.xul b/src/chrome/content/popup.xul
index f4ad7d2..9a77c54 100644
--- a/src/chrome/content/popup.xul
+++ b/src/chrome/content/popup.xul
@@ -21,7 +21,8 @@
<menuitem id="torbutton-cookie-protector"
label="&torbutton.context_menu.cookieProtections;"
accesskey="&torbutton.context_menu.cookieProtections.key;"
- insertafter="context-stop"
+ insertafter="context-stop"
+ hidden="true"
oncommand="torbutton_open_cookie_dialog()"/>
<menuitem id="torbutton-preferences"
label="&torbutton.context_menu.preferences;"
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index 01591cc..bdb3b2d 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -2061,6 +2061,10 @@ function torbutton_update_disk_prefs() {
m_tb_prefs.setIntPref("browser.download.manager.retention", 2);
}
+ // XXX: Bug 14632: The cookie dialog is useless in private browsing mode in FF31ESR
+ // See https://trac.torproject.org/projects/tor/ticket/10353 for more info.
+ document.getElementById("torbutton-cookie-protector").hidden = mode;
+
// Force prefs to be synced to disk
var prefService = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefService);
diff --git a/src/chrome/locale/en/torbutton.dtd b/src/chrome/locale/en/torbutton.dtd
index 7a4284f..ea37d19 100644
--- a/src/chrome/locale/en/torbutton.dtd
+++ b/src/chrome/locale/en/torbutton.dtd
@@ -34,7 +34,7 @@
<!ENTITY torbutton.context_menu.networksettings.key "S">
<!ENTITY torbutton.context_menu.downloadUpdate "Check for Tor Browser Update…">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
-<!ENTITY torbutton.context_menu.cookieProtections "Cookie Protections">
+<!ENTITY torbutton.context_menu.cookieProtections "Cookie Protections…">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.context_menu.copyTor "Copy Tor URL">
<!ENTITY torbutton.context_menu.copyTor.key "p">
1
0

[torbutton/master] Bug 14630: Hide Torbutton's proxy settings tab.
by mikeperry@torproject.org 13 Feb '15
by mikeperry@torproject.org 13 Feb '15
13 Feb '15
commit bf942275f1b46b3a2ab52b68963199dd976b7c98
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Mon Feb 9 15:59:47 2015 -0800
Bug 14630: Hide Torbutton's proxy settings tab.
We only hide this for now in case we want to bring it back as a secondary
tab after everyone cries about it. It also simplifies the code changes to
simply hide it.
Also clean up the associated Torbutton menu and strings for clarity.
---
src/chrome/content/popup.xul | 1 +
src/chrome/content/preferences.xul | 10 +++++-----
src/chrome/locale/en/torbutton.dtd | 4 ++--
3 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/src/chrome/content/popup.xul b/src/chrome/content/popup.xul
index 9a77c54..4117632 100644
--- a/src/chrome/content/popup.xul
+++ b/src/chrome/content/popup.xul
@@ -18,6 +18,7 @@
accesskey="&torbutton.context_menu.new_identity_key;"
insertafter="context-stop"
oncommand="torbutton_new_identity()"/>
+ <menuseparator/>
<menuitem id="torbutton-cookie-protector"
label="&torbutton.context_menu.cookieProtections;"
accesskey="&torbutton.context_menu.cookieProtections.key;"
diff --git a/src/chrome/content/preferences.xul b/src/chrome/content/preferences.xul
index 57b013a..f4fcb4d 100644
--- a/src/chrome/content/preferences.xul
+++ b/src/chrome/content/preferences.xul
@@ -6,7 +6,7 @@
<dialog id="torbutton-prefs"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:html="http://www.w3.org/1999/xhtml"
- title="&torbutton.prefs.title;"
+ title="&torbutton.prefs.privacy_security_settings;"
buttons="accept,cancel,extra1"
buttonlabelextra1="&torbutton.prefs.restore_defaults;"
ondialogextra1="torbutton_prefs_reset_defaults();"
@@ -18,11 +18,11 @@
<script type="application/x-javascript" src="preferences.js"/>
<tabbox>
<tabs>
- <tab label="&torbutton.prefs.tor_settings;"/>
- <tab label="&torbutton.prefs.privacy_security_settings;"/>
+ <tab hidden="true" label="&torbutton.prefs.privacy_security_settings;"/>
+ <tab hidden="true" label="&torbutton.prefs.tor_settings;"/>
</tabs>
<tabpanels>
- <tabpanel>
+ <tabpanel hidden="true">
<vbox>
<radiogroup id="torbutton_settingsMethod">
<radio value="recommended" id="torbutton_useRecommendedSettings"
@@ -138,7 +138,7 @@
</hbox>
</vbox>
</tabpanel>
- <tabpanel>
+ <tabpanel hidden="false">
<vbox>
<groupbox>
<caption label="&torbutton.prefs.priv_caption;"/>
diff --git a/src/chrome/locale/en/torbutton.dtd b/src/chrome/locale/en/torbutton.dtd
index ea37d19..1b90d63 100644
--- a/src/chrome/locale/en/torbutton.dtd
+++ b/src/chrome/locale/en/torbutton.dtd
@@ -26,11 +26,11 @@
<!ENTITY torbutton.context_menu.new_identity_key "I">
<!ENTITY torbutton.context_menu.toggle "Toggle Tor status">
<!ENTITY torbutton.context_menu.toggle.key "T">
-<!ENTITY torbutton.context_menu.preferences "Preferences...">
+<!ENTITY torbutton.context_menu.preferences "Privacy and Security Settings…">
<!ENTITY torbutton.context_menu.preferences.key "P">
<!ENTITY torbutton.context_menu.about "About Torbutton...">
<!ENTITY torbutton.context_menu.about.key "A">
-<!ENTITY torbutton.context_menu.networksettings "Open Network Settings…">
+<!ENTITY torbutton.context_menu.networksettings "Tor Network Settings…">
<!ENTITY torbutton.context_menu.networksettings.key "S">
<!ENTITY torbutton.context_menu.downloadUpdate "Check for Tor Browser Update…">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
1
0

[torbutton/master] Bug 8400: Prompt for restart if disk records are enabled/disabled.
by mikeperry@torproject.org 13 Feb '15
by mikeperry@torproject.org 13 Feb '15
13 Feb '15
commit 1e5da0646b288f3621588af08aa81efca09063fa
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Mon Feb 9 18:39:53 2015 -0800
Bug 8400: Prompt for restart if disk records are enabled/disabled.
The private browsing pref doesn't actually take effect until restart..
---
src/chrome/content/preferences.js | 43 ++++++++++++++++++++++++++++++++++++
src/chrome/content/preferences.xul | 3 ++-
src/chrome/content/torbutton.js | 1 +
3 files changed, 46 insertions(+), 1 deletion(-)
diff --git a/src/chrome/content/preferences.js b/src/chrome/content/preferences.js
index 1151176..eaaa059 100644
--- a/src/chrome/content/preferences.js
+++ b/src/chrome/content/preferences.js
@@ -6,6 +6,7 @@
// torbutton_prefs_save() -- on dialog save
var tor_enabled = false;
+const Cc = Components.classes, Ci = Components.interfaces;
function torbutton_prefs_set_field_attributes(doc)
{
@@ -473,3 +474,45 @@ function torbutton_toggle_slider(doc, pos) {
sec_custom.checked = false;
}
}
+
+function torbutton_prefs_check_disk() {
+ let o_torprefs = torbutton_get_prefbranch('extensions.torbutton.');
+ let old_mode = o_torprefs.getBoolPref('block_disk');
+ let mode = document.getElementById('torbutton_blockDisk').checked;
+
+ if (mode === old_mode) {
+ // Either revert, or uncheck.
+ return;
+ }
+
+ let sb = Cc["@mozilla.org/intl/stringbundle;1"]
+ .getService(Ci.nsIStringBundleService);
+ let bundle = sb.createBundle("chrome://browser/locale/preferences/preferences.properties");
+ let brandName = sb.createBundle("chrome://branding/locale/brand.properties").GetStringFromName("brandShortName");
+
+ let msg = bundle.formatStringFromName(mode ?
+ "featureEnableRequiresRestart" : "featureDisableRequiresRestart",
+ [brandName], 1);
+ let title = bundle.formatStringFromName("shouldRestartTitle", [brandName], 1);
+ let prompts = Cc["@mozilla.org/embedcomp/prompt-service;1"].getService(Ci.nsIPromptService);
+ let shouldProceed = prompts.confirm(window, title, msg)
+ if (shouldProceed) {
+ let cancelQuit = Cc["@mozilla.org/supports-PRBool;1"]
+ .createInstance(Ci.nsISupportsPRBool);
+ let obsSvc = Cc["@mozilla.org/observer-service;1"]
+ .getService(Ci.nsIObserverService);
+ obsSvc.notifyObservers(cancelQuit, "quit-application-requested",
+ "restart");
+ shouldProceed = !cancelQuit.data;
+
+ if (shouldProceed) {
+ document.documentElement.acceptDialog();
+ let appStartup = Cc["@mozilla.org/toolkit/app-startup;1"]
+ .getService(Ci.nsIAppStartup);
+ appStartup.quit(Ci.nsIAppStartup.eAttemptQuit | Ci.nsIAppStartup.eRestart);
+ return;
+ }
+ }
+
+ document.getElementById('torbutton_blockDisk').checked = old_mode;
+}
diff --git a/src/chrome/content/preferences.xul b/src/chrome/content/preferences.xul
index f4fcb4d..0a90f0f 100644
--- a/src/chrome/content/preferences.xul
+++ b/src/chrome/content/preferences.xul
@@ -143,7 +143,8 @@
<groupbox>
<caption label="&torbutton.prefs.priv_caption;"/>
<checkbox id="torbutton_blockDisk"
- label="&torbutton.prefs.block_disk;"/>
+ label="&torbutton.prefs.block_disk;"
+ oncommand="torbutton_prefs_check_disk();"/>
<checkbox id="torbutton_blockPlugins"
label="&torbutton.prefs.block_plugins;"/>
<checkbox id="torbutton_restrictThirdParty"
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index bdb3b2d..4fa3d63 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -2042,6 +2042,7 @@ function torbutton_update_disk_prefs() {
m_tb_prefs.setBoolPref("browser.privatebrowsing.autostart", mode);
m_tb_prefs.setBoolPref("browser.cache.disk.enable", !mode);
+ m_tb_prefs.setBoolPref("places.history.enabled", !mode);
m_tb_prefs.setBoolPref("security.nocertdb", mode);
1
0

[tor-browser/tor-browser-31.4.0esr-4.5-1] Bug 13900: Remove 3rd party HTTP auth tokens.
by mikeperry@torproject.org 13 Feb '15
by mikeperry@torproject.org 13 Feb '15
13 Feb '15
commit b6be541aaa22422ecf9e70680282aa9c7dc05f06
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Wed Feb 4 10:38:44 2015 -0500
Bug 13900: Remove 3rd party HTTP auth tokens.
Prevent user tracking via HTTP Basic Authentication by
removing Authorization headers from third party requests.
This is a port of a piece of the Stanford SafeCache code that
previously was included in Torbutton.
---
content/base/src/ThirdPartyUtil.cpp | 21 ++++++---
netwerk/base/public/mozIThirdPartyUtil.idl | 22 ++++++++-
netwerk/protocol/http/nsHttpChannel.cpp | 70 ++++++++++++++++++++++++++++
netwerk/protocol/http/nsHttpChannel.h | 1 +
4 files changed, 107 insertions(+), 7 deletions(-)
diff --git a/content/base/src/ThirdPartyUtil.cpp b/content/base/src/ThirdPartyUtil.cpp
index e2287eb..695392f 100644
--- a/content/base/src/ThirdPartyUtil.cpp
+++ b/content/base/src/ThirdPartyUtil.cpp
@@ -412,20 +412,28 @@ ThirdPartyUtil::GetBaseDomain(nsIURI* aHostURI,
return NS_OK;
}
-// Returns true if First Party Isolation is currently active for the given nsIChannel.
-// Depends on Preference setting and possibly the state of Private Browsing mode.
-bool ThirdPartyUtil::IsFirstPartyIsolationActive(nsIChannel *aChannel, nsIDocument *aDoc)
+// Determine if First Party Isolation is currently active for the given
+// nsIChannel or nsIDocument. Depends on preference setting and
+// possibly the state of Private Browsing mode.
+NS_IMETHODIMP
+ThirdPartyUtil::IsFirstPartyIsolationActive(nsIChannel *aChannel,
+ nsIDocument *aDoc,
+ bool* aResult)
{
+ NS_ASSERTION(aResult, "null outparam pointer");
+
int32_t isolationState = mozilla::Preferences::GetInt("privacy.thirdparty.isolate");
if (isolationState == 1) {
if (!aChannel && aDoc) {
// No channel passed directly. Can we get a channel from aDoc?
aChannel = aDoc->GetChannel();
}
- return aChannel && NS_UsePrivateBrowsing(aChannel);
+ *aResult = aChannel && NS_UsePrivateBrowsing(aChannel);
} else { // (isolationState == 0) || (isolationState == 2)
- return (isolationState == 2);
+ *aResult = (isolationState == 2);
}
+
+ return NS_OK;
}
// Produces a URI that uniquely identifies the first party to which
@@ -435,7 +443,8 @@ bool ThirdPartyUtil::IsFirstPartyIsolationActive(nsIChannel *aChannel, nsIDocume
NS_IMETHODIMP
ThirdPartyUtil::GetFirstPartyIsolationURI(nsIChannel *aChannel, nsIDocument *aDoc, nsIURI **aOutput)
{
- bool isolationActive = IsFirstPartyIsolationActive(aChannel, aDoc);
+ bool isolationActive = false;
+ (void)IsFirstPartyIsolationActive(aChannel, aDoc, &isolationActive);
if (isolationActive) {
return GetFirstPartyURI(aChannel, aDoc, aOutput);
} else {
diff --git a/netwerk/base/public/mozIThirdPartyUtil.idl b/netwerk/base/public/mozIThirdPartyUtil.idl
index 87fb630..0bb632b 100644
--- a/netwerk/base/public/mozIThirdPartyUtil.idl
+++ b/netwerk/base/public/mozIThirdPartyUtil.idl
@@ -13,7 +13,7 @@ interface nsIDocument;
* Utility functions for determining whether a given URI, channel, or window
* hierarchy is third party with respect to a known URI.
*/
-[scriptable, uuid(d994fd1d-d2fe-4372-9ae7-88b08b7d9d90)]
+[scriptable, uuid(b538074d-5e00-40b3-b5c4-e060ae010b83)]
interface mozIThirdPartyUtil : nsISupports
{
/**
@@ -165,6 +165,26 @@ interface mozIThirdPartyUtil : nsISupports
in nsIDocument aDoc);
/**
+ * isFirstPartyIsolationActive
+ *
+ * Determine if First Party Isolation is currently active for the given
+ * nsIChannel or nsIDocument. Depends on preference setting and
+ * possibly the state of Private Browsing mode.
+ *
+ * @param aChannel
+ * An arbitrary channel for some content element of a first party
+ * load. Can be null.
+ *
+ * @param aDoc
+ * An arbitrary third party document. Can be null.
+ *
+ * @return true if first party isolation is active.
+ */
+
+ [noscript] bool isFirstPartyIsolationActive(in nsIChannel aChannel,
+ in nsIDocument aDoc);
+
+ /**
* getFirstPartyIsolationURI
*
* If first-party isolation is active, then
diff --git a/netwerk/protocol/http/nsHttpChannel.cpp b/netwerk/protocol/http/nsHttpChannel.cpp
index b37b60b..59ba71b 100644
--- a/netwerk/protocol/http/nsHttpChannel.cpp
+++ b/netwerk/protocol/http/nsHttpChannel.cpp
@@ -4600,6 +4600,8 @@ nsHttpChannel::BeginConnect()
// notify "http-on-modify-request" observers
CallOnModifyRequestObservers();
+ RemoveAuthorizationHeaderIfAppropriate();
+
// Check to see if we should redirect this channel elsewhere by
// nsIHttpChannel.redirectTo API request
if (mAPIRedirectToURI) {
@@ -5750,6 +5752,72 @@ nsHttpChannel::ResumeAt(uint64_t aStartPos,
return NS_OK;
}
+// Remove the Authorization header if first party isolation is active and
+// this channel is processing a third party request. This prevents user
+// tracking via HTTP Basic Authentication.
+// Note that this approach disables authentication for 3rd party domains. It
+// would be better if we could isolate the authentication while still allowing
+// it to be transmitted... but HTTP authentication is rarely used anyway.
+void
+nsHttpChannel::RemoveAuthorizationHeaderIfAppropriate()
+{
+ if (!mRequestHead.PeekHeader(nsHttp::Authorization)) {
+ return; // No Authorization header is present.
+ }
+
+ nsCOMPtr<mozIThirdPartyUtil> thirdPartySvc
+ = do_GetService(THIRDPARTYUTIL_CONTRACTID);
+ bool isolationActive = true;
+ (void)thirdPartySvc->IsFirstPartyIsolationActive(this, nullptr,
+ &isolationActive);
+ if (!isolationActive)
+ return; // First party isolation is disabled for this channel.
+
+ bool isAuthAllowed = false;
+ nsCOMPtr<nsIURI> firstPartyURI;
+ nsresult rv = thirdPartySvc->GetFirstPartyURIFromChannel(this, false,
+ getter_AddRefs(firstPartyURI));
+ if (NS_SUCCEEDED(rv) && firstPartyURI) {
+ isAuthAllowed = (mURI == firstPartyURI)
+ || HostPartIsTheSame(firstPartyURI);
+ } else {
+ // We failed to get the first party URI. Check the document URI so
+ // that we can allow authentication if the request originates from the
+ // the browser chrome, e.g., some favicon requests. If there is no
+ // document URI associated with this request, it cannot be associated
+ // with a content document, so it must be a special request (e.g.,
+ // favicon fetch or OSCP), for which we also allow authenication.
+ nsCOMPtr<nsIURI> docURI;
+ rv = GetDocumentURI(getter_AddRefs(docURI));
+ if (NS_FAILED(rv) || !docURI) {
+ isAuthAllowed = true;
+ } else {
+ nsAutoCString docURISpec;
+ docURI->GetAsciiSpec(docURISpec);
+ if (docURISpec == "chrome://browser/content/browser.xul")
+ isAuthAllowed = true;
+ }
+ }
+
+ if (!isAuthAllowed) {
+ mRequestHead.ClearHeader(nsHttp::Authorization);
+ mRequestHead.ClearHeader(nsHttp::Cache_Control);
+ mRequestHead.ClearHeader(nsHttp::Pragma);
+
+#ifdef PR_LOGGING
+ nsAutoCString requestURIStr, firstPartyURIStr;
+ mURI->GetAsciiSpec(requestURIStr);
+ if (firstPartyURI)
+ firstPartyURI->GetAsciiSpec(firstPartyURIStr);
+ else
+ firstPartyURIStr = "--N/A--";
+ LOG(("Removed Authorization header from third party request"
+ " [Request URI=%s, First Party URI=%s]\n",
+ requestURIStr.get(), firstPartyURIStr.get()));
+#endif
+ }
+}
+
nsresult
nsHttpChannel::DoAuthRetry(nsAHttpConnection *conn)
{
@@ -5771,6 +5839,8 @@ nsHttpChannel::DoAuthRetry(nsAHttpConnection *conn)
// notify "http-on-modify-request" observers
CallOnModifyRequestObservers();
+ RemoveAuthorizationHeaderIfAppropriate();
+
mIsPending = true;
// get rid of the old response headers
diff --git a/netwerk/protocol/http/nsHttpChannel.h b/netwerk/protocol/http/nsHttpChannel.h
index 8d3d23d..a76ed8e 100644
--- a/netwerk/protocol/http/nsHttpChannel.h
+++ b/netwerk/protocol/http/nsHttpChannel.h
@@ -282,6 +282,7 @@ private:
nsresult ProcessPartialContent();
nsresult OnDoneReadingPartialCacheEntry(bool *streamDone);
+ void RemoveAuthorizationHeaderIfAppropriate();
nsresult DoAuthRetry(nsAHttpConnection *);
void HandleAsyncRedirectChannelToHttps();
1
0

[tor-browser/tor-browser-31.4.0esr-4.5-1] Merge remote-tracking branch 'brade/bug13900-01' into tor-browser-31.4.0esr-4.5-1
by mikeperry@torproject.org 13 Feb '15
by mikeperry@torproject.org 13 Feb '15
13 Feb '15
commit feb32165494be68c1d29a48ef9d4d9cf8b0b36ed
Merge: 2183169 b6be541
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Thu Feb 12 18:01:12 2015 -0800
Merge remote-tracking branch 'brade/bug13900-01' into tor-browser-31.4.0esr-4.5-1
content/base/src/ThirdPartyUtil.cpp | 21 ++++++---
netwerk/base/public/mozIThirdPartyUtil.idl | 22 ++++++++-
netwerk/protocol/http/nsHttpChannel.cpp | 70 ++++++++++++++++++++++++++++
netwerk/protocol/http/nsHttpChannel.h | 1 +
4 files changed, 107 insertions(+), 7 deletions(-)
1
0

[tor-browser/tor-browser-31.4.0esr-4.5-1] fixup! Bug 14490: Make Disconnect the default search engine
by mikeperry@torproject.org 13 Feb '15
by mikeperry@torproject.org 13 Feb '15
13 Feb '15
commit 218316907ad4fb5662741bb541265ac59c7b5f9f
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Thu Feb 12 16:53:23 2015 -0800
fixup! Bug 14490: Make Disconnect the default search engine
Sadly, our search box sould not say "Disconnect".
---
browser/app/profile/000-tor-browser.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/browser/app/profile/000-tor-browser.js b/browser/app/profile/000-tor-browser.js
index 0d5faa6..cb59517 100644
--- a/browser/app/profile/000-tor-browser.js
+++ b/browser/app/profile/000-tor-browser.js
@@ -150,14 +150,14 @@ pref("browser.uiCustomization.state", "{\"placements\":{\"PanelUI-contents\":[\"
// Putting the search engine prefs into this file to fix #11236.
// Default search engine
-pref("browser.search.defaultenginename", "Disconnect");
+pref("browser.search.defaultenginename", "Search");
// Search engine order (order displayed in the search bar dropdown)
// Somewhat surprisingly we get Disconnect - YouTube - Twitter as the order
// only if we set them as below.
pref("browser.search.order.extra.1", "YouTube");
pref("browser.search.order.extra.2", "Twitter");
-pref("browser.search.order.extra.3", "Disconnect");
+pref("browser.search.order.extra.3", "Search");
// Hacks/workarounds: Direct2D seems to crash w/ lots of video cards w/ MinGW?
// Nvida cards also experience crashes without the second pref set to disabled
1
0

[tor-browser/tor-browser-31.4.0esr-4.5-1] fixup! Omnibox: Add disconnect, youtube; remove Amazon and eBay
by mikeperry@torproject.org 13 Feb '15
by mikeperry@torproject.org 13 Feb '15
13 Feb '15
commit 1620c8e09d3ebc57066d6ada566d5e119b8512aa
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Thu Feb 12 16:52:12 2015 -0800
fixup! Omnibox: Add disconnect, youtube; remove Amazon and eBay
Sadly, having our search box say "Disconnect" is not very usable.
---
browser/locales/en-US/searchplugins/disconnect.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/browser/locales/en-US/searchplugins/disconnect.xml b/browser/locales/en-US/searchplugins/disconnect.xml
index 40c512f..5b80262 100644
--- a/browser/locales/en-US/searchplugins/disconnect.xml
+++ b/browser/locales/en-US/searchplugins/disconnect.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
- <ShortName>Disconnect</ShortName>
+ <ShortName>Search</ShortName>
<LongName>Disconnect Private Search</LongName>
<Description>Private searches using disconnect.me</Description>
<Url type="text/html" method="POST" template="https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
1
0

[tor-browser/tor-browser-31.4.0esr-4.5-1] Bug 10280: Don't load any plugins into the address space.
by mikeperry@torproject.org 13 Feb '15
by mikeperry@torproject.org 13 Feb '15
13 Feb '15
commit bc305e697edb6860fe035e4b67fc5f027de237a5
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Thu Feb 12 16:04:13 2015 -0800
Bug 10280: Don't load any plugins into the address space.
If the pref "plugin.disable" is set, the user has to click an extra button to
cause Firefox to actually scan the filesystem for plugins.
Note: The strings for this patch are actually present in Torbutton.
Patch by bobnomnom.
---
dom/plugins/base/nsPluginHost.cpp | 11 +++
toolkit/mozapps/extensions/content/extensions.js | 75 +++++++++++++++++++-
toolkit/mozapps/extensions/content/extensions.xul | 23 ++++++
.../mozapps/extensions/internal/PluginProvider.jsm | 11 +++
4 files changed, 117 insertions(+), 3 deletions(-)
diff --git a/dom/plugins/base/nsPluginHost.cpp b/dom/plugins/base/nsPluginHost.cpp
index 1efe59f..68ac197 100644
--- a/dom/plugins/base/nsPluginHost.cpp
+++ b/dom/plugins/base/nsPluginHost.cpp
@@ -3105,6 +3105,7 @@ NS_IMETHODIMP nsPluginHost::Observe(nsISupports *aSubject,
sInst->Release();
}
if (!strcmp(NS_PREFBRANCH_PREFCHANGE_TOPIC_ID, aTopic)) {
+ NS_ConvertUTF16toUTF8 prefName(someData);
mPluginsDisabled = Preferences::GetBool("plugin.disable", false);
mPluginsClickToPlay = Preferences::GetBool("plugins.click_to_play", false);
// Unload or load plugins as needed
@@ -3113,6 +3114,16 @@ NS_IMETHODIMP nsPluginHost::Observe(nsISupports *aSubject,
} else {
LoadPlugins();
}
+ if (prefName.Equals("plugin.disable")) {
+ nsCOMPtr<nsIObserverService> obsService =
+ mozilla::services::GetObserverService();
+ if (obsService) {
+ nsAutoString pluginPolicy;
+ pluginPolicy = mPluginsDisabled ? NS_LITERAL_STRING("disabled")
+ : NS_LITERAL_STRING("enabled");
+ obsService->NotifyObservers(nullptr, "plugins-policy-changed", pluginPolicy.get());
+ }
+ }
}
if (!strcmp("blocklist-updated", aTopic)) {
nsPluginTag* plugin = mPlugins;
diff --git a/toolkit/mozapps/extensions/content/extensions.js b/toolkit/mozapps/extensions/content/extensions.js
index 35d2392..6790841 100644
--- a/toolkit/mozapps/extensions/content/extensions.js
+++ b/toolkit/mozapps/extensions/content/extensions.js
@@ -858,6 +858,20 @@ var gViewController = {
}
},
+ cmd_goToEnablePlugins: {
+ isEnabled: function cmd_goToEnablePlugins_isEnabled() true,
+ doCommand: function cmd_goToEnablePlugins_doCommand() {
+ Services.prefs.setBoolPref("plugin.disable", false);
+ }
+ },
+
+ cmd_goToDisablePlugins: {
+ isEnabled: function cmd_goToDisablePlugins_isEnabled() true,
+ doCommand: function cmd_goToDisablePlugins_doCommand() {
+ Services.prefs.setBoolPref("plugin.disable", true);
+ }
+ },
+
cmd_goToRecentUpdates: {
isEnabled: function cmd_goToRecentUpdates_isEnabled() true,
doCommand: function cmd_goToRecentUpdates_doCommand() {
@@ -2553,12 +2567,17 @@ var gListView = {
node: null,
_listBox: null,
_emptyNotice: null,
+ _pluginDisabledNotice: null,
+ _pluginEnabledNotice: null,
_type: null,
+ _pluginListEmpty: false,
initialize: function gListView_initialize() {
this.node = document.getElementById("list-view");
this._listBox = document.getElementById("addon-list");
this._emptyNotice = document.getElementById("addon-list-empty");
+ this._pluginDisabledNotice = document.getElementById("plugin-disabled");
+ this._pluginEnabledNotice = document.getElementById("plugin-enabled");
var self = this;
this._listBox.addEventListener("keydown", function listbox_onKeydown(aEvent) {
@@ -2570,6 +2589,10 @@ var gListView = {
}, false);
},
+ shutdown: function gListView_shutdown() {
+ AddonManager.removeAddonListener(this);
+ },
+
show: function gListView_show(aType, aRequest) {
if (!(aType in AddonManager.addonTypes))
throw Components.Exception("Attempting to show unknown type " + aType, Cr.NS_ERROR_INVALID_ARG);
@@ -2577,9 +2600,12 @@ var gListView = {
this._type = aType;
this.node.setAttribute("type", aType);
this.showEmptyNotice(false);
+ this.showPluginEnabledNotice(false);
+ this.showPluginDisabledNotice(false);
while (this._listBox.itemCount > 0)
this._listBox.removeItemAt(0);
+ this._pluginListEmpty = true;
var self = this;
getAddonsAndInstalls(aType, function show_getAddonsAndInstalls(aAddonsList, aInstallsList) {
@@ -2594,20 +2620,22 @@ var gListView = {
for (let installItem of aInstallsList)
elements.push(createItem(installItem, true));
- self.showEmptyNotice(elements.length == 0);
if (elements.length > 0) {
sortElements(elements, ["uiState", "name"], true);
for (let element of elements)
self._listBox.appendChild(element);
}
+ self.showAllNeedNotices(true);
gEventManager.registerInstallListener(self);
gViewController.updateCommands();
gViewController.notifyViewChanged();
+ AddonManager.addAddonListener(self);
});
},
hide: function gListView_hide() {
+ AddonManager.removeAddonListener(this);
gEventManager.unregisterInstallListener(this);
doPendingUninstalls(this._listBox);
},
@@ -2616,6 +2644,43 @@ var gListView = {
this._emptyNotice.hidden = !aShow;
},
+ showPluginDisabledNotice: function gListView_showPluginDisabledNotice(aShow) {
+ this._pluginDisabledNotice.hidden = !aShow;
+ },
+
+ showPluginEnabledNotice: function gListView_showPluginEnabledNotice(aShow) {
+ this._pluginEnabledNotice.hidden = !aShow;
+ },
+
+ showAllNeedNotices: function gListView_showAllNeedNotices(aShow) {
+ var empty_list = (this._listBox.itemCount == 0);
+ var show_empty_notice = true;
+
+ if (this._type == "plugin") {
+ var update_notices = (this._pluginListEmpty != empty_list);
+ this._pluginListEmpty = empty_list;
+
+ if (update_notices || aShow) {
+ var plugin_disable = false;
+
+ try {
+ plugin_disable = Services.prefs.getBoolPref("plugin.disable")
+ } catch (e) {}
+
+ if (plugin_disable == true) {
+ this.showPluginEnabledNotice(false);
+ this.showPluginDisabledNotice(true);
+ show_empty_notice = false;
+ } else {
+ this.showPluginDisabledNotice(false);
+ this.showPluginEnabledNotice(true);
+ }
+ }
+ }
+ if (show_empty_notice == true)
+ this.showEmptyNotice(empty_list);
+ },
+
onSortChanged: function gListView_onSortChanged(aSortBy, aAscending) {
sortList(this._listBox, aSortBy, aAscending);
},
@@ -2658,6 +2723,10 @@ var gListView = {
}
},
+ onUninstalled: function gListView_onUninstalled() {
+ this.showAllNeedNotices(false);
+ },
+
addItem: function gListView_addItem(aObj, aIsInstall) {
if (aObj.type != this._type)
return;
@@ -2673,7 +2742,7 @@ var gListView = {
let item = createItem(aObj, aIsInstall);
this._listBox.insertBefore(item, this._listBox.firstChild);
- this.showEmptyNotice(false);
+ this.showAllNeedNotices(false);
},
removeItem: function gListView_removeItem(aObj, aIsInstall) {
@@ -2682,7 +2751,7 @@ var gListView = {
for (let item of this._listBox.childNodes) {
if (item[prop] == aObj) {
this._listBox.removeChild(item);
- this.showEmptyNotice(this._listBox.itemCount == 0);
+ this.showAllNeedNotices(false);
return;
}
}
diff --git a/toolkit/mozapps/extensions/content/extensions.xul b/toolkit/mozapps/extensions/content/extensions.xul
index d247bdf..1c2bb07 100644
--- a/toolkit/mozapps/extensions/content/extensions.xul
+++ b/toolkit/mozapps/extensions/content/extensions.xul
@@ -79,6 +79,8 @@
<command id="cmd_findAllUpdates"/>
<command id="cmd_restartApp"/>
<command id="cmd_goToDiscoverPane"/>
+ <command id="cmd_goToEnablePlugins"/>
+ <command id="cmd_goToDisablePlugins"/>
<command id="cmd_goToRecentUpdates"/>
<command id="cmd_goToAvailableUpdates"/>
<command id="cmd_installFromFile"/>
@@ -386,7 +388,28 @@
</vbox>
<spacer class="alert-spacer-after"/>
</vbox>
+ <vbox id="plugin-disabled" class="alert-container"
+ flex="1" hidden="true">
+ <spacer class="alert-spacer-before"/>
+ <vbox class="alert">
+ <label value="&plugins.installed.find;"/>
+ <button class="button-enableplugin"
+ label="&plugins.installed.enable;"
+ command="cmd_goToEnablePlugins"/>
+ </vbox>
+ <spacer class="alert-spacer-after"/>
+ </vbox>
<richlistbox id="addon-list" class="list" flex="1"/>
+ <vbox id="plugin-enabled" class="view-header global-info-container"
+ hidden="true">
+ <vbox class="global-info" flex="1" align="center">
+ <button class="button-disableplugin"
+ label="&plugins.installed.disable;"
+ tooltiptext="&plugins.installed.disable.tip;"
+ command="cmd_goToDisablePlugins"/>
+ <spacer flex="5000"/> <!-- Necessary to allow the message to wrap -->
+ </vbox>
+ </vbox>
</vbox>
<!-- updates view -->
diff --git a/toolkit/mozapps/extensions/internal/PluginProvider.jsm b/toolkit/mozapps/extensions/internal/PluginProvider.jsm
index 7b6e335..2cf2583 100644
--- a/toolkit/mozapps/extensions/internal/PluginProvider.jsm
+++ b/toolkit/mozapps/extensions/internal/PluginProvider.jsm
@@ -52,6 +52,7 @@ var PluginProvider = {
plugins: null,
startup: function PL_startup() {
+ Services.obs.addObserver(this, "plugins-policy-changed", false);
Services.obs.addObserver(this, LIST_UPDATED_TOPIC, false);
Services.obs.addObserver(this, AddonManager.OPTIONS_NOTIFICATION_DISPLAYED, false);
},
@@ -64,6 +65,7 @@ var PluginProvider = {
this.plugins = null;
Services.obs.removeObserver(this, AddonManager.OPTIONS_NOTIFICATION_DISPLAYED);
Services.obs.removeObserver(this, LIST_UPDATED_TOPIC);
+ Services.obs.removeObserver(this, "plugins-policy-changed");
},
observe: function(aSubject, aTopic, aData) {
@@ -89,6 +91,15 @@ var PluginProvider = {
if (this.plugins)
this.updatePluginList();
break;
+ case "plugins-policy-changed":
+ var plugin_policy = aData
+ if (!this.plugins)
+ this.plugins =[];
+ this.updatePluginList();
+ Services.obs.notifyObservers(null,
+ "plugin-provider-after-changed-policy",
+ plugin_policy);
+ break;
}
},
1
0