tor-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
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
October 2017
- 17 participants
- 2004 discussions

[tor-browser/tor-browser-52.4.0esr-7.0-1] Bug 1337162 - Enable the Linux content sandbox for non-Nightly builds. r=ted
by gk@torproject.org 17 Oct '17
by gk@torproject.org 17 Oct '17
17 Oct '17
commit f439d50e540ed21a474a2062d1b902931c042a3e
Author: Gian-Carlo Pascutto <gcp(a)mozilla.com>
Date: Mon Feb 27 18:01:33 2017 +0100
Bug 1337162 - Enable the Linux content sandbox for non-Nightly builds. r=ted
MozReview-Commit-ID: 65aPquHzyfP
--HG--
extra : rebase_source : 017080e3ae33289bb0b6a790027f9d02c380d47b
---
old-configure.in | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/old-configure.in b/old-configure.in
index 0a0ba4465700..f5a2f05629ce 100644
--- a/old-configure.in
+++ b/old-configure.in
@@ -3997,14 +3997,14 @@ if test -n "$gonkdir"; then
MOZ_CONTENT_SANDBOX=$MOZ_SANDBOX
fi
-case "$OS_TARGET:$NIGHTLY_BUILD" in
-WINNT:*)
+case "$OS_TARGET" in
+WINNT)
MOZ_CONTENT_SANDBOX=$MOZ_SANDBOX
;;
-Darwin:*)
+Darwin)
MOZ_CONTENT_SANDBOX=$MOZ_SANDBOX
;;
-Linux:1)
+Linux)
case $CPU_ARCH in
x86_64|x86)
MOZ_CONTENT_SANDBOX=$MOZ_SANDBOX
1
0

[tor-browser/tor-browser-52.4.0esr-7.0-1] Bug 1355274 - Polyfill SOCK_DGRAM socketpairs with SOCK_SEQPACKET, for libasyncns. r=gcp
by gk@torproject.org 17 Oct '17
by gk@torproject.org 17 Oct '17
17 Oct '17
commit 458e18efb75ff80d270cc875ac7c200da705752c
Author: Jed Davis <jld(a)mozilla.com>
Date: Tue Apr 11 20:55:34 2017 -0600
Bug 1355274 - Polyfill SOCK_DGRAM socketpairs with SOCK_SEQPACKET, for libasyncns. r=gcp
MozReview-Commit-ID: 2DeklSGsjUV
--HG--
extra : rebase_source : 8a202c23dc9a3ddede49b08ce1e0792dfb40bdbf
---
security/sandbox/linux/SandboxFilter.cpp | 20 +++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)
diff --git a/security/sandbox/linux/SandboxFilter.cpp b/security/sandbox/linux/SandboxFilter.cpp
index 7e1771a62665..5ddd58029e85 100644
--- a/security/sandbox/linux/SandboxFilter.cpp
+++ b/security/sandbox/linux/SandboxFilter.cpp
@@ -496,6 +496,16 @@ class ContentSandboxPolicy : public SandboxPolicyCommon {
return 0;
}
+ static intptr_t SocketpairDatagramTrap(ArgsRef aArgs, void* aux) {
+ auto fds = reinterpret_cast<int*>(aArgs.args[3]);
+ // Return sequential packet sockets instead of the expected
+ // datagram sockets; see bug 1355274 for details.
+ if (socketpair(AF_UNIX, SOCK_SEQPACKET, 0, fds) != 0) {
+ return -errno;
+ }
+ return 0;
+ }
+
public:
explicit ContentSandboxPolicy(SandboxBrokerClient* aBroker):mBroker(aBroker) { }
virtual ~ContentSandboxPolicy() { }
@@ -508,6 +518,7 @@ public:
switch(aCall) {
case SYS_RECVFROM:
case SYS_SENDTO:
+ case SYS_SENDMMSG: // libresolv via libasyncns; see bug 1355274
return Some(Allow());
case SYS_SOCKETPAIR: {
@@ -517,9 +528,12 @@ public:
return Some(Allow());
}
Arg<int> domain(0), type(1);
- return Some(If(AllOf(domain == AF_UNIX,
- AnyOf(type == SOCK_STREAM, type == SOCK_SEQPACKET)),
- Allow())
+ return Some(If(domain == AF_UNIX,
+ Switch(type)
+ .Case(SOCK_STREAM, Allow())
+ .Case(SOCK_SEQPACKET, Allow())
+ .Case(SOCK_DGRAM, Trap(SocketpairDatagramTrap, nullptr))
+ .Default(InvalidSyscall()))
.Else(InvalidSyscall()));
}
1
0

[tor-browser/tor-browser-52.4.0esr-7.0-1] Bug 1317802 - don't stop for SIGSYS in .gdbinit; r=jld
by gk@torproject.org 17 Oct '17
by gk@torproject.org 17 Oct '17
17 Oct '17
commit f114f92dda8c67e8f013cf01974b0e1f65c0d04e
Author: Nathan Froyd <froydnj(a)mozilla.com>
Date: Wed Nov 16 01:13:22 2016 -0500
Bug 1317802 - don't stop for SIGSYS in .gdbinit; r=jld
The sandboxing code generates this signal nowadays, which makes
debugging with tools like rr quite frustrating.
DONTBUILD because NPOTB
---
.gdbinit | 1 +
1 file changed, 1 insertion(+)
diff --git a/.gdbinit b/.gdbinit
index dd9a005f67a1..08f1fc0f2011 100644
--- a/.gdbinit
+++ b/.gdbinit
@@ -16,6 +16,7 @@ handle SIGPIPE noprint nostop pass
# sandboxing code on older kernels.
handle SIG38 noprint nostop pass
handle SIG64 noprint nostop pass
+handle SIGSYS noprint nostop pass
# Show the concrete types behind nsIFoo
set print object on
1
0

17 Oct '17
commit 74a7688a81cb539e02431fff6dea8ee204b6ff80
Author: Gian-Carlo Pascutto <gcp(a)mozilla.com>
Date: Mon Jun 19 20:07:38 2017 +0200
Bug 1374281. r=jld
MozReview-Commit-ID: Ko5m5i4Wkd6
--HG--
extra : rebase_source : 3076315ef3639a89f752addbb01d5d08a9c2db75
---
security/sandbox/linux/broker/SandboxBroker.cpp | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/security/sandbox/linux/broker/SandboxBroker.cpp b/security/sandbox/linux/broker/SandboxBroker.cpp
index a31d1fc6684a..d79656c3407f 100644
--- a/security/sandbox/linux/broker/SandboxBroker.cpp
+++ b/security/sandbox/linux/broker/SandboxBroker.cpp
@@ -360,6 +360,10 @@ AllowOpen(int aReqFlags, int aPerms)
if (aReqFlags & O_CREAT) {
needed |= SandboxBroker::MAY_CREATE;
}
+ // Linux allows O_TRUNC even with O_RDONLY
+ if (aReqFlags & O_TRUNC) {
+ needed |= SandboxBroker::MAY_WRITE;
+ }
return (aPerms & needed) == needed;
}
1
0

[tor-browser/tor-browser-52.4.0esr-7.0-1] Bug 1386279 - Renovate Linux sandbox file broker handling of access(). r=gcp
by gk@torproject.org 17 Oct '17
by gk@torproject.org 17 Oct '17
17 Oct '17
commit b4d1d2223d7fed2bd88b06fa4e0f65936618d417
Author: Jed Davis <jld(a)mozilla.com>
Date: Tue Aug 8 18:02:31 2017 -0600
Bug 1386279 - Renovate Linux sandbox file broker handling of access(). r=gcp
1. X_OK is now allowed, and is limited only by the MAY_ACCESS permission.
2. The actual access() syscall is now used, if access is granted by the
broker policy. This fixed bug 1382246, which explains the background.
MozReview-Commit-ID: 926429PlBnL
--HG--
extra : rebase_source : 6ae54c4c25e1389fa3af75b0bdf727323448294a
---
security/sandbox/linux/broker/SandboxBroker.cpp | 14 ++------------
security/sandbox/linux/gtest/TestBroker.cpp | 15 +++++++++++----
2 files changed, 13 insertions(+), 16 deletions(-)
diff --git a/security/sandbox/linux/broker/SandboxBroker.cpp b/security/sandbox/linux/broker/SandboxBroker.cpp
index d79656c3407f..56215b89b232 100644
--- a/security/sandbox/linux/broker/SandboxBroker.cpp
+++ b/security/sandbox/linux/broker/SandboxBroker.cpp
@@ -306,7 +306,7 @@ AllowOperation(int aReqFlags, int aPerms)
static bool
AllowAccess(int aReqFlags, int aPerms)
{
- if (aReqFlags & ~(R_OK|W_OK|F_OK)) {
+ if (aReqFlags & ~(R_OK|W_OK|X_OK|F_OK)) {
return false;
}
int needed = 0;
@@ -569,17 +569,7 @@ SandboxBroker::ThreadMain(void)
case SANDBOX_FILE_ACCESS:
if (permissive || AllowAccess(req.mFlags, perms)) {
- // This can't use access() itself because that uses the ruid
- // and not the euid. In theory faccessat() with AT_EACCESS
- // would work, but Linux doesn't actually implement the
- // flags != 0 case; glibc has a hack which doesn't even work
- // in this case so it'll ignore the flag, and Bionic just
- // passes through the syscall and always ignores the flags.
- //
- // Instead, because we've already checked the requested
- // r/w/x bits against the policy, just return success if the
- // file exists and hope that's close enough.
- if (stat(pathBuf, (struct stat*)&respBuf) == 0) {
+ if (access(pathBuf, req.mFlags) == 0) {
resp.mError = 0;
} else {
resp.mError = -errno;
diff --git a/security/sandbox/linux/gtest/TestBroker.cpp b/security/sandbox/linux/gtest/TestBroker.cpp
index a311e181a9b1..bf5e58acbc40 100644
--- a/security/sandbox/linux/gtest/TestBroker.cpp
+++ b/security/sandbox/linux/gtest/TestBroker.cpp
@@ -133,6 +133,8 @@ SandboxBrokerTest::GetPolicy() const
policy->AddPath(MAY_READ | MAY_WRITE, "/tmp", AddAlways);
policy->AddPath(MAY_READ | MAY_WRITE | MAY_CREATE, "/tmp/blublu", AddAlways);
policy->AddPath(MAY_READ | MAY_WRITE | MAY_CREATE, "/tmp/blublublu", AddAlways);
+ // This should be non-writable by the user running the test:
+ policy->AddPath(MAY_READ | MAY_WRITE, "/etc", AddAlways);
return Move(policy);
}
@@ -206,6 +208,14 @@ TEST_F(SandboxBrokerTest, Access)
EXPECT_EQ(-EACCES, Access("/proc/self", R_OK));
EXPECT_EQ(-EACCES, Access("/proc/self/stat", F_OK));
+
+ EXPECT_EQ(0, Access("/tmp", X_OK));
+ EXPECT_EQ(0, Access("/tmp", R_OK|X_OK));
+ EXPECT_EQ(0, Access("/tmp", R_OK|W_OK|X_OK));
+ EXPECT_EQ(0, Access("/proc/self", X_OK));
+
+ EXPECT_EQ(0, Access("/etc", R_OK|X_OK));
+ EXPECT_EQ(-EACCES, Access("/etc", W_OK));
}
TEST_F(SandboxBrokerTest, Stat)
@@ -257,10 +267,7 @@ TEST_F(SandboxBrokerTest, Chmod)
close(fd);
// Set read only. SandboxBroker enforces 0600 mode flags.
ASSERT_EQ(0, Chmod("/tmp/blublu", S_IRUSR));
- // SandboxBroker doesn't use real access(), it just checks against
- // the policy. So it can't see the change in permisions here.
- // This won't work:
- // EXPECT_EQ(-EACCES, Access("/tmp/blublu", W_OK));
+ EXPECT_EQ(-EACCES, Access("/tmp/blublu", W_OK));
statstruct realStat;
EXPECT_EQ(0, statsyscall("/tmp/blublu", &realStat));
EXPECT_EQ((mode_t)S_IRUSR, realStat.st_mode & 0777);
1
0

[tor-browser/tor-browser-52.4.0esr-7.0-1] Bug 1344106 - Remove Linux todos() now that Linux sandboxing is riding the trains. r=haik
by gk@torproject.org 17 Oct '17
by gk@torproject.org 17 Oct '17
17 Oct '17
commit fcf32e4bdade5686f7dd3ca503d45fbfc6d56d2d
Author: Haik Aftandilian <haftandilian(a)mozilla.com>
Date: Fri Mar 3 09:50:29 2017 +0100
Bug 1344106 - Remove Linux todos() now that Linux sandboxing is riding the trains. r=haik
MozReview-Commit-ID: 9tI2S6fEYkD
--HG--
extra : rebase_source : 0a5d00f8498861e7ea281e527b2be6b2c4e472d6
---
.../sandbox/test/browser_content_sandbox_fs.js | 20 --------------------
.../test/browser_content_sandbox_syscalls.js | 22 +---------------------
2 files changed, 1 insertion(+), 41 deletions(-)
diff --git a/security/sandbox/test/browser_content_sandbox_fs.js b/security/sandbox/test/browser_content_sandbox_fs.js
index 946f86bb9a92..7439bd46ee53 100644
--- a/security/sandbox/test/browser_content_sandbox_fs.js
+++ b/security/sandbox/test/browser_content_sandbox_fs.js
@@ -96,25 +96,11 @@ add_task(function*() {
prefExists = false;
}
- // Special case Linux on !isNightly
- if (isLinux() && !isNightly()) {
- todo(prefExists, "pref security.sandbox.content.level exists");
- if (!prefExists) {
- return;
- }
- }
-
ok(prefExists, "pref security.sandbox.content.level exists");
if (!prefExists) {
return;
}
- // Special case Linux on !isNightly
- if (isLinux() && !isNightly()) {
- todo(level > 0, "content sandbox enabled for !nightly.");
- return;
- }
-
info(`security.sandbox.content.level=${level}`);
ok(level > 0, "content sandbox is enabled.");
if (level == 0) {
@@ -124,12 +110,6 @@ add_task(function*() {
let isFileIOSandboxed = isContentFileIOSandboxed(level);
- // Special case Linux on !isNightly
- if (isLinux() && !isNightly()) {
- todo(isFileIOSandboxed, "content file I/O sandbox enabled for !nightly.");
- return;
- }
-
// Content sandbox enabled, but level doesn't include file I/O sandboxing.
ok(isFileIOSandboxed, "content file I/O sandboxing is enabled.");
if (!isFileIOSandboxed) {
diff --git a/security/sandbox/test/browser_content_sandbox_syscalls.js b/security/sandbox/test/browser_content_sandbox_syscalls.js
index d56456966b8a..848b145429f2 100644
--- a/security/sandbox/test/browser_content_sandbox_syscalls.js
+++ b/security/sandbox/test/browser_content_sandbox_syscalls.js
@@ -104,7 +104,7 @@ function areContentSyscallsSandboxed(level) {
syscallsSandboxMinLevel = 1;
break;
case "Linux":
- syscallsSandboxMinLevel = 2;
+ syscallsSandboxMinLevel = 1;
break;
default:
Assert.ok(false, "Unknown OS");
@@ -140,25 +140,11 @@ add_task(function*() {
prefExists = false;
}
- // Special case Linux on !isNightly
- if (isLinux() && !isNightly()) {
- todo(prefExists, "pref security.sandbox.content.level exists");
- if (!prefExists) {
- return;
- }
- }
-
ok(prefExists, "pref security.sandbox.content.level exists");
if (!prefExists) {
return;
}
- // Special case Linux on !isNightly
- if (isLinux() && !isNightly()) {
- todo(level > 0, "content sandbox enabled for !nightly.");
- return;
- }
-
info(`security.sandbox.content.level=${level}`);
ok(level > 0, "content sandbox is enabled.");
if (level == 0) {
@@ -168,12 +154,6 @@ add_task(function*() {
let areSyscallsSandboxed = areContentSyscallsSandboxed(level);
- // Special case Linux on !isNightly
- if (isLinux() && !isNightly()) {
- todo(areSyscallsSandboxed, "content syscall sandbox enabled for !nightly.");
- return;
- }
-
// Content sandbox enabled, but level doesn't include syscall sandboxing.
ok(areSyscallsSandboxed, "content syscall sandboxing is enabled.");
if (!areSyscallsSandboxed) {
1
0

[torbutton/maint-1.9.7] Bug 23887: Update banner locales and Mozilla text
by gk@torproject.org 17 Oct '17
by gk@torproject.org 17 Oct '17
17 Oct '17
commit dea1b11a4e600bcb1bffde09d550e5022a6eb5d3
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Mon Oct 16 23:09:56 2017 -0700
Bug 23887: Update banner locales and Mozilla text
Also: change donation link to
https://www.torproject.org/donate/donate-pdr-tbb-[locale]
---
src/chrome/content/aboutTor/aboutTor.xhtml | 3 ++-
src/chrome/content/aboutTor/donation_banner.js | 4 +++-
src/chrome/skin/donation_banner.css | 23 ++++++++++++++++++++---
src/modules/donation-banner.js | 16 ++++++++++------
4 files changed, 35 insertions(+), 11 deletions(-)
diff --git a/src/chrome/content/aboutTor/aboutTor.xhtml b/src/chrome/content/aboutTor/aboutTor.xhtml
index 367f9a6..248df11 100644
--- a/src/chrome/content/aboutTor/aboutTor.xhtml
+++ b/src/chrome/content/aboutTor/aboutTor.xhtml
@@ -37,8 +37,9 @@ window.addEventListener("pageshow", function() {
<div id="banner-contents-container">
<div id="banner-tagline"><span></span></div>
<div id="banner-slogan"><span></span></div>
+ <div id="banner-mozilla"><span></span></div>
<a id="banner-donate-button-link"
- href="https://www.torproject.org/donate/donate-tbb">
+ href="https://www.torproject.org/donate/donate-pdr-tbb">
<div id="banner-donate-button">
<div id="banner-donate-button-inner">
<span></span>
diff --git a/src/chrome/content/aboutTor/donation_banner.js b/src/chrome/content/aboutTor/donation_banner.js
index 1c95822..391c28f 100644
--- a/src/chrome/content/aboutTor/donation_banner.js
+++ b/src/chrome/content/aboutTor/donation_banner.js
@@ -46,6 +46,7 @@ let avoidWidows = function (element) {
let updateTextSizes = function () {
fitTextInElement(sel("#banner-tagline"));
fitTextInElement(sel("#banner-slogan"));
+ fitTextInElement(sel("#banner-mozilla"));
fitTextInElement(sel("#banner-donate-button-inner"));
avoidWidows(sel("#banner-tagline span"));
};
@@ -54,10 +55,11 @@ let updateTextSizes = function () {
let randomInteger = max => Math.floor(max * Math.random());
// The main donation banner function.
-let runDonationBanner = function ({ taglines, slogan, donate, shortLocale }) {
+let runDonationBanner = function ({ taglines, slogan, mozilla, donate, shortLocale }) {
try {
sel("#banner-tagline span").innerText = taglines[randomInteger(taglines.length)];
sel("#banner-slogan span").innerText = slogan;
+ sel("#banner-mozilla span").innerText = mozilla;
let donateButtonText = sel("#banner-donate-button-inner span");
let rtl = window.getComputedStyle(donateButtonText).direction === "rtl";
donateButtonText.innerHTML = donate + " " + (rtl ? "◀" : "▶");
diff --git a/src/chrome/skin/donation_banner.css b/src/chrome/skin/donation_banner.css
index 8580066..c91f0e5 100644
--- a/src/chrome/skin/donation_banner.css
+++ b/src/chrome/skin/donation_banner.css
@@ -58,8 +58,8 @@
right: 85px;
}
#banner-slogan {
- align-items: start;
- bottom: 0px;
+ align-items: center;
+ bottom: 30px;
color: #f8f8a0;
display: flex;
font-family: monospace;
@@ -68,13 +68,30 @@
position: absolute;
right: 285px;
text-align: start;
- top: 100px;
+ top: 90px;
white-space: nowrap;
}
#banner-slogan:-moz-dir(rtl) {
left: 285px;
right: 85px;
}
+#banner-mozilla {
+ align-items: center;
+ bottom: 5px;
+ color: white;
+ display: flex;
+ font-family: sans-serif;
+ left: 85px;
+ position: absolute;
+ right: 285px;
+ text-align: start;
+ top: 120px;
+ white-space: nowrap;
+}
+#banner-mozilla:-moz-dir(rtl) {
+ left: 285px;
+ right: 85px;
+}
#banner-donate-button {
background-color: #13a513;
border: 0px;
diff --git a/src/modules/donation-banner.js b/src/modules/donation-banner.js
index bb35e86..3a954e5 100644
--- a/src/modules/donation-banner.js
+++ b/src/modules/donation-banner.js
@@ -9,14 +9,17 @@ Cu.import("resource://gre/modules/Services.jsm");
const kBannerLocales = [
"bg",
"da",
+ "de",
"el",
"en",
"es",
"fr",
- "fr_CA",
"is",
"it",
+ "pt",
"nb",
+ "ru",
+ "sv",
"tr",
];
@@ -46,7 +49,7 @@ const gStringBundle = Services.strings.createBundle(kPropertiesURL);
// Check if we should show the banner, depends on
// browser locale, current date, and how many times
// we have already shown the banner.
-const shouldShowBanner = function ({ locale, shortLocale }) {
+const shouldShowBanner = function (shortLocale) {
try {
// If our override test pref is true, then just show the banner regardless.
if (Services.prefs.getBoolPref("extensions.torbutton.testBanner", false)) {
@@ -58,7 +61,7 @@ const shouldShowBanner = function ({ locale, shortLocale }) {
return false;
}
// Only show banner when we have that locale and if a donation redirect exists.
- if (kBannerLocales.indexOf(locale) === -1 ||
+ if (kBannerLocales.indexOf(shortLocale) === -1 ||
kDonationPageLocales.indexOf(shortLocale) === -1) {
return false;
}
@@ -92,7 +95,7 @@ var bannerData = function () {
// Read short locale.
let locale = Services.prefs.getCharPref("general.useragent.locale");
let shortLocale = locale.match(/[a-zA-Z]+/)[0].toLowerCase();
- if (!shouldShowBanner({ locale, shortLocale })) {
+ if (!shouldShowBanner(shortLocale)) {
return null;
}
// Load tag lines.
@@ -102,10 +105,11 @@ var bannerData = function () {
"aboutTor.donationBanner.tagline" + (index + 1));
taglines.push(tagline);
}
- // Read slogan and donate button text.
+ // Read slogan, mozilla, and donate button text.
let slogan = gStringBundle.GetStringFromName("aboutTor.donationBanner.slogan");
+ let mozilla = gStringBundle.GetStringFromName("aboutTor.donationBanner.mozilla");
let donate = gStringBundle.GetStringFromName("aboutTor.donationBanner.donate");
- return JSON.stringify({ taglines, slogan, donate, shortLocale });
+ return JSON.stringify({ taglines, slogan, mozilla, donate, shortLocale });
};
// Export utility functions for external use.
1
0
commit ee8b054f31b53266f6165e76aa38ee7bd58eb55e
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Oct 17 11:15:10 2017 +0000
Translations update
---
src/chrome/content/torbutton.js | 2 +-
src/chrome/locale/de/aboutTor.properties | 16 ++++++++--------
src/chrome/locale/es/aboutTor.properties | 2 +-
src/chrome/locale/fr/aboutTor.properties | 2 +-
src/chrome/locale/it/aboutTor.properties | 8 ++++----
src/chrome/locale/nl/aboutTor.properties | 8 ++++----
src/chrome/locale/pl/aboutTor.properties | 16 ++++++++--------
src/chrome/locale/pt-BR/aboutTor.properties | 2 +-
src/chrome/locale/ru/aboutTor.properties | 10 +++++-----
src/chrome/locale/ru/torbutton.dtd | 4 ++--
src/chrome/locale/sv/aboutTor.properties | 16 ++++++++--------
src/chrome/locale/tr/aboutTor.properties | 2 +-
12 files changed, 44 insertions(+), 44 deletions(-)
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index 955f8eb..9e18adb 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -2346,7 +2346,7 @@ function torbutton_update_noscript_button()
// Update every window's NoScript status...
while (browserEnumerator.hasMoreElements()) {
let win = browserEnumerator.getNext();
- win.noscriptOverlay._syncUINow();
+ //win.noscriptOverlay._syncUINow();
}
torbutton_log(3, 'Updated NoScript status for security settings');
} catch (e) {
diff --git a/src/chrome/locale/de/aboutTor.properties b/src/chrome/locale/de/aboutTor.properties
index 3233797..9d2b0df 100644
--- a/src/chrome/locale/de/aboutTor.properties
+++ b/src/chrome/locale/de/aboutTor.properties
@@ -8,13 +8,13 @@ aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
-aboutTor.donationBanner.donate=Donate Now!
+aboutTor.donationBanner.donate=Jetzt spenden!
-aboutTor.donationBanner.slogan=Tor: Powering Digital Resistance
-aboutTor.donationBanner.mozilla=Give today and Mozilla will match your gift!
+aboutTor.donationBanner.slogan=Tor: Digitalen Widerstand stärken
+aboutTor.donationBanner.mozilla=Spenden Sie heute und Mozilla wird Ihr Geschenk anpassen
-aboutTor.donationBanner.tagline1=Protecting Journalists, Whistleblowers, & Activists Since 2006
-aboutTor.donationBanner.tagline2=Networking Freedom Worldwide
-aboutTor.donationBanner.tagline3=Freedom Online
-aboutTor.donationBanner.tagline4=Fostering Free Expression Worldwide
-aboutTor.donationBanner.tagline5=Protecting the Privacy of Millions Every Day
+aboutTor.donationBanner.tagline1=Schützt seit 2006 Journalisten, Whistleblower & Aktivisten
+aboutTor.donationBanner.tagline2=Weltweite Vernetzungsfreiheit
+aboutTor.donationBanner.tagline3=Freiheit online
+aboutTor.donationBanner.tagline4=Fördert weltweit freie Meinungsäußerung.
+aboutTor.donationBanner.tagline5=Schützt täglich die Privatsphäre von Millionen.
diff --git a/src/chrome/locale/es/aboutTor.properties b/src/chrome/locale/es/aboutTor.properties
index 01cd311..f1e2d59 100644
--- a/src/chrome/locale/es/aboutTor.properties
+++ b/src/chrome/locale/es/aboutTor.properties
@@ -10,7 +10,7 @@ aboutTor.searchDDG.search.link=https://duckduckgo.com/?kl=-es
aboutTor.donationBanner.donate=¡Dona ahora!
-aboutTor.donationBanner.slogan=Tor: Powering Digital Resistance
+aboutTor.donationBanner.slogan=Tor: Impulsando la resistencia digital
aboutTor.donationBanner.mozilla=¡Dona hoy y Mozilla te la igualará!
aboutTor.donationBanner.tagline1=Protegiendo a periodistas, informantes, y activistas desde 2006
diff --git a/src/chrome/locale/fr/aboutTor.properties b/src/chrome/locale/fr/aboutTor.properties
index bdaedb7..cd844af 100644
--- a/src/chrome/locale/fr/aboutTor.properties
+++ b/src/chrome/locale/fr/aboutTor.properties
@@ -10,7 +10,7 @@ aboutTor.searchDDG.search.link=https://duckduckgo.com/
aboutTor.donationBanner.donate=Faites un don maintenant !
-aboutTor.donationBanner.slogan=Tor: Powering Digital Resistance
+aboutTor.donationBanner.slogan=Tor : la puissance de la résistance numérique
aboutTor.donationBanner.mozilla=Faites un don aujourd'hui et Mozilla fera un don équivalent !
aboutTor.donationBanner.tagline1=Nous protégeons journalistes, lanceurs d'alerte et activistes depuis 2006
diff --git a/src/chrome/locale/it/aboutTor.properties b/src/chrome/locale/it/aboutTor.properties
index 8d5b3a7..e25f90a 100644
--- a/src/chrome/locale/it/aboutTor.properties
+++ b/src/chrome/locale/it/aboutTor.properties
@@ -10,11 +10,11 @@ aboutTor.searchDDG.search.link=https://duckduckgo.com/
aboutTor.donationBanner.donate=Dona adesso!
-aboutTor.donationBanner.slogan=Tor: Powering Digital Resistance
-aboutTor.donationBanner.mozilla=Give today and Mozilla will match your gift!
+aboutTor.donationBanner.slogan=Tor: alimentiamo la resistenza digitale
+aboutTor.donationBanner.mozilla=Dona oggi e Mozilla ricambierà il regalo!
aboutTor.donationBanner.tagline1=Proteggiamo giornalisti, informatori e attivisti dal 2006
-aboutTor.donationBanner.tagline2=Networking Freedom Worldwide
+aboutTor.donationBanner.tagline2=Rendiamo la rete libera nel mondo
aboutTor.donationBanner.tagline3=Libertà online
-aboutTor.donationBanner.tagline4=Fostering Free Expression Worldwide
+aboutTor.donationBanner.tagline4=Promuoviamo la libertà di parola nel mondo
aboutTor.donationBanner.tagline5=Proteggiamo la privacy di milioni di persone ogni giorno
diff --git a/src/chrome/locale/nl/aboutTor.properties b/src/chrome/locale/nl/aboutTor.properties
index ee9cc49..521f96f 100644
--- a/src/chrome/locale/nl/aboutTor.properties
+++ b/src/chrome/locale/nl/aboutTor.properties
@@ -8,13 +8,13 @@ aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
-aboutTor.donationBanner.donate=Donate Now!
+aboutTor.donationBanner.donate=Doneer nu!
aboutTor.donationBanner.slogan=Tor: Powering Digital Resistance
aboutTor.donationBanner.mozilla=Give today and Mozilla will match your gift!
aboutTor.donationBanner.tagline1=Protecting Journalists, Whistleblowers, & Activists Since 2006
-aboutTor.donationBanner.tagline2=Networking Freedom Worldwide
-aboutTor.donationBanner.tagline3=Freedom Online
+aboutTor.donationBanner.tagline2=Wereldwijde Netwerk Vrijheid
+aboutTor.donationBanner.tagline3=Online Vrijheid
aboutTor.donationBanner.tagline4=Fostering Free Expression Worldwide
-aboutTor.donationBanner.tagline5=Protecting the Privacy of Millions Every Day
+aboutTor.donationBanner.tagline5=Beveiligt de privacy van miljoenen gebruikers per dag
diff --git a/src/chrome/locale/pl/aboutTor.properties b/src/chrome/locale/pl/aboutTor.properties
index dc12b3a..b6e1bba 100644
--- a/src/chrome/locale/pl/aboutTor.properties
+++ b/src/chrome/locale/pl/aboutTor.properties
@@ -8,13 +8,13 @@ aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
-aboutTor.donationBanner.donate=Donate Now!
+aboutTor.donationBanner.donate=Wesprzyj teraz!
-aboutTor.donationBanner.slogan=Tor: Powering Digital Resistance
-aboutTor.donationBanner.mozilla=Give today and Mozilla will match your gift!
+aboutTor.donationBanner.slogan=Tor: Zasila Odporność Cyfrową
+aboutTor.donationBanner.mozilla=Daj dzisiaj i Mozilla dopasuje Twój prezent!
-aboutTor.donationBanner.tagline1=Protecting Journalists, Whistleblowers, & Activists Since 2006
-aboutTor.donationBanner.tagline2=Networking Freedom Worldwide
-aboutTor.donationBanner.tagline3=Freedom Online
-aboutTor.donationBanner.tagline4=Fostering Free Expression Worldwide
-aboutTor.donationBanner.tagline5=Protecting the Privacy of Millions Every Day
+aboutTor.donationBanner.tagline1=Chroni dziennikarzy, informatorów i aktywistów od 2006
+aboutTor.donationBanner.tagline2=Wolność dla sieci na całym świecie
+aboutTor.donationBanner.tagline3=Wolność Online
+aboutTor.donationBanner.tagline4=Wspieranie ekspresji na całym świecie
+aboutTor.donationBanner.tagline5=Ochrona prywatności milionów każdego dnia
diff --git a/src/chrome/locale/pt-BR/aboutTor.properties b/src/chrome/locale/pt-BR/aboutTor.properties
index 84a283a..ca749aa 100644
--- a/src/chrome/locale/pt-BR/aboutTor.properties
+++ b/src/chrome/locale/pt-BR/aboutTor.properties
@@ -10,7 +10,7 @@ aboutTor.searchDDG.search.link=https://duckduckgo.com/
aboutTor.donationBanner.donate=Faça uma Doação Agora!
-aboutTor.donationBanner.slogan=Tor: Powering Digital Resistance
+aboutTor.donationBanner.slogan=Tor: Desligando a Resistência Digital
aboutTor.donationBanner.mozilla=Faça uma doação hoje e a Mozilla vai doará em dobro!
aboutTor.donationBanner.tagline1=Protegendo Jornalistas, Whistleblowers e Ativistas desde 2006
diff --git a/src/chrome/locale/ru/aboutTor.properties b/src/chrome/locale/ru/aboutTor.properties
index 695436a..527d579 100644
--- a/src/chrome/locale/ru/aboutTor.properties
+++ b/src/chrome/locale/ru/aboutTor.properties
@@ -8,13 +8,13 @@ aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
-aboutTor.donationBanner.donate=Donate Now!
+aboutTor.donationBanner.donate=Пожертвовать!
aboutTor.donationBanner.slogan=Tor: Powering Digital Resistance
aboutTor.donationBanner.mozilla=Give today and Mozilla will match your gift!
-aboutTor.donationBanner.tagline1=Protecting Journalists, Whistleblowers, & Activists Since 2006
-aboutTor.donationBanner.tagline2=Networking Freedom Worldwide
-aboutTor.donationBanner.tagline3=Freedom Online
+aboutTor.donationBanner.tagline1=Защита журналистов, информаторов и активистов с 2006 года
+aboutTor.donationBanner.tagline2=Свобода сети во всём мире
+aboutTor.donationBanner.tagline3=Свобода в сети
aboutTor.donationBanner.tagline4=Fostering Free Expression Worldwide
-aboutTor.donationBanner.tagline5=Protecting the Privacy of Millions Every Day
+aboutTor.donationBanner.tagline5=Защита конфиденциальности миллионов каждый день
diff --git a/src/chrome/locale/ru/torbutton.dtd b/src/chrome/locale/ru/torbutton.dtd
index 839bfca..fb05620 100644
--- a/src/chrome/locale/ru/torbutton.dtd
+++ b/src/chrome/locale/ru/torbutton.dtd
@@ -27,10 +27,10 @@
<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "Не защищать новые куки-файлы">
<!ENTITY torbutton.prefs.restrict_thirdparty "Блокировать сторонние куки-файлы и другие данные слежения">
<!ENTITY torbutton.prefs.restrict_thirdparty.accesskey "R">
-<!ENTITY torbutton.prefs.restrict_thirdparty_tooltip "Оставьте флажок напротив этой опции отмеченным, чтобы защитить многие функции обозревателя от элементов отслеживания ваших действий во время серфинга в сети. Модифицированные компоненты включают в себя ссылки на блобы, транслируемые каналы, кэш браузера, файлы куки, значки, заголовки аутентификации HTTP, ссылки предпросмотра, локальное хранилище, ссылки на медиаконтент, запросы OCSP, SharedWorkers и объявления сессии TLS.">
+<!ENTITY torbutton.prefs.restrict_thirdparty_tooltip "Оставьте флажок напротив этой функции отмеченным, чтобы защитить многие функции обозревателя от элементов отслеживания ваших действий во время серфинга в сети. Модифицированные компоненты включают в себя ссылки на блобы, транслируемые каналы, кэш браузера, файлы куки, значки, заголовки аутентификации HTTP, ссылки предпросмотра, локальное хранилище, ссылки на медиаконтент, запросы OCSP, SharedWorkers и объявления сессии TLS.">
<!ENTITY torbutton.prefs.resist_fingerprinting "Изменить сведения, отличающие вас от других пользователей Tor Browser">
<!ENTITY torbutton.prefs.resist_fingerprinting.accesskey "F">
-<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "Keep this box checked to hide things from websites that could be unique about you, including your computer performance, keyboard layout, locale, the location of installed plugins, the list of installed plugins, your network status, screen orientation, screen size, site-specific zoom levels, supported file types, system colors, and WebGL capabilities.">
+<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "Оставьте флажок напротив этой функции отмеченным, чтобы скрыть от веб-узлов вещи , которые могут быть уникальными для вас, включая производительность компьютера, раскладку клавиатуры, язык, расположение и список установленных плагинов, состояние сети, ориентацию и размер экрана , значения масштабирования для конкретных узлов, поддерживаемые типы файлов, системные цвета и возможности WebGL.">
<!ENTITY torbutton.prefs.sec_caption "Уровень безопасности">
<!ENTITY torbutton.prefs.sec_caption_tooltip "Ползунок безопасности позволяет вам запретить некоторые особенности обозревателя, которые могут сделать ваш браузер более уязвимым к попыткам взлома.">
<!ENTITY torbutton.prefs.sec_low "Низкий (по умолчанию)">
diff --git a/src/chrome/locale/sv/aboutTor.properties b/src/chrome/locale/sv/aboutTor.properties
index 64b0ed9..016ea20 100644
--- a/src/chrome/locale/sv/aboutTor.properties
+++ b/src/chrome/locale/sv/aboutTor.properties
@@ -8,13 +8,13 @@ aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
-aboutTor.donationBanner.donate=Donate Now!
+aboutTor.donationBanner.donate=Donera nu!
-aboutTor.donationBanner.slogan=Tor: Powering Digital Resistance
-aboutTor.donationBanner.mozilla=Give today and Mozilla will match your gift!
+aboutTor.donationBanner.slogan=Tor: Kraftfull digital resistans
+aboutTor.donationBanner.mozilla=Ge idag och Mozilla kommer att matcha din gåva!
-aboutTor.donationBanner.tagline1=Protecting Journalists, Whistleblowers, & Activists Since 2006
-aboutTor.donationBanner.tagline2=Networking Freedom Worldwide
-aboutTor.donationBanner.tagline3=Freedom Online
-aboutTor.donationBanner.tagline4=Fostering Free Expression Worldwide
-aboutTor.donationBanner.tagline5=Protecting the Privacy of Millions Every Day
+aboutTor.donationBanner.tagline1=Skyddar journalister, whistleblowers och aktivister sedan 2006
+aboutTor.donationBanner.tagline2=Nätverksfrihet över hela världen
+aboutTor.donationBanner.tagline3=Frihet på nåtet
+aboutTor.donationBanner.tagline4=Främja yttrandefriheten över hela världen
+aboutTor.donationBanner.tagline5=Skydda integriteten av miljoner varje dag
diff --git a/src/chrome/locale/tr/aboutTor.properties b/src/chrome/locale/tr/aboutTor.properties
index 3b7a7d6..e07e35d 100644
--- a/src/chrome/locale/tr/aboutTor.properties
+++ b/src/chrome/locale/tr/aboutTor.properties
@@ -10,7 +10,7 @@ aboutTor.searchDDG.search.link=https://duckduckgo.com/
aboutTor.donationBanner.donate=Bağış Yapın
-aboutTor.donationBanner.slogan=Tor: Powering Digital Resistance
+aboutTor.donationBanner.slogan=Tor: Dijital Direnişi Güçlendiriyor
aboutTor.donationBanner.mozilla=Destek olun ve Mozilla tarafından hediyenizin karşılığını alın!
aboutTor.donationBanner.tagline1=2006 Yılından Beri Gazeteciler, Yolsuzlukları Açıklayanlar ve Aktivistler Korunuyor
1
0

[torbutton/maint-1.9.7] Bug 23483: Donation banner on about:tor for 2017
by gk@torproject.org 17 Oct '17
by gk@torproject.org 17 Oct '17
17 Oct '17
commit 2e6d58145ff2de2ac705f2feebe3d594eab382a8
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Mon Sep 18 16:42:07 2017 -0700
Bug 23483: Donation banner on about:tor for 2017
(Also removes a dot from aboutTor.donationBanner.slogan)
---
src/chrome/content/aboutTor/aboutTor-content.js | 5 ++
src/chrome/content/aboutTor/aboutTor.xhtml | 19 +++-
src/chrome/content/aboutTor/donation_banner.js | 105 ++++++++++++++++++++++
src/chrome/content/aboutTor/onion-hand.png | Bin 0 -> 69055 bytes
src/chrome/content/torbutton.js | 4 +-
src/chrome/locale/en/aboutTor.properties | 2 +-
src/chrome/skin/donation_banner.css | 113 ++++++++++++++++++++++++
src/modules/donation-banner.js | 112 +++++++++++++++++++++++
8 files changed, 357 insertions(+), 3 deletions(-)
diff --git a/src/chrome/content/aboutTor/aboutTor-content.js b/src/chrome/content/aboutTor/aboutTor-content.js
index ec515bb..95e8abd 100644
--- a/src/chrome/content/aboutTor/aboutTor-content.js
+++ b/src/chrome/content/aboutTor/aboutTor-content.js
@@ -105,6 +105,11 @@ var AboutTorListener = {
else
body.removeAttribute("showmanual");
+ if (aData.bannerData)
+ body.setAttribute("banner-data", aData.bannerData);
+ else
+ body.removeAttribute("banner-data");
+
// Setting body.initialized="yes" displays the body, which must be done
// at this point because our remaining initialization depends on elements
// being visible so that their size and position are accurate.
diff --git a/src/chrome/content/aboutTor/aboutTor.xhtml b/src/chrome/content/aboutTor/aboutTor.xhtml
index 7ae4b8b..367f9a6 100644
--- a/src/chrome/content/aboutTor/aboutTor.xhtml
+++ b/src/chrome/content/aboutTor/aboutTor.xhtml
@@ -21,6 +21,8 @@
<title>&aboutTor.title;</title>
<link rel="stylesheet" type="text/css" media="all"
href="resource://torbutton/chrome/skin/aboutTor.css"/>
+ <link rel="stylesheet" type="text/css" media="all"
+ href="resource://torbutton/chrome/skin/donation_banner.css"/>
<script type="text/javascript;version=1.7">
<![CDATA[
window.addEventListener("pageshow", function() {
@@ -31,6 +33,21 @@ window.addEventListener("pageshow", function() {
</script>
</head>
<body dir="&locale.dir;">
+ <div id="banner">
+ <div id="banner-contents-container">
+ <div id="banner-tagline"><span></span></div>
+ <div id="banner-slogan"><span></span></div>
+ <a id="banner-donate-button-link"
+ href="https://www.torproject.org/donate/donate-tbb">
+ <div id="banner-donate-button">
+ <div id="banner-donate-button-inner">
+ <span></span>
+ </div>
+ </div>
+ </a>
+ </div>
+ </div>
+ <div id="banner-spacer"></div>
<div id="torstatus" class="top">
<div id="torstatus-version"/>
<div id="torstatus-image"/>
@@ -112,6 +129,6 @@ window.addEventListener("pageshow", function() {
<p>&aboutTor.footer.label;
<a href="&aboutTor.learnMore.link;">&aboutTor.learnMore.label;</a></p>
</div>
-
+ <script src="resource://torbutton/chrome/content/aboutTor/donation_banner.js"></script>
</body>
</html>
diff --git a/src/chrome/content/aboutTor/donation_banner.js b/src/chrome/content/aboutTor/donation_banner.js
new file mode 100644
index 0000000..1c95822
--- /dev/null
+++ b/src/chrome/content/aboutTor/donation_banner.js
@@ -0,0 +1,105 @@
+/* jshint esnext:true */
+
+let sel = selector => document.querySelector(selector);
+
+// Shrink the font size if the text in the given element is overflowing.
+let fitTextInElement = function (element) {
+ element.style.fontSize = "8px";
+ let defaultWidth = element.scrollWidth,
+ defaultHeight = element.scrollHeight;
+ let bestSize;
+ for (let testSize = 8; testSize <= 40; testSize += 0.5) {
+ element.style.fontSize = `${testSize}px`;
+ if (element.scrollWidth <= defaultWidth &&
+ element.scrollHeight <= defaultHeight) {
+ bestSize = testSize;
+ } else {
+ break;
+ }
+ }
+ element.style.fontSize = `${bestSize}px`;
+};
+
+// Increase padding at end to "squeeze" text, until just before
+// it gets squeezed so much that it gets longer vertically.
+let avoidWidows = function (element) {
+ element.style.paddingRight = "0px";
+ let originalWidth = element.scrollWidth;
+ let originalHeight = element.scrollHeight;
+ let bestPadding;
+ for (let testPadding = 0; testPadding < originalWidth; testPadding += 0.5) {
+ element.style.paddingRight = `${testPadding}px`;
+ if (element.scrollHeight <= originalHeight) {
+ bestPadding = testPadding;
+ } else {
+ break;
+ }
+ }
+ element.style.paddingRight = `${bestPadding}px`;
+ if (window.getComputedStyle(element).direction === "rtl") {
+ element.style.paddingLeft = element.style.paddingRight;
+ element.style.paddingRight = "0px";
+ }
+};
+
+// Resize the text inside banner to fit.
+let updateTextSizes = function () {
+ fitTextInElement(sel("#banner-tagline"));
+ fitTextInElement(sel("#banner-slogan"));
+ fitTextInElement(sel("#banner-donate-button-inner"));
+ avoidWidows(sel("#banner-tagline span"));
+};
+
+// Returns a random integer x, such that 0 <= x < max
+let randomInteger = max => Math.floor(max * Math.random());
+
+// The main donation banner function.
+let runDonationBanner = function ({ taglines, slogan, donate, shortLocale }) {
+ try {
+ sel("#banner-tagline span").innerText = taglines[randomInteger(taglines.length)];
+ sel("#banner-slogan span").innerText = slogan;
+ let donateButtonText = sel("#banner-donate-button-inner span");
+ let rtl = window.getComputedStyle(donateButtonText).direction === "rtl";
+ donateButtonText.innerHTML = donate + " " + (rtl ? "◀" : "▶");
+ sel("#banner").style.display = "flex";
+ sel("#banner-spacer").style.display = "block";
+ addEventListener("resize", updateTextSizes);
+ updateTextSizes();
+ // Add a suffix corresponding to locale so we can send user
+ // to a correctly-localized donation page via redirect.
+ sel("#banner-donate-button-link").href += "-" + shortLocale;
+ sel("#torstatus-image").style.display = "none";
+ } catch (e) {
+ // Something went wrong.
+ console.error(e);
+ sel("#banner").style.display = "none";
+ sel("#bannerSpacer").style.display = "none";
+ sel("#torstatus-image").style.display = "block";
+ }
+};
+
+// Calls callback(attributeValue) when the specified attribute changes on
+// target. Returns a zero-arg function that stops observing.
+let observeAttribute = function (target, attributeName, callback) {
+ let observer = new MutationObserver(mutations => {
+ mutations.forEach(mutation => {
+ if (mutation.type === "attributes" &&
+ mutation.attributeName === attributeName) {
+ callback(target.getAttribute(attributeName));
+ }
+ });
+ });
+ observer.observe(target, { attributes: true });
+ return () => observer.disconnect();
+};
+
+// Start the donation banner if "toron" has been set to "yes".
+let stopObserving = observeAttribute(document.body, "toron", value => {
+ stopObserving();
+ if (value === "yes") {
+ let bannerDataJSON = document.body.getAttribute("banner-data");
+ if (bannerDataJSON && bannerDataJSON.length > 0) {
+ runDonationBanner(JSON.parse(bannerDataJSON));
+ }
+ }
+});
diff --git a/src/chrome/content/aboutTor/onion-hand.png b/src/chrome/content/aboutTor/onion-hand.png
new file mode 100644
index 0000000..00a5a41
Binary files /dev/null and b/src/chrome/content/aboutTor/onion-hand.png differ
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index db6b694..955f8eb 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -13,6 +13,7 @@ let { showDialog } = Cu.import("resource://torbutton/modules/utils.js", {});
let { unescapeTorString } = Cu.import("resource://torbutton/modules/utils.js", {});
let SecurityPrefs = Cu.import("resource://torbutton/modules/security-prefs.js", {});
let { bindPrefAndInit, observe } = Cu.import("resource://torbutton/modules/utils.js", {});
+let { bannerData } = Cu.import("resource://torbutton/modules/donation-banner.js", {});
const k_tb_last_browser_version_pref = "extensions.torbutton.lastBrowserVersion";
const k_tb_browser_update_needed_pref = "extensions.torbutton.updateNeeded";
@@ -450,7 +451,8 @@ var torbutton_abouttor_message_handler = {
torOn: torbutton_tor_check_ok(),
updateNeeded: torbutton_update_is_needed(),
showManual: torbutton_show_torbrowser_manual(),
- toolbarButtonXPos: torbutton_get_toolbarbutton_xpos()
+ toolbarButtonXPos: torbutton_get_toolbarbutton_xpos(),
+ bannerData: bannerData(),
};
},
diff --git a/src/chrome/locale/en/aboutTor.properties b/src/chrome/locale/en/aboutTor.properties
index 4436e21..d0d3a64 100644
--- a/src/chrome/locale/en/aboutTor.properties
+++ b/src/chrome/locale/en/aboutTor.properties
@@ -10,7 +10,7 @@ aboutTor.searchDDG.search.link=https://duckduckgo.com/
aboutTor.donationBanner.donate=Donate Now!
-aboutTor.donationBanner.slogan=Tor: Powering Digital Resistance.
+aboutTor.donationBanner.slogan=Tor: Powering Digital Resistance
aboutTor.donationBanner.mozilla=Give today and Mozilla will match your gift!
aboutTor.donationBanner.tagline1=Protecting Journalists, Whistleblowers, & Activists Since 2006
diff --git a/src/chrome/skin/donation_banner.css b/src/chrome/skin/donation_banner.css
new file mode 100644
index 0000000..8580066
--- /dev/null
+++ b/src/chrome/skin/donation_banner.css
@@ -0,0 +1,113 @@
+#banner {
+ -khtml-user-select: none; /* Konqueror */
+ -moz-user-select: none; /* Firefox */
+ -ms-user-select: none; /* Internet Explorer/Edge */
+ -webkit-touch-callout: none; /* iOS Safari */
+ -webkit-user-select: none; /* Chrome/Safari/Opera */
+ display: none;
+ height: 150px;
+ justify-content: center;
+ left: 0px;
+ margin-top: 0px;
+ min-width: 900px;
+ opacity: 1;
+ position: absolute;
+ user-select: none;
+ width: 100%;
+ z-index: 1;
+}
+#banner:before {
+ background-color: #406;
+ background-image: url('resource://torbutton/chrome/content/aboutTor/onion-hand.png');
+ background-position: center;
+ background-size: cover;
+ content: "";
+ height: 150px;
+ left: 0px;
+ position: absolute;
+ top: 0px;
+ width: 100%;
+}
+#banner:-moz-dir(rtl):before {
+ transform: scaleX(-1);
+}
+#banner-contents-container {
+ align-items: center;
+ height: 100%;
+ max-width: 700px;
+ position: relative;
+ width: 700px;
+}
+#banner-tagline {
+ align-items: center;
+ bottom: 60px;
+ color: white;
+ display: flex;
+ font-family: monospace;
+ font-size: 8px;
+ font-weight: bold;
+ left: 85px;
+ position: absolute;
+ right: 0px;
+ text-align: start;
+ text-transform: uppercase;
+ top: 10px;
+}
+#banner-tagline:-moz-dir(rtl) {
+ left: 0px;
+ right: 85px;
+}
+#banner-slogan {
+ align-items: start;
+ bottom: 0px;
+ color: #f8f8a0;
+ display: flex;
+ font-family: monospace;
+ font-weight: bold;
+ left: 85px;
+ position: absolute;
+ right: 285px;
+ text-align: start;
+ top: 100px;
+ white-space: nowrap;
+}
+#banner-slogan:-moz-dir(rtl) {
+ left: 285px;
+ right: 85px;
+}
+#banner-donate-button {
+ background-color: #13a513;
+ border: 0px;
+ bottom: 10px;
+ color: #fbf7ef;
+ font-family: sans-serif;
+ font-size: 12px;
+ font-weight: bold;
+ left: 430px;
+ letter-spacing: -0.00em;
+ position: absolute;
+ right: 0px;
+ top: 100px;
+}
+#banner-donate-button:-moz-dir(rtl) {
+ left: 0px;
+ right: 430px;
+}
+#banner-donate-button:hover {
+ background-color: #38bc38;
+}
+#banner-donate-button-inner {
+ bottom: 6px;
+ display: flex;
+ justify-content: center;
+ left: 8px;
+ position: absolute;
+ right: 8px;
+ top: 6px;
+}
+#banner-spacer {
+ display: none;
+ height: 150px;
+ position: relative;
+ top: 0;
+}
diff --git a/src/modules/donation-banner.js b/src/modules/donation-banner.js
new file mode 100644
index 0000000..bb35e86
--- /dev/null
+++ b/src/modules/donation-banner.js
@@ -0,0 +1,112 @@
+/* jshint esversion:6 */
+
+const Cu = Components.utils;
+
+// ### Import Mozilla Services
+Cu.import("resource://gre/modules/Services.jsm");
+
+// A list of locales for which the banner has been translated.
+const kBannerLocales = [
+ "bg",
+ "da",
+ "el",
+ "en",
+ "es",
+ "fr",
+ "fr_CA",
+ "is",
+ "it",
+ "nb",
+ "tr",
+];
+
+// A list of donation page locales (at least redirects should exist).
+const kDonationPageLocales = [
+ "ar",
+ "de",
+ "en",
+ "es",
+ "fa",
+ "fr",
+ "it",
+ "ja",
+ "ko",
+ "nl",
+ "pl",
+ "pt",
+ "ru",
+ "tr",
+ "vi",
+ "zh",
+];
+
+const kPropertiesURL = "chrome://torbutton/locale/aboutTor.properties";
+const gStringBundle = Services.strings.createBundle(kPropertiesURL);
+
+// Check if we should show the banner, depends on
+// browser locale, current date, and how many times
+// we have already shown the banner.
+const shouldShowBanner = function ({ locale, shortLocale }) {
+ try {
+ // If our override test pref is true, then just show the banner regardless.
+ if (Services.prefs.getBoolPref("extensions.torbutton.testBanner", false)) {
+ return true;
+ }
+ // Don't show a banner if update is needed.
+ let updateNeeded = Services.prefs.getBoolPref("extensions.torbutton.updateNeeded");
+ if (updateNeeded) {
+ return false;
+ }
+ // Only show banner when we have that locale and if a donation redirect exists.
+ if (kBannerLocales.indexOf(locale) === -1 ||
+ kDonationPageLocales.indexOf(shortLocale) === -1) {
+ return false;
+ }
+ // Only show banner between 2017 Oct 23 and 2018 Jan 25.
+ let now = new Date();
+ let start = new Date(2017, 9, 23);
+ let end = new Date(2018, 0, 26);
+ let shownCountPref = "extensions.torbutton.donation_banner2017.shown_count";
+ if (now < start || now > end) {
+ // Clean up pref if not in use.
+ Services.prefs.clearUserPref(shownCountPref);
+ return false;
+ }
+ // Only show banner 50 times.
+ let count = 0;
+ if (Services.prefs.prefHasUserValue(shownCountPref)) {
+ count = Services.prefs.getIntPref(shownCountPref);
+ }
+ if (count >= 50) {
+ return false;
+ }
+ Services.prefs.setIntPref(shownCountPref, count+1);
+ return true;
+ } catch (e) {
+ return false;
+ }
+};
+
+// Read data needed for displaying banner on page.
+var bannerData = function () {
+ // Read short locale.
+ let locale = Services.prefs.getCharPref("general.useragent.locale");
+ let shortLocale = locale.match(/[a-zA-Z]+/)[0].toLowerCase();
+ if (!shouldShowBanner({ locale, shortLocale })) {
+ return null;
+ }
+ // Load tag lines.
+ let taglines = [];
+ for (let index = 0; index < 5; ++index) {
+ let tagline = gStringBundle.GetStringFromName(
+ "aboutTor.donationBanner.tagline" + (index + 1));
+ taglines.push(tagline);
+ }
+ // Read slogan and donate button text.
+ let slogan = gStringBundle.GetStringFromName("aboutTor.donationBanner.slogan");
+ let donate = gStringBundle.GetStringFromName("aboutTor.donationBanner.donate");
+ return JSON.stringify({ taglines, slogan, donate, shortLocale });
+};
+
+// Export utility functions for external use.
+var EXPORTED_SYMBOLS = ["bannerData"];
1
0
commit d46a79ded9874cdbb7857bbc7b75546425fe8293
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Sep 22 07:36:11 2017 +0000
Translations update
---
src/chrome/locale/ar/aboutTor.properties | 11 +++++++++++
src/chrome/locale/de/aboutTor.properties | 11 +++++++++++
src/chrome/locale/es/aboutTor.properties | 11 +++++++++++
src/chrome/locale/eu/aboutTor.properties | 11 +++++++++++
src/chrome/locale/fa/aboutTor.properties | 11 +++++++++++
src/chrome/locale/fr/aboutDialog.dtd | 6 +++---
src/chrome/locale/fr/aboutTor.dtd | 8 ++++----
src/chrome/locale/fr/aboutTor.properties | 11 +++++++++++
src/chrome/locale/fr/torbutton.dtd | 2 +-
src/chrome/locale/fr/torbutton.properties | 14 +++++++-------
src/chrome/locale/it/aboutTor.dtd | 2 +-
src/chrome/locale/it/aboutTor.properties | 11 +++++++++++
src/chrome/locale/it/torbutton.dtd | 2 +-
src/chrome/locale/ja/aboutTor.properties | 11 +++++++++++
src/chrome/locale/ko/aboutTor.properties | 11 +++++++++++
src/chrome/locale/nl/aboutTor.properties | 11 +++++++++++
src/chrome/locale/pl/aboutTor.properties | 11 +++++++++++
src/chrome/locale/pt-BR/aboutTor.properties | 11 +++++++++++
src/chrome/locale/pt-BR/torbutton.dtd | 2 +-
src/chrome/locale/ru/aboutTBUpdate.dtd | 2 +-
src/chrome/locale/ru/aboutTor.properties | 11 +++++++++++
src/chrome/locale/ru/torbutton.dtd | 2 +-
src/chrome/locale/sv/aboutTor.properties | 11 +++++++++++
src/chrome/locale/tr/aboutTor.dtd | 2 +-
src/chrome/locale/tr/aboutTor.properties | 11 +++++++++++
src/chrome/locale/tr/brand.properties | 2 +-
src/chrome/locale/tr/torbutton.dtd | 4 ++--
src/chrome/locale/vi/aboutTor.properties | 11 +++++++++++
src/chrome/locale/zh-CN/aboutTor.properties | 11 +++++++++++
29 files changed, 211 insertions(+), 24 deletions(-)
diff --git a/src/chrome/locale/ar/aboutTor.properties b/src/chrome/locale/ar/aboutTor.properties
index a93fa44..63cf16b 100644
--- a/src/chrome/locale/ar/aboutTor.properties
+++ b/src/chrome/locale/ar/aboutTor.properties
@@ -7,3 +7,14 @@ aboutTor.searchDDG.privacy=ابحث <a href="%1$S">آمنا</a> مع <a href="%2
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
+
+aboutTor.donationBanner.donate=Donate Now!
+
+aboutTor.donationBanner.slogan=Tor: Powering Digital Resistance
+aboutTor.donationBanner.mozilla=Give today and Mozilla will match your gift!
+
+aboutTor.donationBanner.tagline1=Protecting Journalists, Whistleblowers, & Activists Since 2006
+aboutTor.donationBanner.tagline2=Networking Freedom Worldwide
+aboutTor.donationBanner.tagline3=Freedom Online
+aboutTor.donationBanner.tagline4=Fostering Free Expression Worldwide
+aboutTor.donationBanner.tagline5=Protecting the Privacy of Millions Every Day
diff --git a/src/chrome/locale/de/aboutTor.properties b/src/chrome/locale/de/aboutTor.properties
index 132a3d0..3233797 100644
--- a/src/chrome/locale/de/aboutTor.properties
+++ b/src/chrome/locale/de/aboutTor.properties
@@ -7,3 +7,14 @@ aboutTor.searchDDG.privacy=<a href="%1$S">Sicheres</a> Suchen mit <a href="%2$S"
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
+
+aboutTor.donationBanner.donate=Donate Now!
+
+aboutTor.donationBanner.slogan=Tor: Powering Digital Resistance
+aboutTor.donationBanner.mozilla=Give today and Mozilla will match your gift!
+
+aboutTor.donationBanner.tagline1=Protecting Journalists, Whistleblowers, & Activists Since 2006
+aboutTor.donationBanner.tagline2=Networking Freedom Worldwide
+aboutTor.donationBanner.tagline3=Freedom Online
+aboutTor.donationBanner.tagline4=Fostering Free Expression Worldwide
+aboutTor.donationBanner.tagline5=Protecting the Privacy of Millions Every Day
diff --git a/src/chrome/locale/es/aboutTor.properties b/src/chrome/locale/es/aboutTor.properties
index 2c464fb..01cd311 100644
--- a/src/chrome/locale/es/aboutTor.properties
+++ b/src/chrome/locale/es/aboutTor.properties
@@ -7,3 +7,14 @@ aboutTor.searchDDG.privacy=Busque <a href="%1$S">de forma segura</a> con <a href
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy?kl=-es
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/?kl=-es
+
+aboutTor.donationBanner.donate=¡Dona ahora!
+
+aboutTor.donationBanner.slogan=Tor: Powering Digital Resistance
+aboutTor.donationBanner.mozilla=¡Dona hoy y Mozilla te la igualará!
+
+aboutTor.donationBanner.tagline1=Protegiendo a periodistas, informantes, y activistas desde 2006
+aboutTor.donationBanner.tagline2=Libertad de interconexión por todo el mundo
+aboutTor.donationBanner.tagline3=Libertad en la red
+aboutTor.donationBanner.tagline4=Fomentando la libertad de expresión por todo el mundo
+aboutTor.donationBanner.tagline5=Protegiendo la privacidad de millones de personas cada día
diff --git a/src/chrome/locale/eu/aboutTor.properties b/src/chrome/locale/eu/aboutTor.properties
index ffd89fe..54adb53 100644
--- a/src/chrome/locale/eu/aboutTor.properties
+++ b/src/chrome/locale/eu/aboutTor.properties
@@ -7,3 +7,14 @@ aboutTor.searchDDG.privacy=Bilatu<a href="%1$S">modu seguruan</a> ondokoarekin:
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
+
+aboutTor.donationBanner.donate=Donate Now!
+
+aboutTor.donationBanner.slogan=Tor: Powering Digital Resistance
+aboutTor.donationBanner.mozilla=Give today and Mozilla will match your gift!
+
+aboutTor.donationBanner.tagline1=Protecting Journalists, Whistleblowers, & Activists Since 2006
+aboutTor.donationBanner.tagline2=Networking Freedom Worldwide
+aboutTor.donationBanner.tagline3=Freedom Online
+aboutTor.donationBanner.tagline4=Fostering Free Expression Worldwide
+aboutTor.donationBanner.tagline5=Protecting the Privacy of Millions Every Day
diff --git a/src/chrome/locale/fa/aboutTor.properties b/src/chrome/locale/fa/aboutTor.properties
index 8b819db..3458e6e 100644
--- a/src/chrome/locale/fa/aboutTor.properties
+++ b/src/chrome/locale/fa/aboutTor.properties
@@ -7,3 +7,14 @@ aboutTor.searchDDG.privacy=جستجو <a href="%1$S">ایمن</a> با <a href="
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
+
+aboutTor.donationBanner.donate=Donate Now!
+
+aboutTor.donationBanner.slogan=Tor: Powering Digital Resistance
+aboutTor.donationBanner.mozilla=Give today and Mozilla will match your gift!
+
+aboutTor.donationBanner.tagline1=Protecting Journalists, Whistleblowers, & Activists Since 2006
+aboutTor.donationBanner.tagline2=Networking Freedom Worldwide
+aboutTor.donationBanner.tagline3=Freedom Online
+aboutTor.donationBanner.tagline4=Fostering Free Expression Worldwide
+aboutTor.donationBanner.tagline5=Protecting the Privacy of Millions Every Day
diff --git a/src/chrome/locale/fr/aboutDialog.dtd b/src/chrome/locale/fr/aboutDialog.dtd
index 4b7da91..bc47fce 100644
--- a/src/chrome/locale/fr/aboutDialog.dtd
+++ b/src/chrome/locale/fr/aboutDialog.dtd
@@ -3,7 +3,7 @@
<!ENTITY project.tpoLink "le &vendorShortName;">
<!ENTITY project.end ", une organisation sans but lucratif travaillant à la protection de vos renseignements personnels et de votre liberté en ligne.">
-<!ENTITY help.start "Voulez-vous aider ?">
+<!ENTITY help.start "Voulez-vous aider ?">
<!-- LOCALIZATION NOTE (help.donate): This is a link title that links to https://www.torproject.org/donate/donate.html.en -->
<!ENTITY help.donateLink "Faites un don">
<!ENTITY help.or "ou">
@@ -11,9 +11,9 @@
<!ENTITY help.getInvolvedLink "impliquez-vous">
<!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 "Des questions ?">
+<!ENTITY bottomLinks.questions "Des questions ?">
<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to https://www.torproject.org/getinvolved/relays -->
-<!ENTITY bottomLinks.grow "Aidez à la croissance du réseau Tor !">
+<!ENTITY bottomLinks.grow "Aidez à la croissance du réseau Tor !">
<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to about:license -->
<!ENTITY bottomLinks.license "Informations de licence">
<!ENTITY tor.TrademarkStatement "« Tor » et le « logo Oignon » sont des marques déposées de « The Tor Project, Inc. »">
diff --git a/src/chrome/locale/fr/aboutTor.dtd b/src/chrome/locale/fr/aboutTor.dtd
index 6b5899d..8b1e3b1 100644
--- a/src/chrome/locale/fr/aboutTor.dtd
+++ b/src/chrome/locale/fr/aboutTor.dtd
@@ -15,7 +15,7 @@
<!ENTITY aboutTor.success.label "Bienvenue dans le navigateur Tor">
<!ENTITY aboutTor.success2.label "Connecté au réseau Tor.">
<!ENTITY aboutTor.success3.label "Vous êtes maintenant libre de naviguer sur Internet anonymement.">
-<!ENTITY aboutTor.failure.label "Une erreur s'est produite !">
+<!ENTITY aboutTor.failure.label "Une erreur s'est produite !">
<!ENTITY aboutTor.failure2.label "Tor ne fonctionne pas dans ce navigateur.">
<!ENTITY aboutTor.search.label "Rechercher">
@@ -25,13 +25,13 @@
<!ENTITY aboutTor.torInfo2.label "Pays & adresse IP :">
<!ENTITY aboutTor.torInfo3.label "Nœud de sortie :">
<!ENTITY aboutTor.torInfo4.label "Ce serveur ne journalise aucune information sur les visteurs.">
-<!ENTITY aboutTor.whatnextQuestion.label "Que faire ensuite ?">
-<!ENTITY aboutTor.whatnextAnswer.label "Tor n'est PAS tout ce dont vous avez besoin pour naviguer anonymement! Vous aurez peut-être à changer certaines de vos habitudes de navigation pour garder votre identité en sécurité.">
+<!ENTITY aboutTor.whatnextQuestion.label "Que faire ensuite ?">
+<!ENTITY aboutTor.whatnextAnswer.label "Tor n'est PAS tout ce dont vous avez besoin pour naviguer anonymement ! Vous aurez peut-être à changer certaines de vos habitudes de navigation pour garder votre identité en sécurité.">
<!ENTITY aboutTor.whatnext.label "Conseils pour rester anonyme »">
<!ENTITY aboutTor.whatnext.link "https://www.torproject.org/download/download.html#warning">
<!ENTITY aboutTor.torbrowser_user_manual.accesskey "G">
<!ENTITY aboutTor.torbrowser_user_manual.label "Le guide d'utilisation du navigateur Tor">
-<!ENTITY aboutTor.helpInfo1.label "Vous pouvez aider !">
+<!ENTITY aboutTor.helpInfo1.label "Vous pouvez aider !">
<!ENTITY aboutTor.helpInfo2.label "Vous pouvez aider à rendre le réseau Tor plus rapide et plus puissant de plusieurs façons :">
<!ENTITY aboutTor.helpInfo3.label "Faire tourner un nœud relais Tor »">
<!ENTITY aboutTor.helpInfo3.link "https://www.torproject.org/docs/tor-doc-relay.html">
diff --git a/src/chrome/locale/fr/aboutTor.properties b/src/chrome/locale/fr/aboutTor.properties
index c5bec4c..bdaedb7 100644
--- a/src/chrome/locale/fr/aboutTor.properties
+++ b/src/chrome/locale/fr/aboutTor.properties
@@ -7,3 +7,14 @@ aboutTor.searchDDG.privacy=Rechercher <a href="%1$S">en toute sécurité</a> ave
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
+
+aboutTor.donationBanner.donate=Faites un don maintenant !
+
+aboutTor.donationBanner.slogan=Tor: Powering Digital Resistance
+aboutTor.donationBanner.mozilla=Faites un don aujourd'hui et Mozilla fera un don équivalent !
+
+aboutTor.donationBanner.tagline1=Nous protégeons journalistes, lanceurs d'alerte et activistes depuis 2006
+aboutTor.donationBanner.tagline2=Vers un réseau mondial de liberté
+aboutTor.donationBanner.tagline3=La liberté en ligne
+aboutTor.donationBanner.tagline4=Pour favoriser la libre expression dans le monde entier
+aboutTor.donationBanner.tagline5=Nous protégeons les renseignements personnels de millions de personnes, chaque jour
diff --git a/src/chrome/locale/fr/torbutton.dtd b/src/chrome/locale/fr/torbutton.dtd
index cbbbb95..978cbc1 100644
--- a/src/chrome/locale/fr/torbutton.dtd
+++ b/src/chrome/locale/fr/torbutton.dtd
@@ -37,7 +37,7 @@
<!ENTITY torbutton.prefs.sec_low_usable_desc "Cela offre l'expérience la plus conviviale.">
<!ENTITY torbutton.prefs.sec_low_desc "À ce niveau de sécurité, toutes les fonctions du navigateur sont activées.">
<!ENTITY torbutton.prefs.sec_font_rend_svg_tooltip "Le mécanisme de rendu de police SVG OpenType est désactivé.">
-<!ENTITY torbutton.prefs.sec_gen_desc "À ce niveau de sécurité, les changements suivants sont applicables (survolez avec la souris pour plus de détails ) :">
+<!ENTITY torbutton.prefs.sec_gen_desc "À ce niveau de sécurité, les changements suivants sont applicables (survolez avec la souris pour plus de détails) :">
<!ENTITY torbutton.prefs.sec_html5_desc "Le contenu HTML5 vidéo et audio devient « cliquer pour lire » avec NoScript.">
<!ENTITY torbutton.prefs.sec_html5_tooltip "Pour certains sites, vous aurez peut-être à utiliser le bouton NoScript de la barre d'outils pour activer ces objets multimédias.">
<!ENTITY torbutton.prefs.sec_some_jit_desc "Certaines optimisations de performance de JavaScript sont désactivées.">
diff --git a/src/chrome/locale/fr/torbutton.properties b/src/chrome/locale/fr/torbutton.properties
index 907babc..945dc11 100644
--- a/src/chrome/locale/fr/torbutton.properties
+++ b/src/chrome/locale/fr/torbutton.properties
@@ -11,22 +11,22 @@ torbutton.panel.tooltip.enabled = Cliquer pour désactiver Tor
torbutton.panel.label.disabled = Tor Inactif
torbutton.panel.label.enabled = Tor Actif
extensions.torbutton(a)torproject.org.description = BoutonTor fournit un bouton pour configurer les paramètres de Tor et vider facilement les données de navigation privée.
-torbutton.popup.external.title = Télécharger un type de fichier externe
+torbutton.popup.external.title = Télécharger un type de fichier externe ?
torbutton.popup.external.app = Le Navigateur Tor ne peut pas afficher ce fichier. Il est necessaire de l'ouvrir avec une autre application.
torbutton.popup.external.note = Certains types de fichiers peuvent causer des connexions à l'Internet sans passer par Tor pour certaines applications
torbutton.popup.external.suggest = Par sécurité, vous ne devriez ouvrir les fichiers téléchargés que lorsque vous êtes hors ligne, ou en utilisant un CD autonome Tor comme Tails.\n
torbutton.popup.launch = Télécharger le fichier
torbutton.popup.cancel = Annuler
torbutton.popup.dontask = Télécharger automatiquement à partir de maintenant
-torbutton.popup.prompted_language = Pour renforcer votre anonymat, BoutonTor peut demander la version anglaise des pages Web. Les pages que vous préférez lire dans votre langue préférée pourraient alors s'afficher en anglais.\n\nVoulez-vous demander des pages Web en anglais pour améliorer votre anonymat ?
-torbutton.popup.no_newnym = BoutonTor ne peut pas vous délivrer une nouvelle identité de façon sûre. Il n'a pas accès au port de contrôle de Tor.\n\nUtilisez-vous l'offre groupée de navigation Tor ?
+torbutton.popup.prompted_language = Pour renforcer votre anonymat, BoutonTor peut demander la version anglaise des pages Web. Les pages que vous préférez lire dans votre langue préférée pourraient alors s'afficher en anglais.\n\nVoulez-vous demander des pages Web en anglais pour améliorer votre anonymat ?
+torbutton.popup.no_newnym = BoutonTor ne peut pas vous attribuer une nouvelle identité de façon sûre. Il n'a pas accès au port de contrôle de Tor.\n\nUtilisez-vous l'offre groupée de navigation Tor ?
torbutton.title.prompt_torbrowser = Informations importantes concernant BoutonTor
torbutton.popup.prompt_torbrowser = BoutonTor fonctionne différemment maintenant : vous ne pouvez plus le désactiver.\n\nNous avons effectué ce changement car il n'est pas sécuritaire d'utiliser BoutonTor dans un navigateur qui est également utiliser pour une navigation sans Tor. Trop de bogues ne pouvaient être réglés autrement.\n\nSi vous voulez continuer à utiliser Firefox normalement, vous devriez désinstaller BoutonTor et télécharger l'offre groupée de navigation Tor. Les propriétés de confidentialité du navigateur Tor sont aussi supérieures à celles de Firefox, même s'il est utilisé avec BoutonTor.\n\nPour enlever BoutonTor, allez dans Outils->Modules complémentaires->Extensions et cliquer sur Supprimer à coté de BoutonTor.
-torbutton.popup.short_torbrowser = Informations importantes concernant BoutonTor !\n\nBoutonTor est dorénavant toujours activé.\n\nCliquer sur BoutonTor pour plus d'informations.
+torbutton.popup.short_torbrowser = Informations importantes concernant BoutonTor !\n\nBoutonTor est toujours activé dorénavant.\n\nCliquer sur BoutonTor pour plus d'informations.
-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.confirm_plugins = Les greffons tels que Flash peuvent nuire à vos 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 = Le navigateur Tor fermera toutes les fenêtres et onglets. Toutes les sessions des sites Web seront perdues.\n\nRedémarrer le navigateur Tor maintenant pour réinitialiser votre identité ?\n\n
+torbutton.popup.confirm_newnym = Le navigateur Tor fermera tous les fenêtres et onglets. Toutes les sessions des sites Web seront perdues.\n\nRedémarrer le navigateur Tor maintenant pour réinitialiser votre identité ?\n\n
torbutton.slider_notification = Le menu de l'oignon vert propose maintenant un curseur de sécurité qui vous laisse ajuster votre niveau de sécurité. Découvrez-le !
torbutton.slider_notification_button = Ouvrir préférences de sécurité
@@ -34,7 +34,7 @@ torbutton.slider_notification_button = Ouvrir préférences de sécurité
torbutton.maximize_warning = Maximiser le navigateur Tor à l'écran peut permettre aux sites Web de déterminer votre taille de moniteur, laquelle peut être utilisée pour vous suivre à la trace. Nous recommandons que vous laissiez les fenêtres du navigateur Tor dans leur taille d'origine.
# Canvas permission prompt. Strings are kept here for ease of translation.
-canvas.siteprompt=Ce site Web (%S) a essayé d'extraire des données d'image de canevas HTML5, qui pourraient être utilisées pour identifier votre ordinateur de façon unique.\n\nLe navigateur Tor devrait-il permettre à ce site Web d'extraire des données d'image de canevas HTML5 ?
+canvas.siteprompt=Ce site Web (%S) a essayé d'extraire des données d'image de canevas HTML5, qui pourraient être utilisées pour identifier votre ordinateur de façon unique.\n\nLe navigateur Tor devrait-il permettre à ce site Web d'extraire des données d'image de canevas HTML5 ?
canvas.notNow=Pas maintenant
canvas.notNowAccessKey=P
canvas.allow=Autoriser à l’avenir
diff --git a/src/chrome/locale/it/aboutTor.dtd b/src/chrome/locale/it/aboutTor.dtd
index 2794b02..a016f6b 100644
--- a/src/chrome/locale/it/aboutTor.dtd
+++ b/src/chrome/locale/it/aboutTor.dtd
@@ -12,7 +12,7 @@
<!ENTITY aboutTor.check.label "Test Impostazioni della Rete Tor">
-<!ENTITY aboutTor.success.label "Benvenuto nel Browser TOR">
+<!ENTITY aboutTor.success.label "Benvenuto nel browser TOR">
<!ENTITY aboutTor.success2.label "Connesso alla rete TOR.">
<!ENTITY aboutTor.success3.label "Ora sei libero di navigare in internet anonimamente.">
<!ENTITY aboutTor.failure.label "Qualcosa è Andato Storto!">
diff --git a/src/chrome/locale/it/aboutTor.properties b/src/chrome/locale/it/aboutTor.properties
index ebd910f..8d5b3a7 100644
--- a/src/chrome/locale/it/aboutTor.properties
+++ b/src/chrome/locale/it/aboutTor.properties
@@ -7,3 +7,14 @@ aboutTor.searchDDG.privacy=Cerca <a href="%1$S">in modo sicuro</a> con <a href="
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
+
+aboutTor.donationBanner.donate=Dona adesso!
+
+aboutTor.donationBanner.slogan=Tor: Powering Digital Resistance
+aboutTor.donationBanner.mozilla=Give today and Mozilla will match your gift!
+
+aboutTor.donationBanner.tagline1=Proteggiamo giornalisti, informatori e attivisti dal 2006
+aboutTor.donationBanner.tagline2=Networking Freedom Worldwide
+aboutTor.donationBanner.tagline3=Libertà online
+aboutTor.donationBanner.tagline4=Fostering Free Expression Worldwide
+aboutTor.donationBanner.tagline5=Proteggiamo la privacy di milioni di persone ogni giorno
diff --git a/src/chrome/locale/it/torbutton.dtd b/src/chrome/locale/it/torbutton.dtd
index a18ff01..d5aed79 100644
--- a/src/chrome/locale/it/torbutton.dtd
+++ b/src/chrome/locale/it/torbutton.dtd
@@ -12,7 +12,7 @@
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.button.tooltip "Fai clic per inizializzare Torbutton">
<!ENTITY torbutton.prefs.security_settings "Impostazioni di Sicurezza Tor Browser">
-<!ENTITY torbutton.prefs.restore_defaults "Ripristina Defaults">
+<!ENTITY torbutton.prefs.restore_defaults "Ripristina Default">
<!ENTITY torbutton.prefs.custom_warning "Le tue impostazioni del browser sembrano avere preferenze di sicurezza insolite. Per motivi di sicurezza e privacy, ti consigliamo di scegliere uno dei livelli di sicurezza predefiniti.">
<!ENTITY torbutton.cookiedialog.title "Gestisci protezione Cookies">
<!ENTITY torbutton.cookiedialog.lockCol "Protetto">
diff --git a/src/chrome/locale/ja/aboutTor.properties b/src/chrome/locale/ja/aboutTor.properties
index 04863e3..6fdf984 100644
--- a/src/chrome/locale/ja/aboutTor.properties
+++ b/src/chrome/locale/ja/aboutTor.properties
@@ -7,3 +7,14 @@ aboutTor.searchDDG.privacy=<a href="%2$S">DuckDuckGo</a>で<a href="%1$S">安全
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
+
+aboutTor.donationBanner.donate=Donate Now!
+
+aboutTor.donationBanner.slogan=Tor: Powering Digital Resistance
+aboutTor.donationBanner.mozilla=Give today and Mozilla will match your gift!
+
+aboutTor.donationBanner.tagline1=Protecting Journalists, Whistleblowers, & Activists Since 2006
+aboutTor.donationBanner.tagline2=Networking Freedom Worldwide
+aboutTor.donationBanner.tagline3=Freedom Online
+aboutTor.donationBanner.tagline4=Fostering Free Expression Worldwide
+aboutTor.donationBanner.tagline5=Protecting the Privacy of Millions Every Day
diff --git a/src/chrome/locale/ko/aboutTor.properties b/src/chrome/locale/ko/aboutTor.properties
index 33ce0e8..d09b69c 100644
--- a/src/chrome/locale/ko/aboutTor.properties
+++ b/src/chrome/locale/ko/aboutTor.properties
@@ -7,3 +7,14 @@ aboutTor.searchDDG.privacy=<a href="%2$S">DuckDuckGo</a>를 통해 <a href="%1$S
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
+
+aboutTor.donationBanner.donate=Donate Now!
+
+aboutTor.donationBanner.slogan=Tor: Powering Digital Resistance
+aboutTor.donationBanner.mozilla=Give today and Mozilla will match your gift!
+
+aboutTor.donationBanner.tagline1=Protecting Journalists, Whistleblowers, & Activists Since 2006
+aboutTor.donationBanner.tagline2=Networking Freedom Worldwide
+aboutTor.donationBanner.tagline3=Freedom Online
+aboutTor.donationBanner.tagline4=Fostering Free Expression Worldwide
+aboutTor.donationBanner.tagline5=Protecting the Privacy of Millions Every Day
diff --git a/src/chrome/locale/nl/aboutTor.properties b/src/chrome/locale/nl/aboutTor.properties
index a85279a..ee9cc49 100644
--- a/src/chrome/locale/nl/aboutTor.properties
+++ b/src/chrome/locale/nl/aboutTor.properties
@@ -7,3 +7,14 @@ aboutTor.searchDDG.privacy=<a href="%1$S">Veilig</a> zoeken met <a href="%2$S">D
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
+
+aboutTor.donationBanner.donate=Donate Now!
+
+aboutTor.donationBanner.slogan=Tor: Powering Digital Resistance
+aboutTor.donationBanner.mozilla=Give today and Mozilla will match your gift!
+
+aboutTor.donationBanner.tagline1=Protecting Journalists, Whistleblowers, & Activists Since 2006
+aboutTor.donationBanner.tagline2=Networking Freedom Worldwide
+aboutTor.donationBanner.tagline3=Freedom Online
+aboutTor.donationBanner.tagline4=Fostering Free Expression Worldwide
+aboutTor.donationBanner.tagline5=Protecting the Privacy of Millions Every Day
diff --git a/src/chrome/locale/pl/aboutTor.properties b/src/chrome/locale/pl/aboutTor.properties
index 28f1e0b..dc12b3a 100644
--- a/src/chrome/locale/pl/aboutTor.properties
+++ b/src/chrome/locale/pl/aboutTor.properties
@@ -7,3 +7,14 @@ aboutTor.searchDDG.privacy=Szukaj <a href="%1$S">bezpiecznie</a> używając wysz
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
+
+aboutTor.donationBanner.donate=Donate Now!
+
+aboutTor.donationBanner.slogan=Tor: Powering Digital Resistance
+aboutTor.donationBanner.mozilla=Give today and Mozilla will match your gift!
+
+aboutTor.donationBanner.tagline1=Protecting Journalists, Whistleblowers, & Activists Since 2006
+aboutTor.donationBanner.tagline2=Networking Freedom Worldwide
+aboutTor.donationBanner.tagline3=Freedom Online
+aboutTor.donationBanner.tagline4=Fostering Free Expression Worldwide
+aboutTor.donationBanner.tagline5=Protecting the Privacy of Millions Every Day
diff --git a/src/chrome/locale/pt-BR/aboutTor.properties b/src/chrome/locale/pt-BR/aboutTor.properties
index 76e2b42..84a283a 100644
--- a/src/chrome/locale/pt-BR/aboutTor.properties
+++ b/src/chrome/locale/pt-BR/aboutTor.properties
@@ -7,3 +7,14 @@ aboutTor.searchDDG.privacy=Buscar <a href="%1$S">com segurança</a> utilizando <
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
+
+aboutTor.donationBanner.donate=Faça uma Doação Agora!
+
+aboutTor.donationBanner.slogan=Tor: Powering Digital Resistance
+aboutTor.donationBanner.mozilla=Faça uma doação hoje e a Mozilla vai doará em dobro!
+
+aboutTor.donationBanner.tagline1=Protegendo Jornalistas, Whistleblowers e Ativistas desde 2006
+aboutTor.donationBanner.tagline2=Construindo Redes de Liberdade no Mundo Todo
+aboutTor.donationBanner.tagline3=Liberdade na Internet
+aboutTor.donationBanner.tagline4=Promovendo Liberdade de Expressão no Mundo Todo
+aboutTor.donationBanner.tagline5=Protegendo a Privacidade de Milhões de Pessoas Todos os Dias
diff --git a/src/chrome/locale/pt-BR/torbutton.dtd b/src/chrome/locale/pt-BR/torbutton.dtd
index c30395b..4cc12cb 100644
--- a/src/chrome/locale/pt-BR/torbutton.dtd
+++ b/src/chrome/locale/pt-BR/torbutton.dtd
@@ -6,7 +6,7 @@
<!ENTITY torbutton.context_menu.preferences.key "S">
<!ENTITY torbutton.context_menu.networksettings "Configurações da Rede Tor...">
<!ENTITY torbutton.context_menu.networksettings.key "N">
-<!ENTITY torbutton.context_menu.downloadUpdate "Aplicar Atualizações do Navegador Tor...">
+<!ENTITY torbutton.context_menu.downloadUpdate "Procurar Atualizações do Navegador Tor...">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
<!ENTITY torbutton.context_menu.cookieProtections "Proteções contra Cookies...">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
diff --git a/src/chrome/locale/ru/aboutTBUpdate.dtd b/src/chrome/locale/ru/aboutTBUpdate.dtd
index 21221ac..e516637 100644
--- a/src/chrome/locale/ru/aboutTBUpdate.dtd
+++ b/src/chrome/locale/ru/aboutTBUpdate.dtd
@@ -1,5 +1,5 @@
<!ENTITY aboutTBUpdate.title "Обновление браузера Tor">
-<!ENTITY aboutTBUpdate.updated "Браузер Tor обновлён.">
+<!ENTITY aboutTBUpdate.updated "Tor Browser обновлен.">
<!ENTITY aboutTBUpdate.linkPrefix "Чтобы получить наиболее свежую информацию об этом выпуске,">
<!ENTITY aboutTBUpdate.linkLabel "посетите наш вебсайт">
<!ENTITY aboutTBUpdate.linkSuffix ".">
diff --git a/src/chrome/locale/ru/aboutTor.properties b/src/chrome/locale/ru/aboutTor.properties
index 2c1cba6..695436a 100644
--- a/src/chrome/locale/ru/aboutTor.properties
+++ b/src/chrome/locale/ru/aboutTor.properties
@@ -7,3 +7,14 @@ aboutTor.searchDDG.privacy=Ищите<a href="%1$S">безопасно</a> с <a
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
+
+aboutTor.donationBanner.donate=Donate Now!
+
+aboutTor.donationBanner.slogan=Tor: Powering Digital Resistance
+aboutTor.donationBanner.mozilla=Give today and Mozilla will match your gift!
+
+aboutTor.donationBanner.tagline1=Protecting Journalists, Whistleblowers, & Activists Since 2006
+aboutTor.donationBanner.tagline2=Networking Freedom Worldwide
+aboutTor.donationBanner.tagline3=Freedom Online
+aboutTor.donationBanner.tagline4=Fostering Free Expression Worldwide
+aboutTor.donationBanner.tagline5=Protecting the Privacy of Millions Every Day
diff --git a/src/chrome/locale/ru/torbutton.dtd b/src/chrome/locale/ru/torbutton.dtd
index 32018fe..839bfca 100644
--- a/src/chrome/locale/ru/torbutton.dtd
+++ b/src/chrome/locale/ru/torbutton.dtd
@@ -27,7 +27,7 @@
<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "Не защищать новые куки-файлы">
<!ENTITY torbutton.prefs.restrict_thirdparty "Блокировать сторонние куки-файлы и другие данные слежения">
<!ENTITY torbutton.prefs.restrict_thirdparty.accesskey "R">
-<!ENTITY torbutton.prefs.restrict_thirdparty_tooltip "Оставьте флажок напротив этой опции отмеченным, чтобы защитить многие функции обозревателя от элементов отслеживания ваших действий во время сёрфинга в сети. Модифицированные компоненты включают в себя ссылки на блобы, транслируемые каналы, кэш браузера, файлы куки, значки, заголовки аутентификации HTTP, ссылки предпросмотра, локальное хранилище, ссылки на медиаконтент, запросы OCSP, SharedWorkers и объявления сессии TLS.">
+<!ENTITY torbutton.prefs.restrict_thirdparty_tooltip "Оставьте флажок напротив этой опции отмеченным, чтобы защитить многие функции обозревателя от элементов отслеживания ваших действий во время серфинга в сети. Модифицированные компоненты включают в себя ссылки на блобы, транслируемые каналы, кэш браузера, файлы куки, значки, заголовки аутентификации HTTP, ссылки предпросмотра, локальное хранилище, ссылки на медиаконтент, запросы OCSP, SharedWorkers и объявления сессии TLS.">
<!ENTITY torbutton.prefs.resist_fingerprinting "Изменить сведения, отличающие вас от других пользователей Tor Browser">
<!ENTITY torbutton.prefs.resist_fingerprinting.accesskey "F">
<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "Keep this box checked to hide things from websites that could be unique about you, including your computer performance, keyboard layout, locale, the location of installed plugins, the list of installed plugins, your network status, screen orientation, screen size, site-specific zoom levels, supported file types, system colors, and WebGL capabilities.">
diff --git a/src/chrome/locale/sv/aboutTor.properties b/src/chrome/locale/sv/aboutTor.properties
index 3f8d276..64b0ed9 100644
--- a/src/chrome/locale/sv/aboutTor.properties
+++ b/src/chrome/locale/sv/aboutTor.properties
@@ -7,3 +7,14 @@ aboutTor.searchDDG.privacy=Sök <a href="%1$S">säkert</a> med <a href="%2$S">Du
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
+
+aboutTor.donationBanner.donate=Donate Now!
+
+aboutTor.donationBanner.slogan=Tor: Powering Digital Resistance
+aboutTor.donationBanner.mozilla=Give today and Mozilla will match your gift!
+
+aboutTor.donationBanner.tagline1=Protecting Journalists, Whistleblowers, & Activists Since 2006
+aboutTor.donationBanner.tagline2=Networking Freedom Worldwide
+aboutTor.donationBanner.tagline3=Freedom Online
+aboutTor.donationBanner.tagline4=Fostering Free Expression Worldwide
+aboutTor.donationBanner.tagline5=Protecting the Privacy of Millions Every Day
diff --git a/src/chrome/locale/tr/aboutTor.dtd b/src/chrome/locale/tr/aboutTor.dtd
index c777790..9dd32fb 100644
--- a/src/chrome/locale/tr/aboutTor.dtd
+++ b/src/chrome/locale/tr/aboutTor.dtd
@@ -35,7 +35,7 @@
<!ENTITY aboutTor.helpInfo2.label "Tor ağını daha hızlı güçlü kılmaya yardımcı olabilmenin çeşitli yolları var:">
<!ENTITY aboutTor.helpInfo3.label "Tor Aktarıcı Noktası Çalıştır »">
<!ENTITY aboutTor.helpInfo3.link "https://www.torproject.org/docs/tor-doc-relay.html.en">
-<!ENTITY aboutTor.helpInfo4.label "Gönüllü Hizmetlerde Bulunun »">
+<!ENTITY aboutTor.helpInfo4.label "Gönüllü Destekte Bulunun »">
<!ENTITY aboutTor.helpInfo4.link "https://www.torproject.org/getinvolved/volunteer.html.en">
<!ENTITY aboutTor.helpInfo5.label "Bağış Yapın »">
<!ENTITY aboutTor.helpInfo5.link "https://www.torproject.org/donate/donate.html.en">
diff --git a/src/chrome/locale/tr/aboutTor.properties b/src/chrome/locale/tr/aboutTor.properties
index 17ed50d..3b7a7d6 100644
--- a/src/chrome/locale/tr/aboutTor.properties
+++ b/src/chrome/locale/tr/aboutTor.properties
@@ -7,3 +7,14 @@ aboutTor.searchDDG.privacy=<a href="%2$S">DuckDuckGo</a> kullanarak <a href="%1$
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
+
+aboutTor.donationBanner.donate=Bağış Yapın
+
+aboutTor.donationBanner.slogan=Tor: Powering Digital Resistance
+aboutTor.donationBanner.mozilla=Destek olun ve Mozilla tarafından hediyenizin karşılığını alın!
+
+aboutTor.donationBanner.tagline1=2006 Yılından Beri Gazeteciler, Yolsuzlukları Açıklayanlar ve Aktivistler Korunuyor
+aboutTor.donationBanner.tagline2=Tüm Dünyada Ağ Özgürlüğü
+aboutTor.donationBanner.tagline3=Çevrimiçi Özgürlük
+aboutTor.donationBanner.tagline4=Tüm Dünyada İfade Özgürlüğü Destekleniyor
+aboutTor.donationBanner.tagline5=Her Gün Milyonlarca Kişinin Gizliliği Korunuyor
diff --git a/src/chrome/locale/tr/brand.properties b/src/chrome/locale/tr/brand.properties
index 2c16808..7c76426 100644
--- a/src/chrome/locale/tr/brand.properties
+++ b/src/chrome/locale/tr/brand.properties
@@ -8,7 +8,7 @@ brandFullName=Tor Browser
vendorShortName=Tor Projesi
homePageSingleStartMain=Firefox Start, içinde arama bulunan hızlı açılış sayfası
-homePageImport=%S üzerinden açılış sayfanızı alın.
+homePageImport=%S üzerinden açılış sayfanızı içe aktarın.
homePageMigrationPageTitle=Açılış Sayfası Seçimi
homePageMigrationDescription=Lütfen kullanmak istediğiniz açılış sayfasını seçin:
diff --git a/src/chrome/locale/tr/torbutton.dtd b/src/chrome/locale/tr/torbutton.dtd
index 47faf53..7d1fc7e 100644
--- a/src/chrome/locale/tr/torbutton.dtd
+++ b/src/chrome/locale/tr/torbutton.dtd
@@ -30,7 +30,7 @@
<!ENTITY torbutton.prefs.restrict_thirdparty_tooltip "Bu seçeneği işaretleyerek, çeşitli web tarayıcıların, web sitelerinde yaptığınız işlemleri izlemesini engelleyebilirsiniz. Değiştirilen özellikler içinde blob İnternet adresleri, yayın kanalları, web tarayıcı ön belleği, çerezler, favicon dosyaları, HTTP Auth başlık bilgileri, ön bağlantı bilgileri, localStorage, mediaSource adresleri, OCSP istekleri, SharedWorkers ve TLS oturumu bulunur.">
<!ENTITY torbutton.prefs.resist_fingerprinting "Diğer Tor Browser kullanıcılarından sizi ayıran ayrıntılar değiştirilsin">
<!ENTITY torbutton.prefs.resist_fingerprinting.accesskey "F">
-<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "Bilgisayarınızın performansı, klavye düzeni, yerel dil, kurulu eklentilerin konumu, kurulu eklentilerin listesi, ağınızın durumu, ekran yönlendirmesi, ekran boyutu, siteye bağlı özel yakınlaştırma seviyeleri, desteklenen dosya türleri, sistem renkleri ve WebGL yetenekleri gibi sizin için benzersiz olabilecek şeyleri gizlemek için bu kutuyu işaretli tutun.">
+<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "Bilgisayarınızın başarımı, tuş takımı düzeni, yerel dil ayarları, yüklenmiş eklentilerin konumu, yüklenmiş eklentilerin listesi, ağınızın durumu, ekran yönlendirmesi, ekran boyutu, siteye bağlı özel yakınlaştırma seviyeleri, desteklenen dosya türleri, sistem renkleri ve WebGL yetenekleri gibi size özel olan ve kimliğinizin belirlenmesinde kullanılabilecek bilgileri gizlemek için bu kutuyu işaretlenmiş olarak tutun.">
<!ENTITY torbutton.prefs.sec_caption "Güvenlik Düzeyi">
<!ENTITY torbutton.prefs.sec_caption_tooltip "Güvenlik ayarı ile belirli web tarayıcı özeliklerini kapatabilirsiniz. Ancak bu durumda web tarayıcınız saldırılara karşı daha korumasız olur.">
<!ENTITY torbutton.prefs.sec_low "Düşük (varsayılan)">
@@ -41,7 +41,7 @@
<!ENTITY torbutton.prefs.sec_html5_desc "HTML5 görüntü ve ses ortamı NoScript aracılığıyla tıklayıp oynat şekline dönüştürülür.">
<!ENTITY torbutton.prefs.sec_html5_tooltip "Bazı sitelerde bu ortam nesnelerini etkinleştirebilmek için NoScript düğmesinin kullanılması gerekebilir.">
<!ENTITY torbutton.prefs.sec_some_jit_desc "Bazı JavaScript başarım iyileştirmeleri devre dışı bırakılır.">
-<!ENTITY torbutton.prefs.sec_jit_desc_tooltip "ION JIT, Doğal Düzenli İfade.">
+<!ENTITY torbutton.prefs.sec_jit_desc_tooltip "ION JIT, Doğal Kurallı İfade">
<!ENTITY torbutton.prefs.sec_baseline_jit_desc_tooltip "Sınır Çizgi JIT.">
<!ENTITY torbutton.prefs.sec_jit_slower_desc "Bazı sitelerde betikler daha yavaş çalışabilir.">
<!ENTITY torbutton.prefs.sec_mathml_desc "Matematik denklemlerini görüntüleyen bazı düzenekler devre dışı bırakılır.">
diff --git a/src/chrome/locale/vi/aboutTor.properties b/src/chrome/locale/vi/aboutTor.properties
index 6cdeffb..ca9fa4e 100644
--- a/src/chrome/locale/vi/aboutTor.properties
+++ b/src/chrome/locale/vi/aboutTor.properties
@@ -7,3 +7,14 @@ aboutTor.searchDDG.privacy=Tìm kiếm <a href="%1$S">một cách an toàn</a>v
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
+
+aboutTor.donationBanner.donate=Donate Now!
+
+aboutTor.donationBanner.slogan=Tor: Powering Digital Resistance
+aboutTor.donationBanner.mozilla=Give today and Mozilla will match your gift!
+
+aboutTor.donationBanner.tagline1=Protecting Journalists, Whistleblowers, & Activists Since 2006
+aboutTor.donationBanner.tagline2=Networking Freedom Worldwide
+aboutTor.donationBanner.tagline3=Freedom Online
+aboutTor.donationBanner.tagline4=Fostering Free Expression Worldwide
+aboutTor.donationBanner.tagline5=Protecting the Privacy of Millions Every Day
diff --git a/src/chrome/locale/zh-CN/aboutTor.properties b/src/chrome/locale/zh-CN/aboutTor.properties
index 0bd6766..32beeb1 100644
--- a/src/chrome/locale/zh-CN/aboutTor.properties
+++ b/src/chrome/locale/zh-CN/aboutTor.properties
@@ -7,3 +7,14 @@ aboutTor.searchDDG.privacy=使用<a href="%2$S">DuckDuckGo</a><a href="%1$S">安
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
+
+aboutTor.donationBanner.donate=Donate Now!
+
+aboutTor.donationBanner.slogan=Tor: Powering Digital Resistance
+aboutTor.donationBanner.mozilla=Give today and Mozilla will match your gift!
+
+aboutTor.donationBanner.tagline1=Protecting Journalists, Whistleblowers, & Activists Since 2006
+aboutTor.donationBanner.tagline2=Networking Freedom Worldwide
+aboutTor.donationBanner.tagline3=Freedom Online
+aboutTor.donationBanner.tagline4=Fostering Free Expression Worldwide
+aboutTor.donationBanner.tagline5=Protecting the Privacy of Millions Every Day
1
0