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

[translation/torbutton-torbuttondtd] specially pushed for 30464
by translation@torproject.org 17 May '19
by translation@torproject.org 17 May '19
17 May '19
commit 26d3c2ad0f31e093d85ba6230e096f6fa8ce9779
Author: Translation commit bot <translation(a)torproject.org>
Date: Fri May 17 10:47:03 2019 +0000
specially pushed for 30464
---
ach/torbutton.dtd | 2 +-
af/torbutton.dtd | 2 +-
ar/torbutton.dtd | 2 +-
ast/torbutton.dtd | 2 +-
az/torbutton.dtd | 2 +-
be/torbutton.dtd | 2 +-
bg/torbutton.dtd | 2 +-
bn-BD/torbutton.dtd | 2 +-
br/torbutton.dtd | 2 +-
bs/torbutton.dtd | 2 +-
ca/torbutton.dtd | 2 +-
cs/torbutton.dtd | 2 +-
cy/torbutton.dtd | 2 +-
da/torbutton.dtd | 2 +-
de/torbutton.dtd | 2 +-
el/torbutton.dtd | 2 +-
en-GB/torbutton.dtd | 2 +-
en-US/torbutton.dtd | 2 +-
en/torbutton.dtd | 2 +-
eo/torbutton.dtd | 2 +-
es-AR/torbutton.dtd | 2 +-
es-ES/torbutton.dtd | 2 +-
es-MX/torbutton.dtd | 2 +-
et/torbutton.dtd | 2 +-
eu/torbutton.dtd | 2 +-
fa/torbutton.dtd | 2 +-
fi/torbutton.dtd | 2 +-
fr/torbutton.dtd | 2 +-
fy-NL/torbutton.dtd | 2 +-
ga-IE/torbutton.dtd | 2 +-
gd/torbutton.dtd | 2 +-
gl/torbutton.dtd | 2 +-
gu-IN/torbutton.dtd | 2 +-
he/torbutton.dtd | 2 +-
hi-IN/torbutton.dtd | 2 +-
hr/torbutton.dtd | 2 +-
hu/torbutton.dtd | 2 +-
hy-AM/torbutton.dtd | 2 +-
id/torbutton.dtd | 2 +-
is/torbutton.dtd | 2 +-
it/torbutton.dtd | 2 +-
ja/torbutton.dtd | 2 +-
ka/torbutton.dtd | 2 +-
kk/torbutton.dtd | 2 +-
km/torbutton.dtd | 2 +-
kn/torbutton.dtd | 2 +-
ko/torbutton.dtd | 2 +-
lt/torbutton.dtd | 2 +-
lv/torbutton.dtd | 2 +-
mk/torbutton.dtd | 2 +-
ml/torbutton.dtd | 2 +-
mr/torbutton.dtd | 2 +-
ms/torbutton.dtd | 2 +-
my/torbutton.dtd | 2 +-
nb-NO/torbutton.dtd | 2 +-
ne/torbutton.dtd | 2 +-
nl-BE/torbutton.dtd | 2 +-
nl/torbutton.dtd | 2 +-
nn-NO/torbutton.dtd | 2 +-
oc/torbutton.dtd | 2 +-
or/torbutton.dtd | 2 +-
pa-IN/torbutton.dtd | 2 +-
pl/torbutton.dtd | 2 +-
pt-BR/torbutton.dtd | 2 +-
pt-PT/torbutton.dtd | 2 +-
ro/torbutton.dtd | 2 +-
ru/torbutton.dtd | 2 +-
si/torbutton.dtd | 2 +-
sk/torbutton.dtd | 2 +-
sl/torbutton.dtd | 2 +-
son/torbutton.dtd | 2 +-
sq/torbutton.dtd | 2 +-
sr/torbutton.dtd | 2 +-
sv-SE/torbutton.dtd | 2 +-
sw/torbutton.dtd | 2 +-
ta/torbutton.dtd | 2 +-
te/torbutton.dtd | 2 +-
th/torbutton.dtd | 2 +-
tr/torbutton.dtd | 2 +-
uk/torbutton.dtd | 2 +-
ur/torbutton.dtd | 2 +-
uz/torbutton.dtd | 2 +-
vi/torbutton.dtd | 2 +-
zh-CN/torbutton.dtd | 2 +-
zh-HK/torbutton.dtd | 2 +-
zh-TW/torbutton.dtd | 2 +-
86 files changed, 86 insertions(+), 86 deletions(-)
diff --git a/ach/torbutton.dtd b/ach/torbutton.dtd
index 83b1ffb50..2e106f60f 100644
--- a/ach/torbutton.dtd
+++ b/ach/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/af/torbutton.dtd b/af/torbutton.dtd
index 83b1ffb50..2e106f60f 100644
--- a/af/torbutton.dtd
+++ b/af/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/ar/torbutton.dtd b/ar/torbutton.dtd
index 9c2b5292a..1b0a01cde 100644
--- a/ar/torbutton.dtd
+++ b/ar/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "تعطل جافا سكربت مبدئيا على جميع المواقع.">
<!ENTITY torbutton.prefs.sec_limit_typography "تعطّل بعض الخطوط والرموز الرياضية.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "تعطّل بعض الخطوط والأيقونات والرموز الرياضية والصور.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "الصوت والفيديو يحتاج للنقر لتشغيله.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "دائرة تور">
<!ENTITY torbutton.circuit_display.new_circuit "دائرة تور جديدة لهذا الموقع">
diff --git a/ast/torbutton.dtd b/ast/torbutton.dtd
index 83b1ffb50..2e106f60f 100644
--- a/ast/torbutton.dtd
+++ b/ast/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/az/torbutton.dtd b/az/torbutton.dtd
index 318eaaa89..db3d196dc 100644
--- a/az/torbutton.dtd
+++ b/az/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/be/torbutton.dtd b/be/torbutton.dtd
index 9d370e375..0f8442bb6 100644
--- a/be/torbutton.dtd
+++ b/be/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/bg/torbutton.dtd b/bg/torbutton.dtd
index 8c86d702f..0228579de 100644
--- a/bg/torbutton.dtd
+++ b/bg/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript е деактивиран по подразбиране за всички сайтове.">
<!ENTITY torbutton.prefs.sec_limit_typography "Някои шрифтове и математичски символи са деактивирани.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Някои шрифтове, икони, математически символи и изображения са деактивирани.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Аудио и видео(HTML5) се пускат само при кликане върху тях.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/bn-BD/torbutton.dtd b/bn-BD/torbutton.dtd
index 27be1a9ac..1157450ed 100644
--- a/bn-BD/torbutton.dtd
+++ b/bn-BD/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "জাভাস্ক্রিপ্ট সব সাইটে ডিফল্ট দ্বারা নিষ্ক্রিয় করা হয়।">
<!ENTITY torbutton.prefs.sec_limit_typography "কিছু ফন্ট এবং গণিত চিহ্ন অক্ষম আছে।">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "কিছু ফন্ট, আইকন, গণিত প্রতীক এবং ছবি অক্ষম রয়েছে।">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "অডিও এবং ভিডিও (HTML5 মিডিয়া) ক্লিক-টু-খেলা।">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "টর সার্কিট">
<!ENTITY torbutton.circuit_display.new_circuit "এই সাইটের জন্য নতুন সার্কিট">
diff --git a/br/torbutton.dtd b/br/torbutton.dtd
index 6eda3f6e5..d24b8a447 100644
--- a/br/torbutton.dtd
+++ b/br/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/bs/torbutton.dtd b/bs/torbutton.dtd
index 18f75ff7c..ed76d1241 100644
--- a/bs/torbutton.dtd
+++ b/bs/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/ca/torbutton.dtd b/ca/torbutton.dtd
index 7537e1d75..3adef8eea 100644
--- a/ca/torbutton.dtd
+++ b/ca/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "El JavaScript està desactivat per defecte a tots els llocs.">
<!ENTITY torbutton.prefs.sec_limit_typography "Algunes fonts i símbols matemàtics estan desactivats. ">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Algunes fonts, icones, símbols matemàtics, i imatges estan desactivats. ">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "L'àudio i el vídeo (mitjans de comunicació HTML5) són click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Circuit de Tor">
<!ENTITY torbutton.circuit_display.new_circuit " Circuit de Tor per a aquest lloc ">
diff --git a/cs/torbutton.dtd b/cs/torbutton.dtd
index 1a4feeed5..ae92cd70b 100644
--- a/cs/torbutton.dtd
+++ b/cs/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript je ve výchozím nastavení vypnut na všech stránkách.">
<!ENTITY torbutton.prefs.sec_limit_typography "Některá písma a matematické symboly jsou zablokovány.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Některá písma, matematické symboly a obrázky jsou zablokovány.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio a video (HTML5 média) se přehrávají po kliknutí.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor okruh">
<!ENTITY torbutton.circuit_display.new_circuit "Nový okruh Toru pro tuto stránku">
diff --git a/cy/torbutton.dtd b/cy/torbutton.dtd
index 66893d7d6..0622e99b8 100644
--- a/cy/torbutton.dtd
+++ b/cy/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/da/torbutton.dtd b/da/torbutton.dtd
index 4fa64baa7..6e3b1ef9e 100644
--- a/da/torbutton.dtd
+++ b/da/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript er som standard deaktiveret på alle steder.">
<!ENTITY torbutton.prefs.sec_limit_typography "Nogle skrifttyper og matematiksymboler er deaktiverede.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Nogle skrifttyper, ikoner, matematiksymboler og billeder er deaktiveret.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Lyd og video (HTML5-medier) er klik-for-at-afspille.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor-kredsløb">
<!ENTITY torbutton.circuit_display.new_circuit "Nyt kredsløb til dette sted">
diff --git a/de/torbutton.dtd b/de/torbutton.dtd
index c3d815f04..9e0445435 100644
--- a/de/torbutton.dtd
+++ b/de/torbutton.dtd
@@ -37,6 +37,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript ist standardmäßig auf allen Seiten deaktiviert.">
<!ENTITY torbutton.prefs.sec_limit_typography "Einige Schriftarten und mathematische Symbole sind deaktiviert.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Einige Schriftarten, Symbole, mathematische Symbole und Bilder sind deaktiviert.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio und Video (HTML5-Medien) müssen zur Wiedergabe angeklickt werden.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Kanal">
<!ENTITY torbutton.circuit_display.new_circuit "Neuen Kanal für diese Seite">
diff --git a/el/torbutton.dtd b/el/torbutton.dtd
index 4f474387c..83f40ded9 100644
--- a/el/torbutton.dtd
+++ b/el/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "Η JavaScript είναι απενεργοποιημένη σε όλους τους ιστότοπους ως προεπιλογή.">
<!ENTITY torbutton.prefs.sec_limit_typography "Μερικές γραμματοσειρές και μαθηματικά σύμβολα είναι απενεργοποιημένα.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Ορισμένες γραμματοσειρές, εικονίδια, μαθηματικά σύμβολα και εικόνες είναι απενεργοποιημένα.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Οι ήχοι και τα βίντεο (μέσα HTML5) παίζουν, αφού γίνει κλικ για αναπαραγωγή.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Κύκλωμα Tor">
<!ENTITY torbutton.circuit_display.new_circuit "Νέο κύκλωμα για αυτή την ιστοσελίδα">
diff --git a/en-GB/torbutton.dtd b/en-GB/torbutton.dtd
index ff707c14d..298e26e88 100644
--- a/en-GB/torbutton.dtd
+++ b/en-GB/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and maths symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, maths symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/en-US/torbutton.dtd b/en-US/torbutton.dtd
index 83b1ffb50..2e106f60f 100644
--- a/en-US/torbutton.dtd
+++ b/en-US/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/en/torbutton.dtd b/en/torbutton.dtd
index 83b1ffb50..2e106f60f 100644
--- a/en/torbutton.dtd
+++ b/en/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/eo/torbutton.dtd b/eo/torbutton.dtd
index 8ea7cd5eb..cdf95539e 100644
--- a/eo/torbutton.dtd
+++ b/eo/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/es-AR/torbutton.dtd b/es-AR/torbutton.dtd
index 3d2315afb..b899ae2ee 100644
--- a/es-AR/torbutton.dtd
+++ b/es-AR/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript está deshabilitado por defecto en todos los sitios.">
<!ENTITY torbutton.prefs.sec_limit_typography "Algunos tipos de letra y símbolos matemáticos están deshabilitados.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Algunos tipos de letra, iconos, símbolos matemáticos e imágenes están deshabilitados.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio y video (medios HTML5) son cliquear-para-reproducir.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Circuito Tor">
<!ENTITY torbutton.circuit_display.new_circuit "Nuevo circuito para este sitio">
diff --git a/es-ES/torbutton.dtd b/es-ES/torbutton.dtd
index 2c7a8921d..a6a5c04f3 100644
--- a/es-ES/torbutton.dtd
+++ b/es-ES/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript está deshabilitado por defecto en todos los sitios.">
<!ENTITY torbutton.prefs.sec_limit_typography "Algunas fuentes y símbolos matemáticos están deshabilitados.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Algunas fuentes, iconos, símbolos matemáticos, e imágenes están deshabilitados.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio y vídeo (medios HTML5) son de tipo pulsar-para-reproducir.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Circuito Tor">
<!ENTITY torbutton.circuit_display.new_circuit "Nuevo Circuito para este Sitio">
diff --git a/es-MX/torbutton.dtd b/es-MX/torbutton.dtd
index dc42d3d48..b05df7f5b 100644
--- a/es-MX/torbutton.dtd
+++ b/es-MX/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/et/torbutton.dtd b/et/torbutton.dtd
index ae7cb200d..ed56c56c5 100644
--- a/et/torbutton.dtd
+++ b/et/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript on keelatud vaikimisi kõigil lehtedel.">
<!ENTITY torbutton.prefs.sec_limit_typography "Mõned fondid ja matemaatilised sümbolid on keelatud.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Mõned fondid, ikoonid, matemaatilised sümbolid ja pildid on keelatud.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Heli ja video (HTML5 meedia) esitatakse klõpsates.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor\'i ringtee">
<!ENTITY torbutton.circuit_display.new_circuit "Uus ringtee sellele saidile">
diff --git a/eu/torbutton.dtd b/eu/torbutton.dtd
index 18b0bb8f6..8ab314c90 100644
--- a/eu/torbutton.dtd
+++ b/eu/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Zirkuitoa">
<!ENTITY torbutton.circuit_display.new_circuit "Zirkuito berria Gune honetarako">
diff --git a/fa/torbutton.dtd b/fa/torbutton.dtd
index b748951f2..60f0fb925 100644
--- a/fa/torbutton.dtd
+++ b/fa/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "جاوا اسکریپت به طور پیش فرض در تمامی سایت ها غیر فعال است.">
<!ENTITY torbutton.prefs.sec_limit_typography "برخی از فونت ها و نمادهای ریاضی غیرفعال هستند">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "برخی از فونت ها، شمایلها، علایم ریاضی و تصاویر از کار افتاده هستند.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "صدا و ویدیو ( HTML5 رسانه ) برای بازی کلیک میکنند.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "مدار تور">
<!ENTITY torbutton.circuit_display.new_circuit "مدار جدید برای این سایت">
diff --git a/fi/torbutton.dtd b/fi/torbutton.dtd
index 987ba4601..236538032 100644
--- a/fi/torbutton.dtd
+++ b/fi/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript on oletuksena poissa käytöstä kaikilla sivustoilla.">
<!ENTITY torbutton.prefs.sec_limit_typography "Jotkin fontit ja matemaattiset symbolit ovat poissa käytöstä.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Jotkin fontit, kuvakkeet, matemaattiset symbolit ja kuvat ovat poissa käytöstä.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Ääni ja video (HTML5-media) vaativat napsautuksen ennen toistoa.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor-reitti">
<!ENTITY torbutton.circuit_display.new_circuit "Uusi reitti tälle sivustolle">
diff --git a/fr/torbutton.dtd b/fr/torbutton.dtd
index 00e028efc..ddfeaf40c 100644
--- a/fr/torbutton.dtd
+++ b/fr/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript est désactivé par défaut pour tous les sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Certaines polices et certains symboles mathématiques sont désactivés.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Certaines polices, icônes, images et certains symboles mathématiques sont désactivés.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Le son et la vidéo (médias HTML5) sont « cliquer pour lire ».">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Circuit Tor">
<!ENTITY torbutton.circuit_display.new_circuit "Nouveau circuit pour ce site">
diff --git a/fy-NL/torbutton.dtd b/fy-NL/torbutton.dtd
index fd42f2562..da5c539e7 100644
--- a/fy-NL/torbutton.dtd
+++ b/fy-NL/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/ga-IE/torbutton.dtd b/ga-IE/torbutton.dtd
index 6f92b5bfc..68191bc33 100644
--- a/ga-IE/torbutton.dtd
+++ b/ga-IE/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "Tá JavaScript díchumasaithe ar gach suíomh de réir réamhshocraithe.">
<!ENTITY torbutton.prefs.sec_limit_typography "Tá roinnt clófhoirne agus siombailí matamaiticiúla díchumasaithe.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Tá roinnt clófhoirne, deilbhíní, siombailí matamaiticiúla, agus íomhánna díchumasaithe.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Caithfidh tú fuaimeanna agus físeáin (meáin HTML5) a chliceáil lena seinm.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Ciorcad Tor">
<!ENTITY torbutton.circuit_display.new_circuit "Ciorcad Nua don Suíomh seo">
diff --git a/gd/torbutton.dtd b/gd/torbutton.dtd
index 83b1ffb50..2e106f60f 100644
--- a/gd/torbutton.dtd
+++ b/gd/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/gl/torbutton.dtd b/gl/torbutton.dtd
index f869d8bf9..b2f8a9d96 100644
--- a/gl/torbutton.dtd
+++ b/gl/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/gu-IN/torbutton.dtd b/gu-IN/torbutton.dtd
index 8409786dd..1cdfc5a4f 100644
--- a/gu-IN/torbutton.dtd
+++ b/gu-IN/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/he/torbutton.dtd b/he/torbutton.dtd
index 813eb0aa6..a2f5e3d51 100644
--- a/he/torbutton.dtd
+++ b/he/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript מושבת כברירת מחדל בכל האתרים.">
<!ENTITY torbutton.prefs.sec_limit_typography "מספר גופנים וסמלים מתמטיים מושבתים.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "מספר גופנים, צלמיות, סמלים מתמטיים ותמונות מושבתים.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "שמע ווידיאו (מדית HTML5) הם לחץ־כדי־לנגן.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "מעגל Tor">
<!ENTITY torbutton.circuit_display.new_circuit "מעגל חדש עבור אתר זה">
diff --git a/hi-IN/torbutton.dtd b/hi-IN/torbutton.dtd
index 8570b4707..05f55bce4 100644
--- a/hi-IN/torbutton.dtd
+++ b/hi-IN/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/hr/torbutton.dtd b/hr/torbutton.dtd
index d37d47495..68ea37dfe 100644
--- a/hr/torbutton.dtd
+++ b/hr/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript je onemogućen po zadanom na svim stranicama.">
<!ENTITY torbutton.prefs.sec_limit_typography "Neki fontovi i matematički simboli su onemogućeni.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Neki fontovi, ikone, matematički simboli i slike su onemogućeni.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Zvuk i video (HTML5 medij) su click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor krug">
<!ENTITY torbutton.circuit_display.new_circuit "Novi krug za ovu stranicu">
diff --git a/hu/torbutton.dtd b/hu/torbutton.dtd
index 0cfce62f8..a00bbdba4 100644
--- a/hu/torbutton.dtd
+++ b/hu/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "A JavaScript alapértelmezetten tiltott minden oldalon.">
<!ENTITY torbutton.prefs.sec_limit_typography "Néhány betűtípus és matematikai szimbólum tiltásra került.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Néhány betűtípus, ikon és matematikai szimbólum és a képek tiltásra kerültek.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audió és videó (HTML5 média) kattintásra indul.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor áramkör">
<!ENTITY torbutton.circuit_display.new_circuit "Új Tor áramkör ehhez az oldalhoz">
diff --git a/hy-AM/torbutton.dtd b/hy-AM/torbutton.dtd
index b84e62d49..1f42a572d 100644
--- a/hy-AM/torbutton.dtd
+++ b/hy-AM/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/id/torbutton.dtd b/id/torbutton.dtd
index c1e7603a1..4771310bc 100644
--- a/id/torbutton.dtd
+++ b/id/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript dinonaktifkan secara default di semua situs.">
<!ENTITY torbutton.prefs.sec_limit_typography "Beberapa font dan simbol matematika dinonaktifkan.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Beberapa font, icon, simbol matematika, dan gambar dinonaktifkan.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio dan video (media HTML5 media) dijalankan saat diklik.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Sirkuit Tor">
<!ENTITY torbutton.circuit_display.new_circuit "Sirkuit Baru untuk Situs Ini">
diff --git a/is/torbutton.dtd b/is/torbutton.dtd
index b408ac950..8a2085818 100644
--- a/is/torbutton.dtd
+++ b/is/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript er sjálfgefið óvirkt á öllum vefsvæðum.">
<!ENTITY torbutton.prefs.sec_limit_typography "Sumt letur og stærðfræðitákn eru óvirk.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Sumt letur, táknmyndir, myndir og stærðfræðitákn eru óvirk.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Hljóð og myndskeið (HTML5-gagnamiðla) þarf að smella á til að spila.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor-rás">
<!ENTITY torbutton.circuit_display.new_circuit "Ný rás fyrir þetta vefsvæði">
diff --git a/it/torbutton.dtd b/it/torbutton.dtd
index 3c46b13ee..8c9b0051d 100644
--- a/it/torbutton.dtd
+++ b/it/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript è disattivato in tutti i siti in modo predefinito.">
<!ENTITY torbutton.prefs.sec_limit_typography "Alcuni caratteri e simboli matematici sono disattivati.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Alcuni caratteri, icone, simboli matematici e immagini sono disattivati.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio e video (media HTML5) sono click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Circuito Tor">
<!ENTITY torbutton.circuit_display.new_circuit "Nuovo circuito per questo sito">
diff --git a/ja/torbutton.dtd b/ja/torbutton.dtd
index be6c4dc00..3137fb041 100644
--- a/ja/torbutton.dtd
+++ b/ja/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "すべてのサイトで JavaScript が無効化されます。">
<!ENTITY torbutton.prefs.sec_limit_typography "いくつかのフォントと数学記号が無効化されます。">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "いくつかのアイコン、数学記号および画像が無効化されます。">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "オーディオとビデオ(HTML5メディア)はクリックすると再生されます。">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor サーキット">
<!ENTITY torbutton.circuit_display.new_circuit "このサイトに新しいサーキットを使用する">
diff --git a/ka/torbutton.dtd b/ka/torbutton.dtd
index ca4fa8b6c..da0ce86f4 100644
--- a/ka/torbutton.dtd
+++ b/ka/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript გათიშულია ყველა საიტზე ნაგულისხმევად.">
<!ENTITY torbutton.prefs.sec_limit_typography "შრიფტებისა და მათემატიკური სიმბოლოების ნაწილი გათიშულია.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "შრიფტების, ხატულების, მათემატიკური სიმბოლოებისა და სურათების ნაწილი გათიშულია.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "ხმოვანი და ვიდეოფაილები (HTML5) ეშვება მხოლოდ დაწკაპებით.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor-წრედი">
<!ENTITY torbutton.circuit_display.new_circuit "ახალი წრედი ამ საიტისთვის">
diff --git a/kk/torbutton.dtd b/kk/torbutton.dtd
index fa0802162..e8a44ee09 100644
--- a/kk/torbutton.dtd
+++ b/kk/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/km/torbutton.dtd b/km/torbutton.dtd
index edf77dabd..f90b680c3 100644
--- a/km/torbutton.dtd
+++ b/km/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/kn/torbutton.dtd b/kn/torbutton.dtd
index b7c365dc9..bb136801f 100644
--- a/kn/torbutton.dtd
+++ b/kn/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/ko/torbutton.dtd b/ko/torbutton.dtd
index 03dfc033b..2deef2ba7 100644
--- a/ko/torbutton.dtd
+++ b/ko/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "자바 스크립트는 기본 설정으로 모든 사이트에서 비활성화 되어 있습니다.">
<!ENTITY torbutton.prefs.sec_limit_typography "일부 글꼴이며 수학기호가 비활성화 됩니다.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "일부 글꼴이며 상징이며 수학기호며 사진이 비활성화 됩니다.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "오디오와 동영상(HTML5 media) 보려면 누르십시오.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "토르 서킷">
<!ENTITY torbutton.circuit_display.new_circuit "이 사이트에서 새로운 서킷을 재구축">
diff --git a/lt/torbutton.dtd b/lt/torbutton.dtd
index 9fbdf2721..1eba6e6ef 100644
--- a/lt/torbutton.dtd
+++ b/lt/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "Pagal numatymą, Javascript yra išjungtas visose svetainėse.">
<!ENTITY torbutton.prefs.sec_limit_typography "Kai kurie šriftai ir matematiniai simboliai yra išjungti.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Kai kurie šriftai, piktogramos, matematiniai simboliai ir paveikslai yra išjungti.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Garsas ir vaizdas (HTML5 medija) yra atkuriami tik spustelėjus.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor grandinė">
<!ENTITY torbutton.circuit_display.new_circuit "Nauja grandinė šiai svetainei">
diff --git a/lv/torbutton.dtd b/lv/torbutton.dtd
index 5dd12f88c..20449ee1b 100644
--- a/lv/torbutton.dtd
+++ b/lv/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "Pēc noklusējuma visās vietnēs ir atspējots JavaScript.">
<!ENTITY torbutton.prefs.sec_limit_typography "Ir atspējoti daži fonti un matemātiski simboli.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Ir atspējoti daži fonti, ikonas, matemātiski simboli un attēli.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio un video (HTML5 multivide) ir klikšķināt-lai-atskaņotu.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/mk/torbutton.dtd b/mk/torbutton.dtd
index 1e86b0b0d..5866e33ae 100644
--- a/mk/torbutton.dtd
+++ b/mk/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript е стандардно оневозможен на сите веб страни.">
<!ENTITY torbutton.prefs.sec_limit_typography "Некои фонтови и математички симболи се оневозможени.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Некои фонтови, икони, математички симболи, и слики се оневозможени.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Аудиото и видеото (HTML5 мултимедијата) се кликни-да-почне.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor круг">
<!ENTITY torbutton.circuit_display.new_circuit "Нов круг за оваа веб страна">
diff --git a/ml/torbutton.dtd b/ml/torbutton.dtd
index 599997d8a..112e0f60c 100644
--- a/ml/torbutton.dtd
+++ b/ml/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "എല്ലാ സൈറ്റുകളിൽ JavaScript സ്വതവേ രഹിതമാക്കിയിരിയ്ക്കുന്നു.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/mr/torbutton.dtd b/mr/torbutton.dtd
index 6368a9d06..8d4973e73 100644
--- a/mr/torbutton.dtd
+++ b/mr/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/ms/torbutton.dtd b/ms/torbutton.dtd
index 23f58057e..50c5f432e 100644
--- a/ms/torbutton.dtd
+++ b/ms/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "Skrip Java dilumpuhkan secara lalai untuk semua laman.">
<!ENTITY torbutton.prefs.sec_limit_typography "Sesetengah fon dan simbol matematik dilumpuhkan.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Sesetengah fon, ikon, simbol matematik, dan imej dilumpuhkan.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio dan video (media HTML5) adalah klik-untuk-dimainkan.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Litar Tor">
<!ENTITY torbutton.circuit_display.new_circuit "Lihat baharu untuk Laman ini">
diff --git a/my/torbutton.dtd b/my/torbutton.dtd
index 00ba7f4b4..6b79e762a 100644
--- a/my/torbutton.dtd
+++ b/my/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/nb-NO/torbutton.dtd b/nb-NO/torbutton.dtd
index be9665d57..068c48220 100644
--- a/nb-NO/torbutton.dtd
+++ b/nb-NO/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript er som forvalg slått av for alle nettsteder.">
<!ENTITY torbutton.prefs.sec_limit_typography "Noen skrifter og mattesymboler er avskrudd.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Noen skrifter, ikoner, mattesymboler og bilder er avskrudd.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Lyd og video (HTML5-media) må klikkes for å spilles av.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Krets">
<!ENTITY torbutton.circuit_display.new_circuit "Ny Krets for denne siden">
diff --git a/ne/torbutton.dtd b/ne/torbutton.dtd
index 83b1ffb50..2e106f60f 100644
--- a/ne/torbutton.dtd
+++ b/ne/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/nl-BE/torbutton.dtd b/nl-BE/torbutton.dtd
index b94961bc5..fbef98512 100644
--- a/nl-BE/torbutton.dtd
+++ b/nl-BE/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/nl/torbutton.dtd b/nl/torbutton.dtd
index 0ab3164ba..f5819e372 100644
--- a/nl/torbutton.dtd
+++ b/nl/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "Javascript zijn standaard uitgeschakeld op alle sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Sommige lettertypen en wiskundige symbolen zijn uitgeschakeld.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Sommige lettertypen, pictogrammen, wiskundige symbolen en afbeeldingen zijn uitgeschakeld.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio en video (HTML5-media) zijn klik-bij-afspelen.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Torcircuit">
<!ENTITY torbutton.circuit_display.new_circuit "Nieuw circuit voor deze website">
diff --git a/nn-NO/torbutton.dtd b/nn-NO/torbutton.dtd
index eb10d1beb..39cc9fb32 100644
--- a/nn-NO/torbutton.dtd
+++ b/nn-NO/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/oc/torbutton.dtd b/oc/torbutton.dtd
index 83b1ffb50..2e106f60f 100644
--- a/oc/torbutton.dtd
+++ b/oc/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/or/torbutton.dtd b/or/torbutton.dtd
index 83b1ffb50..2e106f60f 100644
--- a/or/torbutton.dtd
+++ b/or/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/pa-IN/torbutton.dtd b/pa-IN/torbutton.dtd
index eee27e3de..c1c9a69e1 100644
--- a/pa-IN/torbutton.dtd
+++ b/pa-IN/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/pl/torbutton.dtd b/pl/torbutton.dtd
index 134b01fe5..982540129 100644
--- a/pl/torbutton.dtd
+++ b/pl/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript jest domyślnie wyłączona na wszystkich stronach.">
<!ENTITY torbutton.prefs.sec_limit_typography "Niektóre fonty i symbole są wyłączone.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Niektóre fonty, ikony, symbole i obrazki są wyłączone.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Dźwięk i obraz (media HTML5) to "kliknij, aby odtworzyć".">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Obwód Tor">
<!ENTITY torbutton.circuit_display.new_circuit "Nowy obwód dla tej strony">
diff --git a/pt-BR/torbutton.dtd b/pt-BR/torbutton.dtd
index cf4026bd6..bf25596ee 100644
--- a/pt-BR/torbutton.dtd
+++ b/pt-BR/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript está desativado por padrão em todos os sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Algumas fontes e símbolos matemáticos estão desativados.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Algumas fontes, ícones, símbolos matemáticas e imagens estão desativadas.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Clicar para tocar ou ver áudio ou vídeo (mídia HTML5).">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Circuito Tor">
<!ENTITY torbutton.circuit_display.new_circuit "Novo circuito para este site">
diff --git a/pt-PT/torbutton.dtd b/pt-PT/torbutton.dtd
index 7247ea3af..efbd35ace 100644
--- a/pt-PT/torbutton.dtd
+++ b/pt-PT/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "O JavaScript está desativado por predefinição em todos os sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Alguns tipos de letra e símbolos de matemática estão desativados.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Alguns tipos de letra, símbolos de matemática e imagens estão desativados.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "O áudio e vídeo (multimédia em HTML5) são "clique para reproduzir."">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Circuito Tor">
<!ENTITY torbutton.circuit_display.new_circuit "Novo Circuito para este Site">
diff --git a/ro/torbutton.dtd b/ro/torbutton.dtd
index 3015e8236..6204fe901 100644
--- a/ro/torbutton.dtd
+++ b/ro/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript e dezactivat implicit în toate site-urile.">
<!ENTITY torbutton.prefs.sec_limit_typography "Unele fonturi și simboluri matematice sunt dezactivate.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Unele fonturi, pictograme, simboluri matematice și imagini sunt dezactivate.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio și video (multimedia tip HTML5) sunt click-pentru-rulare.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Circuit Tor">
<!ENTITY torbutton.circuit_display.new_circuit "Circuit nou pentru acest site">
diff --git a/ru/torbutton.dtd b/ru/torbutton.dtd
index bbf416a4b..8c8cfb355 100644
--- a/ru/torbutton.dtd
+++ b/ru/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript отключен по умолчанию на всех сайтах.">
<!ENTITY torbutton.prefs.sec_limit_typography "Некоторые шрифты и математические символы отключены.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Некоторые шрифты, значки, математические символы и изображения отключены.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Аудио и видео (HTML5 медиа) проигрываются только после клика.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Схема Tor">
<!ENTITY torbutton.circuit_display.new_circuit "Новая схема для этого Сайта">
diff --git a/si/torbutton.dtd b/si/torbutton.dtd
index bf4ade52c..a05541b93 100644
--- a/si/torbutton.dtd
+++ b/si/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/sk/torbutton.dtd b/sk/torbutton.dtd
index 9e0e30fa0..897378e05 100644
--- a/sk/torbutton.dtd
+++ b/sk/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript je v predvolenom nastavení zakázaný na všetkých stránkach.">
<!ENTITY torbutton.prefs.sec_limit_typography "Niektoré písma a matematické symboly sú zakázané.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Niektoré písma, ikony, matematické symboly a obrázky sú zakázané.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Zvuk a video (HTML5) sú nastavené na spustenie po kliknutí.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor okruh">
<!ENTITY torbutton.circuit_display.new_circuit "Nový okruh pre túto stránku">
diff --git a/sl/torbutton.dtd b/sl/torbutton.dtd
index 88d416315..bf598b8c9 100644
--- a/sl/torbutton.dtd
+++ b/sl/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/son/torbutton.dtd b/son/torbutton.dtd
index 83b1ffb50..2e106f60f 100644
--- a/son/torbutton.dtd
+++ b/son/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/sq/torbutton.dtd b/sq/torbutton.dtd
index a021248ff..863df2f73 100644
--- a/sq/torbutton.dtd
+++ b/sq/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript-i është i paaftësuar me parazgjedhje, në të gjitha webfaqet.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Qarku TOR">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/sr/torbutton.dtd b/sr/torbutton.dtd
index 2952c2f74..f8ae48db2 100644
--- a/sr/torbutton.dtd
+++ b/sr/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/sv-SE/torbutton.dtd b/sv-SE/torbutton.dtd
index 5c074a655..9b3f4474c 100644
--- a/sv-SE/torbutton.dtd
+++ b/sv-SE/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript är inaktiverat som standard på alla webbplatser.">
<!ENTITY torbutton.prefs.sec_limit_typography "Vissa typsnitt och matte symboler är inaktiverade.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Vissa typsnitt, ikoner, matte symboler och bilder är inaktiverade.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Ljud och video (HTML5-media) är klicka-för-att-spel.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor-krets">
<!ENTITY torbutton.circuit_display.new_circuit "Ny krets för denna webbplats">
diff --git a/sw/torbutton.dtd b/sw/torbutton.dtd
index aa1077476..71cd9a4b3 100644
--- a/sw/torbutton.dtd
+++ b/sw/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/ta/torbutton.dtd b/ta/torbutton.dtd
index f5bd12f2c..12039c6de 100644
--- a/ta/torbutton.dtd
+++ b/ta/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "யாவாகிறிட்டு எல்லா தளங்களிலும் இயல்நிலையாக செயல்நீக்கப்பட்டுள்ளது.">
<!ENTITY torbutton.prefs.sec_limit_typography "சில எழுத்துகள் மற்றும் கணித அடையாளங்கள் செயல்நீக்கப்பட்டுள்ளன.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "சில எழுத்துகள், சின்னங்கள், கணித அடையாளங்கள், மற்றும் படங்கள் செயல்நீக்கப்பட்டுள்ளன.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "ஒலி மற்றும் காணொளி (HTML5 ஊடகம்) கிளிக்கி இயக்குவதாக உள்ளது.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor சுற்று">
<!ENTITY torbutton.circuit_display.new_circuit "இந்த தளத்திற்கான புதிய சுற்று">
diff --git a/te/torbutton.dtd b/te/torbutton.dtd
index 83b1ffb50..2e106f60f 100644
--- a/te/torbutton.dtd
+++ b/te/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/th/torbutton.dtd b/th/torbutton.dtd
index c5e733411..b29996bfa 100644
--- a/th/torbutton.dtd
+++ b/th/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript ถูกระงับโดยปริยายสำหรับทุกไซต์">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/tr/torbutton.dtd b/tr/torbutton.dtd
index aee89ec46..022ea92b8 100644
--- a/tr/torbutton.dtd
+++ b/tr/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript betikleri tüm sitelerde varsayılan olarak devre dışı bırakılır.">
<!ENTITY torbutton.prefs.sec_limit_typography "Bazı yazı türleri ve matematik simgeleri devre dışı bırakılır.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Bazı yazı türleri, simgeler, matematik simgeleri ve görseller devre dışı bırakılır.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Ses ve görüntüler (HTML5 ortamı) tıklayarak çalıştırılabilir.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Devresi">
<!ENTITY torbutton.circuit_display.new_circuit "Bu Sitenin Devresini Yenile">
diff --git a/uk/torbutton.dtd b/uk/torbutton.dtd
index 8b30d9f97..98723bfba 100644
--- a/uk/torbutton.dtd
+++ b/uk/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript вимкнена за замовчуванням на усіх сайтах.">
<!ENTITY torbutton.prefs.sec_limit_typography "Деякі шрифти та математичні символи вимкнені.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Деякі шрифти, значки, математичні символи та зображення вимкнені.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Аудіо та відео (HTML5 media) доступні для відтворення.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Схема Tor">
<!ENTITY torbutton.circuit_display.new_circuit "Нова Схема Tor для цього сайту">
diff --git a/ur/torbutton.dtd b/ur/torbutton.dtd
index 1f42d0bca..ec21504dc 100644
--- a/ur/torbutton.dtd
+++ b/ur/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/uz/torbutton.dtd b/uz/torbutton.dtd
index b1cb12cb8..f6febe92d 100644
--- a/uz/torbutton.dtd
+++ b/uz/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/vi/torbutton.dtd b/vi/torbutton.dtd
index 695f6bf18..873103372 100644
--- a/vi/torbutton.dtd
+++ b/vi/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript mặc định bị vô hiệu trên tất cả các trang.">
<!ENTITY torbutton.prefs.sec_limit_typography "Một số phông chữ và ký hiêu toán học bị vô hiệu.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Một số phông chữ, biểu tượng, và hình ảnh bị vô hiệu.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Âm thanh và video (HTML5 media) phải bấm-để-phát. ">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Mạch Tor">
<!ENTITY torbutton.circuit_display.new_circuit "Mạch Tor mới cho trang này">
diff --git a/zh-CN/torbutton.dtd b/zh-CN/torbutton.dtd
index 483b5c441..44a2f0f6d 100644
--- a/zh-CN/torbutton.dtd
+++ b/zh-CN/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "在所有网站上默认禁用JavaScript。">
<!ENTITY torbutton.prefs.sec_limit_typography "一些字体与数学符号被禁用。">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "一些字体,图标,数学符号与图片被禁用。">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "点击播放音频或视频(HTML5 媒体)。">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "tor链路">
<!ENTITY torbutton.circuit_display.new_circuit "为此站点使用新线路">
diff --git a/zh-HK/torbutton.dtd b/zh-HK/torbutton.dtd
index 135ddd80e..d5e70ffd3 100644
--- a/zh-HK/torbutton.dtd
+++ b/zh-HK/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "預設喺全部網站停用JavaScript。">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/zh-TW/torbutton.dtd b/zh-TW/torbutton.dtd
index 8f3fefcfe..d4c46efe4 100644
--- a/zh-TW/torbutton.dtd
+++ b/zh-TW/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "所有網站會預設停用JavaScript ">
<!ENTITY torbutton.prefs.sec_limit_typography "有些字形與數學符號被停用">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "有些字型,圖標,數學符號與圖片被停用">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "聲音和影片 (HTML5 媒體) 要點擊播放">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor 迴路">
<!ENTITY torbutton.circuit_display.new_circuit "建立新的迴路來連接上此網站">
1
0

[translation/tbmanual-contentspot] Update translations for tbmanual-contentspot
by translation@torproject.org 17 May '19
by translation@torproject.org 17 May '19
17 May '19
commit e815b8f0fbaae82011a8b5e216461df6919bd8c3
Author: Translation commit bot <translation(a)torproject.org>
Date: Fri May 17 08:47:47 2019 +0000
Update translations for tbmanual-contentspot
---
contents+ms_MY.po | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/contents+ms_MY.po b/contents+ms_MY.po
index 7b973705d..1f587dd5b 100644
--- a/contents+ms_MY.po
+++ b/contents+ms_MY.po
@@ -1022,7 +1022,7 @@ msgstr ""
#: https//tb-manual.torproject.org/en-US/onion-services/
#: (content/onion-services/contents+en-US.lrtopic.body)
msgid "##### How to access an onion service"
-msgstr ""
+msgstr "##### Bagaimana hendak mencapai perkhidmatan onion"
#: https//tb-manual.torproject.org/en-US/onion-services/
#: (content/onion-services/contents+en-US.lrtopic.body)
@@ -1031,6 +1031,10 @@ msgid ""
"service in order to connect to it. An onion address is a string of 16 (and "
"in V3 format, 56) mostly random letters and numbers, followed by “.onion”."
msgstr ""
+"Sepertimana laman sesawang yang lain, anda perlu tahu alamat perkhidmatan "
+"onion untuk menyambung dengannya. Alamat onion ialah satu rentetan 16 (dan "
+"dalam format V3, 56) dengan nombor dan abjad dirawakkan, dan diikuti dengan "
+"\".onion\"."
#: https//tb-manual.torproject.org/en-US/onion-services/
#: (content/onion-services/contents+en-US.lrtopic.body)
@@ -1065,6 +1069,9 @@ msgid ""
"later. There may be a temporary connection issue, or the site operators may "
"have allowed it to go offline without warning."
msgstr ""
+"Jika anda masih tidak dapat menyambung dengan perkhidmatan onion, cuba "
+"sekali lagi. Mungkin ada masalah-masalah sambungan buat sementara, atau "
+"laman tersebut berada diluar talian tanpa apa-apa amaran dikeluarkan."
#: https//tb-manual.torproject.org/en-US/onion-services/
#: (content/onion-services/contents+en-US.lrtopic.body)
@@ -1073,6 +1080,9 @@ msgid ""
"connecting to <a href=\"http://3g2upl4pq6kufc4m.onion/\">DuckDuckGo's Onion "
"Service</a>"
msgstr ""
+"Anda boleh memastikan dapat mencapai lain-lain perkhidmatan onion dengan "
+"menyambung ke <a href=\"http://3g2upl4pq6kufc4m.onion/\">Perkhidmatan Onion "
+"DuckDuckGo</a>"
#: https//tb-manual.torproject.org/en-US/secure-connections/
#: (content/secure-connections/contents+en-US.lrtopic.title)
1
0

[translation/tbmanual-contentspot] Update translations for tbmanual-contentspot
by translation@torproject.org 17 May '19
by translation@torproject.org 17 May '19
17 May '19
commit 177e85d65219c850eb4642c7a1573e4daef84620
Author: Translation commit bot <translation(a)torproject.org>
Date: Fri May 17 08:17:52 2019 +0000
Update translations for tbmanual-contentspot
---
contents+ms_MY.po | 61 +++++++++++++++++++++++++++++++++++++++++++++++++------
1 file changed, 55 insertions(+), 6 deletions(-)
diff --git a/contents+ms_MY.po b/contents+ms_MY.po
index dbc86b6dc..7b973705d 100644
--- a/contents+ms_MY.po
+++ b/contents+ms_MY.po
@@ -1045,7 +1045,7 @@ msgstr ""
#: https//tb-manual.torproject.org/en-US/onion-services/
#: (content/onion-services/contents+en-US.lrtopic.body)
msgid "##### Troubleshooting"
-msgstr ""
+msgstr "##### Pencarisilapan"
#: https//tb-manual.torproject.org/en-US/onion-services/
#: (content/onion-services/contents+en-US.lrtopic.body)
@@ -1054,6 +1054,9 @@ msgid ""
"entered the onion address correctly: even a small mistake will stop Tor "
"Browser from being able to reach the site."
msgstr ""
+"Jika anda tidak dapat mencapai perkhidmatan onion yang dikehendaki, pastikan"
+" anda telah masukkan alamat onion dengan betul: ini kerana kesilapan kecil "
+"akan mengakibatkan Pelayar Tor gagal mencapai laman tersebut."
#: https//tb-manual.torproject.org/en-US/onion-services/
#: (content/onion-services/contents+en-US.lrtopic.body)
@@ -1074,12 +1077,14 @@ msgstr ""
#: https//tb-manual.torproject.org/en-US/secure-connections/
#: (content/secure-connections/contents+en-US.lrtopic.title)
msgid "Secure Connections"
-msgstr ""
+msgstr "Sambungan-Sambungan Selamat"
#: https//tb-manual.torproject.org/en-US/secure-connections/
#: (content/secure-connections/contents+en-US.lrtopic.description)
msgid "Learn how to protect your data using Tor Browser and HTTPS"
msgstr ""
+"Ketahui bagaimana hendak melindungi data anda menggunakan Pelayar Tor dan "
+"HTTPS"
#: https//tb-manual.torproject.org/en-US/secure-connections/
#: (content/secure-connections/contents+en-US.lrtopic.body)
@@ -1091,11 +1096,18 @@ msgid ""
" verify this in the URL bar: if your connection is encrypted, the address "
"will begin with “https://”, rather than “http://”."
msgstr ""
+"Jika maklumat peribadi seperti kata laluan daftar masuk merentasi Internet "
+"tanpa disulitkan, ia boleh dipintas oleh si pengintip. Jika anda mahu "
+"mendaftar masuk ke mana-mana laman sesawang, pastikan laman tersebut "
+"menawarkan penyulitan HTTPS. Ia dapat melindungi anda terhadap pengintipan "
+"jenis ini. Anda boleh mengesahkannya pada palang URL; iaitu sekiranya "
+"sambungan anda tersulit, alamat akan bermula dengan “https://”, bukannya "
+"“http://”."
#: https//tb-manual.torproject.org/en-US/secure-connections/
#: (content/secure-connections/contents+en-US.lrtopic.body)
msgid "<img class=\"col-md-6\" src=\"../../static/images/https.png\">"
-msgstr ""
+msgstr "<img class=\"col-md-6\" src=\"../../static/images/https.png\">"
#: https//tb-manual.torproject.org/en-US/secure-connections/
#: (content/secure-connections/contents+en-US.lrtopic.body)
@@ -1103,11 +1115,13 @@ msgid ""
"The following visualization shows what information is visible to "
"eavesdroppers with and without Tor Browser and HTTPS encryption:"
msgstr ""
+"Pengvisualan berikut menunjukkan maklumat yang dapat dilihat oleh pengintip "
+"dengan atau tanpa Pelayar Tor dan penyulitan HTTPS."
#: https//tb-manual.torproject.org/en-US/secure-connections/
#: (content/secure-connections/contents+en-US.lrtopic.body)
msgid "<img class=\"\" src=\"../../static/images/tor-and-https.svg\">"
-msgstr ""
+msgstr "<img class=\"\" src=\"../../static/images/tor-and-https.svg\">"
#: https//tb-manual.torproject.org/en-US/secure-connections/
#: (content/secure-connections/contents+en-US.lrtopic.body)
@@ -1115,6 +1129,9 @@ msgid ""
"* Click the “Tor” button to see what data is visible to observers when "
"you're using Tor. The button will turn green to indicate that Tor is on."
msgstr ""
+"* Klik butang “Tor” untuk melihat apakah data yang boleh dibaca oleh "
+"pemantau jika anda menggunakan Tor. Butang akan menjadi warna hijau jika Tor"
+" dihidupkan."
#: https//tb-manual.torproject.org/en-US/secure-connections/
#: (content/secure-connections/contents+en-US.lrtopic.body)
@@ -1122,6 +1139,9 @@ msgid ""
"* Click the “HTTPS” button to see what data is visible to observers when "
"you're using HTTPS. The button will turn green to indicate that HTTPS is on."
msgstr ""
+"* Klik butang “HTTPS” untuk melihat apakah data yang boleh dibaca oleh "
+"pemantau jika anda menggunakan HTTPS. Butang akan menjadi warna hijau jika "
+"HTTPS hadir."
#: https//tb-manual.torproject.org/en-US/secure-connections/
#: (content/secure-connections/contents+en-US.lrtopic.body)
@@ -1129,6 +1149,8 @@ msgid ""
"* When both buttons are green, you see the data that is visible to observers"
" when you are using both tools."
msgstr ""
+"* Bila kedua-dua butang menjadi warna hijau, anda dapat melihat apakah data "
+"yang boleh dibaca oleh pemantau bila kedua-dua alat ini digunakan."
#: https//tb-manual.torproject.org/en-US/secure-connections/
#: (content/secure-connections/contents+en-US.lrtopic.body)
@@ -1136,11 +1158,14 @@ msgid ""
"* When both buttons are grey, you see the data that is visible to observers "
"when you don't use either tool."
msgstr ""
+"* Bila kedua-dua butang bertukar ke warna kelabu, anda dapati data tersebut "
+"boleh dibaca oleh pemantau bila salah satu atau kedua-dua alat ini tidak "
+"digunakan."
#: https//tb-manual.torproject.org/en-US/secure-connections/
#: (content/secure-connections/contents+en-US.lrtopic.body)
msgid "##### Potentially visible data"
-msgstr ""
+msgstr "##### Data yang berpotensi dilihat dan dipantau"
#: https//tb-manual.torproject.org/en-US/secure-connections/
#: (content/secure-connections/contents+en-US.lrtopic.body)
@@ -1257,6 +1282,13 @@ msgid ""
"some web pages from functioning properly, so you should weigh your security "
"needs against the degree of usability you require."
msgstr ""
+"Pelayar Tor disertakan dengan \"Pelungsur Keselamatan\" yang membolehkan "
+"anda tingkatkan keselamatan anda. Ia bertindak dengan melumpuhkan beberapa "
+"fitur sesawang yang boleh digunakan untuk menyerang keselamatan dan "
+"keawanamaan anda. Apabila tahap keselamatan Pelayar Tor ditingkatkan, "
+"sesetengah laman sesawang tidak akan berfungsi dengan baik, jadi anda perlu "
+"tentukan tahap keselamatan yang sesuai dengan kadar kebolehgunaan yang "
+"diperlukan."
#: https//tb-manual.torproject.org/en-US/security-slider/
#: (content/security-slider/contents+en-US.lrtopic.body)
@@ -1273,6 +1305,8 @@ msgstr "<img class=\"col-md-6\" src=\"../../static/images/slider.png\">"
msgid ""
"The Security Slider is located in Torbutton’s “Security Settings” menu."
msgstr ""
+"Pelungsur Keselamatan berada di dalam menu \"Tetapan Keselamatan\" "
+"Torbutton."
#: https//tb-manual.torproject.org/en-US/security-slider/
#: (content/security-slider/contents+en-US.lrtopic.body)
@@ -1282,7 +1316,7 @@ msgstr "##### Tahap-Tahap Keselamatan"
#: https//tb-manual.torproject.org/en-US/security-slider/
#: (content/security-slider/contents+en-US.lrtopic.body)
msgid "<img class=\"col-md-6\" src=\"../../static/images/slider_window.png\">"
-msgstr ""
+msgstr "<img class=\"col-md-6\" src=\"../../static/images/slider_window.png\">"
#: https//tb-manual.torproject.org/en-US/security-slider/
#: (content/security-slider/contents+en-US.lrtopic.body)
@@ -1290,6 +1324,9 @@ msgid ""
"Increasing the level of the Security Slider will disable or partially "
"disable certain browser features to protect against possible attacks."
msgstr ""
+"Dengan meningkatkan Pelungsur Keselamatan, ia akan lumpuhkan atau separa-"
+"lumpuhkan beberapa fitur pelayar. Ia bertujuan untuk melindungi anda "
+"terhadap kemungkinan-kemungkinan serangan yang boleh berlaku."
#: https//tb-manual.torproject.org/en-US/security-slider/
#: (content/security-slider/contents+en-US.lrtopic.body)
@@ -1306,6 +1343,13 @@ msgid ""
"disabled by default on all sites; most video and audio formats are disabled;"
" and some fonts and icons may not display correctly."
msgstr ""
+"Pada tahap ini, media video dan audio HTML5 menjadi klik-untuk-dimainkan "
+"melalui NoScript; semua pengoptimuman prestasi Skrip Java dilumpuhkan; "
+"sesetengah pengiraan bermatematik tidak dipaparkan dengan baik; sesetengah "
+"fitur penerapan fon dilumpuhkan; sebahagian jenis imej dilumpuhkan; skrip "
+"Java dilumpuhkan secara lalai pada semua laman sesawang; kebanyakan format "
+"video dan audio dilumpuhkan; dan sesetengah fon dan ikon tidak dapat "
+"dipaaprkan dengan baik."
#: https//tb-manual.torproject.org/en-US/security-slider/
#: (content/security-slider/contents+en-US.lrtopic.body)
@@ -1322,6 +1366,11 @@ msgid ""
"disabled by default on all non-<a href=\"/secure-connections\">HTTPS</a> "
"sites."
msgstr ""
+"Pada tahap ini, media video dan audio HTML5 menjadi klik-untuk-dimainkan "
+"melalui NoScript; semua pengoptimuman prestasi Skrip Java dilumpuhkan; "
+"sesetengah pengiraan bermatematik tidak dipaparkan dengan baik; sesetengah "
+"fitur penerapan fon dilumpuhkan; dan Skrip Java dilumpuhkan secara lalai "
+"pada semua laman sesawang bukan-<a href=\"/secure-connections\">HTTPS</a>."
#: https//tb-manual.torproject.org/en-US/security-slider/
#: (content/security-slider/contents+en-US.lrtopic.body)
1
0

[tor-browser-build/master] Bug 30284: Fix broken start-up on KitKat devices
by gk@torproject.org 17 May '19
by gk@torproject.org 17 May '19
17 May '19
commit 7caff7a3f547ca251ebea67e7a7d738185463388
Author: Georg Koppen <gk(a)torproject.org>
Date: Thu May 16 21:45:37 2019 +0000
Bug 30284: Fix broken start-up on KitKat devices
Fix by sisbell
---
projects/tor-onion-proxy-library/30284.patch | 22 ++++++++++++++++++++++
projects/tor-onion-proxy-library/build | 1 +
projects/tor-onion-proxy-library/config | 1 +
3 files changed, 24 insertions(+)
diff --git a/projects/tor-onion-proxy-library/30284.patch b/projects/tor-onion-proxy-library/30284.patch
new file mode 100644
index 0000000..a3594b9
--- /dev/null
+++ b/projects/tor-onion-proxy-library/30284.patch
@@ -0,0 +1,22 @@
+From 4402f247643c7b3b730f0facaf1c45dc02d5721f Mon Sep 17 00:00:00 2001
+From: sisbell <shane.isbell(a)gmail.com>
+Date: Thu, 16 May 2019 21:33:06 +0000
+Subject: [PATCH] Fixes thaliproject#120: Tor Startup Broken on KitKat Devices
+
+
+diff --git a/universal/src/main/java/com/msopentech/thali/toronionproxy/TorConfig.java b/universal/src/main/java/com/msopentech/thali/toronionproxy/TorConfig.java
+index 3df0f12..1ab7c2d 100644
+--- a/universal/src/main/java/com/msopentech/thali/toronionproxy/TorConfig.java
++++ b/universal/src/main/java/com/msopentech/thali/toronionproxy/TorConfig.java
+@@ -372,7 +372,7 @@ public final class TorConfig {
+ public TorConfig build() {
+ if(homeDir == null) {
+ String userHome = System.getProperty("user.home");
+- homeDir = (userHome != null && !"".equals(userHome)) ? new File(userHome) : configDir;
++ homeDir = (userHome != null && !"".equals(userHome) && !"/".equals(userHome)) ? new File(userHome) : configDir;
+ }
+
+ if (torExecutableFile == null) {
+--
+2.20.1
+
diff --git a/projects/tor-onion-proxy-library/build b/projects/tor-onion-proxy-library/build
index defedde..e674061 100644
--- a/projects/tor-onion-proxy-library/build
+++ b/projects/tor-onion-proxy-library/build
@@ -20,6 +20,7 @@ tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
cd /var/tmp/build/[% project %]-[% c('version') %]
patch -p1 < $rootdir/maven-repo.patch
patch -p1 < $rootdir/add_socks_port_flags.patch
+patch -p1 < $rootdir/30284.patch
# Build Android Libraries and Apps
$GRADLE_HOME/gradle-4.1/bin/gradle --offline -P androidplugin=3.0.1 assembleRelease -x lint
diff --git a/projects/tor-onion-proxy-library/config b/projects/tor-onion-proxy-library/config
index 889b30d..9db33bd 100644
--- a/projects/tor-onion-proxy-library/config
+++ b/projects/tor-onion-proxy-library/config
@@ -30,3 +30,4 @@ input_files:
exec: '[% INCLUDE "fetch-gradle-dependencies" %]'
- filename: maven-repo.patch
- filename: add_socks_port_flags.patch
+ - filename: 30284.patch
1
0

[translation/tbmanual-contentspot] Update translations for tbmanual-contentspot
by translation@torproject.org 17 May '19
by translation@torproject.org 17 May '19
17 May '19
commit d99adf20a01d98e5ee5c38fabd8e2581cf4f8fb9
Author: Translation commit bot <translation(a)torproject.org>
Date: Fri May 17 07:47:53 2019 +0000
Update translations for tbmanual-contentspot
---
contents+ms_MY.po | 53 +++++++++++++++++++++++++++++++++++++++++++++--------
1 file changed, 45 insertions(+), 8 deletions(-)
diff --git a/contents+ms_MY.po b/contents+ms_MY.po
index 67d6d9963..dbc86b6dc 100644
--- a/contents+ms_MY.po
+++ b/contents+ms_MY.po
@@ -1334,16 +1334,18 @@ msgid ""
"At this level, all browser features are enabled. This is the most usable "
"option."
msgstr ""
+"Pada tahap ini, semua fitur pelayar dibenarkan. Ini adalah pilihan yang "
+"banyak digunakan."
#: https//tb-manual.torproject.org/en-US/updating/
#: (content/updating/contents+en-US.lrtopic.title)
msgid "Updating"
-msgstr ""
+msgstr "Mengemaskini"
#: https//tb-manual.torproject.org/en-US/updating/
#: (content/updating/contents+en-US.lrtopic.description)
msgid "How to update Tor Browser"
-msgstr ""
+msgstr "Bagaimana hendak mengemaskini Pelayar Tor"
#: https//tb-manual.torproject.org/en-US/updating/
#: (content/updating/contents+en-US.lrtopic.body)
@@ -1352,6 +1354,9 @@ msgid ""
"outdated version of the software, you may be vulnerable to serious security "
"flaws that compromise your privacy and anonymity."
msgstr ""
+"Pelayar Tor mesti dikemaskini sepanjang masa. Jika anda terus menerus "
+"menggunakan versi lapuk perisian ini, anda boleh terdedah dengan kepincangan"
+" keselamatan yang serius dan boleh menggugat privasi dan keawanamaan anda."
#: https//tb-manual.torproject.org/en-US/updating/
#: (content/updating/contents+en-US.lrtopic.body)
@@ -1369,12 +1374,12 @@ msgstr ""
#: https//tb-manual.torproject.org/en-US/updating/
#: (content/updating/contents+en-US.lrtopic.body)
msgid "##### Updating Tor Browser automatically"
-msgstr ""
+msgstr "##### Mengemaskini Pelayar Tor secara automatik"
#: https//tb-manual.torproject.org/en-US/updating/
#: (content/updating/contents+en-US.lrtopic.body)
msgid "<img width=\"400\" src=\"../../static/images/update1.png\" />"
-msgstr ""
+msgstr "<img width=\"400\" src=\"../../static/images/update1.png\" />"
#: https//tb-manual.torproject.org/en-US/updating/
#: (content/updating/contents+en-US.lrtopic.body)
@@ -1388,7 +1393,7 @@ msgstr ""
#: https//tb-manual.torproject.org/en-US/updating/
#: (content/updating/contents+en-US.lrtopic.body)
msgid "<img width=\"600\" src=\"../../static/images/update3.png\" />"
-msgstr ""
+msgstr "<img width=\"600\" src=\"../../static/images/update3.png\" />"
#: https//tb-manual.torproject.org/en-US/updating/
#: (content/updating/contents+en-US.lrtopic.body)
@@ -1396,11 +1401,13 @@ msgid ""
"When Tor Browser has finished checking for updates, click on the “Update” "
"button."
msgstr ""
+"Ketika Pelayar Tor selesai memeriksa kemaskininya, klik pada butang "
+"\"Kemaskini\"."
#: https//tb-manual.torproject.org/en-US/updating/
#: (content/updating/contents+en-US.lrtopic.body)
msgid "<img width=\"600\" src=\"../../static/images/update4.png\" />"
-msgstr ""
+msgstr "<img width=\"600\" src=\"../../static/images/update4.png\" />"
#: https//tb-manual.torproject.org/en-US/updating/
#: (content/updating/contents+en-US.lrtopic.body)
@@ -1408,11 +1415,13 @@ msgid ""
"Wait for the update to download and install, then restart Tor Browser. You "
"will now be running the latest version."
msgstr ""
+"Tunggu sehingga kemaskini dimuat turun dan dipasang, kemudian mulakan semula"
+" Pelayar Tor. Kini anda boleh menjalankan versinya yang terkini."
#: https//tb-manual.torproject.org/en-US/updating/
#: (content/updating/contents+en-US.lrtopic.body)
msgid "##### Updating Tor Browser manually"
-msgstr ""
+msgstr "##### Mengemaskini Pelayar Tor secara manual"
#: https//tb-manual.torproject.org/en-US/updating/
#: (content/updating/contents+en-US.lrtopic.body)
@@ -1420,6 +1429,8 @@ msgid ""
"When you are prompted to update Tor Browser, finish the browsing session and"
" close the program."
msgstr ""
+"Bila anda mendapat makluman kemaskini Pelayar Tor, hentikan sesi pelayaran "
+"kemudian tutup aplikasi."
#: https//tb-manual.torproject.org/en-US/updating/
#: (content/updating/contents+en-US.lrtopic.body)
@@ -1428,6 +1439,9 @@ msgid ""
"(see the <a href='uninstalling'>Uninstalling</a> section for more "
"information)."
msgstr ""
+"Buang Pelayar Tor dalam sistem anda dengan memadam folder yang dikandunginya"
+" (silar rujuk seksyen <a href='uninstalling'>Menyahpasang</a> untuk maklumat"
+" lanjut)."
#: https//tb-manual.torproject.org/en-US/updating/
#: (content/updating/contents+en-US.lrtopic.body)
@@ -1437,11 +1451,15 @@ msgid ""
" and download a copy of the latest Tor Browser release, then install it as "
"before."
msgstr ""
+"Lawati <a "
+"href=\"https://www.torproject.org/projects/torbrowser.html.en\">https://www.torproject.org/projects/torbrowser.html.en</a>"
+" dan muat turun satu salinan keluaran Pelayar Tor yang terkini, kemudian "
+"pasang ia seperti biasa."
#: https//tb-manual.torproject.org/en-US/plugins/
#: (content/plugins/contents+en-US.lrtopic.title)
msgid "Plugins, add-ons and JavaScript"
-msgstr ""
+msgstr "Pemalam, tambahan dan Skrip Java"
#: https//tb-manual.torproject.org/en-US/plugins/
#: (content/plugins/contents+en-US.lrtopic.description)
@@ -1464,6 +1482,13 @@ msgid ""
"operators, or to an outside observer. For this reason, Flash is disabled by "
"default in Tor Browser, and enabling it is not recommended."
msgstr ""
+"Laman sesawang video, seperti Vimeo menggunakan pemalam Pemain Flash untuk "
+"memaparkan kandungan videonya. Malangnya, perisian ini beroperasi secara "
+"bebas terhadap Pelayar Tor dan menyebabkan sukar menuruti tetapan proksi "
+"Pelayar Tor. Kesannya ia dapat menunjukkan lokasi dan alamat IP sebenar anda"
+" kepada para operator laman sesawang, atau pemantau luar. Atas sebab inilah,"
+" Flash dilumpuhkan secara lalai dalam Pelayar Tor, dan mendayakannya tidak "
+"disarankan."
#: https//tb-manual.torproject.org/en-US/plugins/
#: (content/plugins/contents+en-US.lrtopic.body)
@@ -1502,6 +1527,10 @@ msgid ""
"JavaScript (and other scripts) that runs on individual web pages, or block "
"it entirely."
msgstr ""
+"Pelayar Tor disertakan dengan tambahan yang dikenali sebagai NoScript, boleh"
+" dicapai melalui ikon \"S\" di bahagian kiri-atas tetingkap. NoScript "
+"membolehkan anda kawal Skrip Java (dan lain-lain skrip) yang ada pada "
+"halaman sesawang secara individu, atau menyekatnya sepenuhnya."
#: https//tb-manual.torproject.org/en-US/plugins/
#: (content/plugins/contents+en-US.lrtopic.body)
@@ -1518,6 +1547,14 @@ msgid ""
"websites from displaying correctly, so Tor Browser’s default setting is to "
"allow all websites to run scripts in \"Standard\" mode."
msgstr ""
+"Pengguna yang mahu keselamatan tahap tinggi ketika melayari sesawang boleh "
+"tetapkan <a href=\"/security-slider\">Pelungsur Keselamatan</a> ke tahap "
+"\"Lebih Selamat\" (yang dapat melumpuhkan Skrip Java untuk laman sesawang "
+"bukan-HTTPS) atau \"Paling Selamat\" (yang bertindak kepada semua laman "
+"sesawang yang ada). Namun begitu, melumpuhkan Skrip Java akan menghalang "
+"banyak laman sesawang dipaparkan dengan betul, jadi tetapan lalai Pelayar "
+"Tor membenarkan semua laman sesawang menjalankan skripnya dalam mod "
+"\"Piawai\"."
#: https//tb-manual.torproject.org/en-US/plugins/
#: (content/plugins/contents+en-US.lrtopic.body)
1
0

[tor-browser/tor-browser-60.6.1esr-9.0-1] Bug 1548634 - Update the default letterboxing behavior to use stepped ranges r=johannh
by gk@torproject.org 17 May '19
by gk@torproject.org 17 May '19
17 May '19
commit 166a752ab22ef1415c250eff37e1ada3f2f24915
Author: Tom Ritter <tom(a)mozilla.com>
Date: Tue May 7 16:06:43 2019 +0000
Bug 1548634 - Update the default letterboxing behavior to use stepped ranges r=johannh
Differential Revision: https://phabricator.services.mozilla.com/D29759
---
.../browser/browser_dynamical_window_rounding.js | 11 ++++------
.../components/resistfingerprinting/RFPHelper.jsm | 25 +++++++++++++++++-----
2 files changed, 24 insertions(+), 12 deletions(-)
diff --git a/browser/components/resistfingerprinting/test/browser/browser_dynamical_window_rounding.js b/browser/components/resistfingerprinting/test/browser/browser_dynamical_window_rounding.js
index ae8055a49ce5..784fb42b8631 100644
--- a/browser/components/resistfingerprinting/test/browser/browser_dynamical_window_rounding.js
+++ b/browser/components/resistfingerprinting/test/browser/browser_dynamical_window_rounding.js
@@ -11,9 +11,7 @@
*/
const TEST_PATH = "http://example.net/browser/browser/components/resistfingerprinting/test/bro…";
-
-const DEFAULT_ROUNDED_WIDTH_STEP = 200;
-const DEFAULT_ROUNDED_HEIGHT_STEP = 100;
+const { RFPHelper } = ChromeUtils.import("resource://gre/modules/RFPHelper.jsm");
// A set of test cases which defines the width and the height of the outer window.
const TEST_CASES = [
@@ -50,10 +48,9 @@ function handleOSFuzziness(aContent, aTarget) {
function checkForDefaultSetting(
aContentWidth, aContentHeight, aRealWidth, aRealHeight) {
- // The default behavior for rounding is to round window with 200x100 stepping.
- // So, we can get the rounded size by subtracting the remainder.
- let targetWidth = aRealWidth - (aRealWidth % DEFAULT_ROUNDED_WIDTH_STEP);
- let targetHeight = aRealHeight - (aRealHeight % DEFAULT_ROUNDED_HEIGHT_STEP);
+ // We can get the rounded size by subtracting twice the margin.
+ let targetWidth = aRealWidth - (2 * RFPHelper.steppedRange(aRealWidth));
+ let targetHeight = aRealHeight - (2 * RFPHelper.steppedRange(aRealHeight));
// This platform-specific code is explained in the large comment below.
if (getPlatform() != "linux") {
diff --git a/toolkit/components/resistfingerprinting/RFPHelper.jsm b/toolkit/components/resistfingerprinting/RFPHelper.jsm
index 2f3a1dd0e659..5f23d0679b53 100755
--- a/toolkit/components/resistfingerprinting/RFPHelper.jsm
+++ b/toolkit/components/resistfingerprinting/RFPHelper.jsm
@@ -21,9 +21,6 @@ const kPrefLetterboxingTesting =
const kTopicDOMWindowOpened = "domwindowopened";
const kEventLetterboxingSizeUpdate = "Letterboxing:ContentSizeUpdated";
-const kDefaultWidthStepping = 200;
-const kDefaultHeightStepping = 100;
-
var logConsole;
function log(msg) {
if (!logConsole) {
@@ -338,6 +335,24 @@ class _RFPHelper {
}
/**
+ * Given a width or height, returns the appropriate margin to apply.
+ */
+ steppedRange(aDimension) {
+ let stepping;
+ if (aDimension <= 50) {
+ return 0;
+ } else if (aDimension <= 500) {
+ stepping = 50;
+ } else if (aDimension <= 1600) {
+ stepping = 100;
+ } else {
+ stepping = 200;
+ }
+
+ return (aDimension % stepping) / 2;
+ }
+
+ /**
* The function will round the given browser by adding margins around the
* content viewport.
*/
@@ -373,8 +388,8 @@ class _RFPHelper {
// stepping size.
if (!this._letterboxingDimensions.length) {
result = {
- width: (aWidth % kDefaultWidthStepping) / 2,
- height: (aHeight % kDefaultHeightStepping) / 2,
+ width: this.steppedRange(aWidth),
+ height: this.steppedRange(aHeight),
};
log("_roundContentView[" + logId + "] calcMargins(" + aWidth + ", " + aHeight + ") = " + result.width + " x " + result.height);
return result;
1
0

[tor-browser/tor-browser-60.6.1esr-9.0-1] Bug 1447592 Do not reset the Spoof English pref after disabling Resist Fingerprinting r=johannh
by gk@torproject.org 17 May '19
by gk@torproject.org 17 May '19
17 May '19
commit 69e7b6d159f3d7ec4d8e0987afe1925ade94c0f6
Author: Tom Ritter <tom(a)mozilla.com>
Date: Wed Apr 24 09:22:04 2019 -0500
Bug 1447592 Do not reset the Spoof English pref after disabling Resist Fingerprinting r=johannh
Backports this patch to esr60 just to keep RFPHelper in sync
---
toolkit/components/resistfingerprinting/RFPHelper.jsm | 1 -
1 file changed, 1 deletion(-)
diff --git a/toolkit/components/resistfingerprinting/RFPHelper.jsm b/toolkit/components/resistfingerprinting/RFPHelper.jsm
index 5aef203ad38b..91630d7c169e 100755
--- a/toolkit/components/resistfingerprinting/RFPHelper.jsm
+++ b/toolkit/components/resistfingerprinting/RFPHelper.jsm
@@ -99,7 +99,6 @@ class _RFPHelper {
this._addRFPObservers();
} else {
this._removeRFPObservers();
- Services.prefs.setIntPref(kPrefSpoofEnglish, 0);
}
}
1
0

[tor-browser/tor-browser-60.6.1esr-9.0-1] Bug 1407366 - Part 3: Implementing the window letterboxing. r=johannh
by gk@torproject.org 17 May '19
by gk@torproject.org 17 May '19
17 May '19
commit 06bed4d6845f681755c1e51db9497aeeaa5cd259
Author: Tom Ritter <tom(a)mozilla.com>
Date: Wed Apr 24 09:35:23 2019 -0500
Bug 1407366 - Part 3: Implementing the window letterboxing. r=johannh
This patch implements the window letterboxing. The implementation
is based on adding margins around the browser element to round the
content viewport size. Whenever the browser content is resized, the
RFPHelper will adjust margins around it. But it won't add any margins
for an empty browser or a browser loads a content with the system
principal.
The letterboxing is hidden behind a hidden pref
"privacy.resistFingerprinting.letterboxing." By default, it will use
stepping size 200x100 to round content window. And we can customize
the set of dimensions used for deciding the size of the rounded
content viewport by the pref
"privacy.resistFingerprinting.letterboxing.dimensions". This pref
should be formated as 'width1xheight1, width2xheight2, ...'. We will
find the dimensions which can fit into the real content size and have
the smallest margins to be the rounded content viewport size. For example
, given the set "400x200, 500x300, 800x500" and the real content size
"600x300", we would round the content size into 500x300.
---
browser/base/content/content.js | 4 +
.../components/resistfingerprinting/RFPHelper.jsm | 288 ++++++++++++++++++++-
toolkit/components/resistfingerprinting/moz.build | 2 +-
3 files changed, 291 insertions(+), 3 deletions(-)
diff --git a/browser/base/content/content.js b/browser/base/content/content.js
index d04adab3095a..9d5aa51dbfc9 100644
--- a/browser/base/content/content.js
+++ b/browser/base/content/content.js
@@ -40,6 +40,10 @@ var contextMenu = this.contextMenu = new ContextMenu(global);
// Load the form validation popup handler
var formSubmitObserver = new FormSubmitObserver(content, this);
+addEventListener("resize", function() {
+ sendAsyncMessage("Letterboxing:ContentSizeUpdated");
+});
+
addMessageListener("RemoteLogins:fillForm", function(message) {
// intercept if ContextMenu.jsm had sent a plain object for remote targets
message.objects.inputElement = contextMenu.getTarget(message, "inputElement");
diff --git a/toolkit/components/resistfingerprinting/RFPHelper.jsm b/toolkit/components/resistfingerprinting/RFPHelper.jsm
index 91630d7c169e..4fb889ab16fe 100755
--- a/toolkit/components/resistfingerprinting/RFPHelper.jsm
+++ b/toolkit/components/resistfingerprinting/RFPHelper.jsm
@@ -13,9 +13,18 @@ const kPrefResistFingerprinting = "privacy.resistFingerprinting";
const kPrefSpoofEnglish = "privacy.spoof_english";
const kTopicHttpOnModifyRequest = "http-on-modify-request";
+const kPrefLetterboxing = "privacy.resistFingerprinting.letterboxing";
+const kPrefLetterboxingDimensions =
+ "privacy.resistFingerprinting.letterboxing.dimensions";
+const kTopicDOMWindowOpened = "domwindowopened";
+const kEventLetterboxingSizeUpdate = "Letterboxing:ContentSizeUpdated";
+
+const kDefaultWidthStepping = 200;
+const kDefaultHeightStepping = 100;
+
class _RFPHelper {
// ============================================================================
- // Setup
+ // Shared Setup
// ============================================================================
constructor() {
this._initialized = false;
@@ -29,8 +38,13 @@ class _RFPHelper {
// Add unconditional observers
Services.prefs.addObserver(kPrefResistFingerprinting, this);
- // Add RFP observers if the pref is enabled
+ Services.prefs.addObserver(kPrefLetterboxing, this);
+ XPCOMUtils.defineLazyPreferenceGetter(this, "_letterboxingDimensions",
+ kPrefLetterboxingDimensions, "", null, this._parseLetterboxingDimensions);
+
+ // Add RFP and Letterboxing observers if prefs are enabled
this._handleResistFingerprintingChanged();
+ this._handleLetterboxingPrefChanged();
}
uninit() {
@@ -41,6 +55,7 @@ class _RFPHelper {
// Remove unconditional observers
Services.prefs.removeObserver(kPrefResistFingerprinting, this);
+ Services.prefs.removeObserver(kPrefLetterboxing, this);
// Remove the RFP observers, swallowing exceptions if they weren't present
this._removeRFPObservers();
}
@@ -53,6 +68,36 @@ class _RFPHelper {
case kTopicHttpOnModifyRequest:
this._handleHttpOnModifyRequest(subject, data);
break;
+ case kTopicDOMWindowOpened:
+ // We attach to the newly created window by adding tabsProgressListener
+ // and event listener on it. We listen for new tabs being added or
+ // the change of the content principal and apply margins accordingly.
+ this._handleDOMWindowOpened(subject);
+ break;
+ default:
+ break;
+ }
+ }
+
+ handleEvent(aMessage) {
+ switch (aMessage.type) {
+ case "TabOpen":
+ {
+ let tab = aMessage.target;
+ this._addOrClearContentMargin(tab.linkedBrowser);
+ break;
+ }
+ default:
+ break;
+ }
+ }
+
+ receiveMessage(aMessage) {
+ switch (aMessage.name) {
+ case kEventLetterboxingSizeUpdate:
+ let win = aMessage.target.ownerGlobal;
+ this._updateMarginsForTabsInWindow(win);
+ break;
default:
break;
}
@@ -66,6 +111,9 @@ class _RFPHelper {
case kPrefSpoofEnglish:
this._handleSpoofEnglishChanged();
break;
+ case kPrefLetterboxing:
+ this._handleLetterboxingPrefChanged();
+ break;
default:
break;
}
@@ -211,6 +259,242 @@ class _RFPHelper {
}
return httpChannel.getRequestHeader("Accept-Language");
}
+
+ // ==============================================================================
+ // Letterboxing
+ // ============================================================================
+ /**
+ * We use the TabsProgressListener to catch the change of the content
+ * principal. We would clear the margins around the content viewport if
+ * it is the system principal.
+ */
+ onLocationChange(aBrowser) {
+ this._addOrClearContentMargin(aBrowser);
+ }
+
+ _handleLetterboxingPrefChanged() {
+ if (Services.prefs.getBoolPref(kPrefLetterboxing, false)) {
+ Services.ww.registerNotification(this);
+ this._attachAllWindows();
+ } else {
+ this._detachAllWindows();
+ Services.ww.unregisterNotification(this);
+ }
+ }
+
+ // The function to parse the dimension set from the pref value. The pref value
+ // should be formated as 'width1xheight1, width2xheight2, ...'. For
+ // example, '100x100, 200x200, 400x200 ...'.
+ _parseLetterboxingDimensions(aPrefValue) {
+ if (!aPrefValue || !aPrefValue.match(/^(?:\d+x\d+,\s*)*(?:\d+x\d+)$/)) {
+ if (aPrefValue) {
+ Cu.reportError(`Invalid pref value for ${kPrefLetterboxingDimensions}: ${aPrefValue}`);
+ }
+ return [];
+ }
+
+ return aPrefValue.split(",").map(item => {
+ let sizes = item.split("x").map(size => parseInt(size, 10));
+
+ return {
+ width: sizes[0],
+ height: sizes[1],
+ };
+ });
+ }
+
+ _addOrClearContentMargin(aBrowser) {
+ let tab = aBrowser.getTabBrowser()
+ .getTabForBrowser(aBrowser);
+
+ // We won't do anything for lazy browsers.
+ if (!aBrowser.isConnected) {
+ return;
+ }
+
+ // We should apply no margin around an empty tab or a tab with system
+ // principal.
+ if (tab.isEmpty || aBrowser.contentPrincipal.isSystemPrincipal) {
+ this._clearContentViewMargin(aBrowser);
+ } else {
+ this._roundContentView(aBrowser);
+ }
+ }
+
+ /**
+ * The function will round the given browser by adding margins around the
+ * content viewport.
+ */
+ async _roundContentView(aBrowser) {
+ let win = aBrowser.ownerGlobal;
+ let browserContainer = aBrowser.getTabBrowser()
+ .getBrowserContainer(aBrowser);
+
+ let {contentWidth, contentHeight, containerWidth, containerHeight} =
+ await win.promiseDocumentFlushed(() => {
+ let contentWidth = aBrowser.clientWidth;
+ let contentHeight = aBrowser.clientHeight;
+ let containerWidth = browserContainer.clientWidth;
+ let containerHeight = browserContainer.clientHeight;
+
+ return {
+ contentWidth,
+ contentHeight,
+ containerWidth,
+ containerHeight,
+ };
+ });
+
+ let calcMargins = (aWidth, aHeight) => {
+ // If the set is empty, we will round the content with the default
+ // stepping size.
+ if (!this._letterboxingDimensions.length) {
+ return {
+ width: (aWidth % kDefaultWidthStepping) / 2,
+ height: (aHeight % kDefaultHeightStepping) / 2,
+ };
+ }
+
+ let matchingArea = aWidth * aHeight;
+ let minWaste = Number.MAX_SAFE_INTEGER;
+ let targetDimensions = undefined;
+
+ // Find the desired dimensions which waste the least content area.
+ for (let dim of this._letterboxingDimensions) {
+ // We don't need to consider the dimensions which cannot fit into the
+ // real content size.
+ if (dim.width > aWidth || dim.height > aHeight) {
+ continue;
+ }
+
+ let waste = matchingArea - dim.width * dim.height;
+
+ if (waste >= 0 && waste < minWaste) {
+ targetDimensions = dim;
+ minWaste = waste;
+ }
+ }
+
+ let result;
+ // If we cannot find any dimensions match to the real content window, this
+ // means the content area is smaller the smallest size in the set. In this
+ // case, we won't apply any margins.
+ if (!targetDimensions) {
+ result = {
+ width: 0,
+ height: 0,
+ };
+ } else {
+ result = {
+ width: (aWidth - targetDimensions.width) / 2,
+ height: (aHeight - targetDimensions.height) / 2,
+ };
+ }
+
+ return result;
+ };
+
+ // Calculating the margins around the browser element in order to round the
+ // content viewport. We will use a 200x100 stepping if the dimension set
+ // is not given.
+ let margins = calcMargins(containerWidth, containerHeight);
+
+ // If the size of the content is already quantized, we do nothing.
+ if (aBrowser.style.margin == `${margins.height}px ${margins.width}px`) {
+ return;
+ }
+
+ win.requestAnimationFrame(() => {
+ // One cannot (easily) control the color of a margin unfortunately.
+ // An initial attempt to use a border instead of a margin resulted
+ // in offset event dispatching; so for now we use a colorless margin.
+ aBrowser.style.margin = `${margins.height}px ${margins.width}px`;
+ });
+ }
+
+ _clearContentViewMargin(aBrowser) {
+ aBrowser.ownerGlobal.requestAnimationFrame(() => {
+ aBrowser.style.margin = "";
+ });
+ }
+
+ _updateMarginsForTabsInWindow(aWindow) {
+ let tabBrowser = aWindow.gBrowser;
+
+ for (let tab of tabBrowser.tabs) {
+ let browser = tab.linkedBrowser;
+ this._addOrClearContentMargin(browser);
+ }
+ }
+
+ _attachWindow(aWindow) {
+ aWindow.gBrowser
+ .addTabsProgressListener(this);
+ aWindow.addEventListener("TabOpen", this);
+ aWindow.messageManager
+ .addMessageListener(kEventLetterboxingSizeUpdate, this);
+
+ // Rounding the content viewport.
+ this._updateMarginsForTabsInWindow(aWindow);
+ }
+
+ _attachAllWindows() {
+ let windowList = Services.wm.getEnumerator("navigator:browser");
+
+ while (windowList.hasMoreElements()) {
+ let win = windowList.getNext();
+
+ if (win.closed || !win.gBrowser) {
+ continue;
+ }
+
+ this._attachWindow(win);
+ }
+ }
+
+ _detachWindow(aWindow) {
+ let tabBrowser = aWindow.gBrowser;
+ tabBrowser.removeTabsProgressListener(this);
+ aWindow.removeEventListener("TabOpen", this);
+ aWindow.messageManager
+ .removeMessageListener(kEventLetterboxingSizeUpdate, this);
+
+ // Clear all margins and tooltip for all browsers.
+ for (let tab of tabBrowser.tabs) {
+ let browser = tab.linkedBrowser;
+ this._clearContentViewMargin(browser);
+ }
+ }
+
+ _detachAllWindows() {
+ let windowList = Services.wm.getEnumerator("navigator:browser");
+
+ while (windowList.hasMoreElements()) {
+ let win = windowList.getNext();
+
+ if (win.closed || !win.gBrowser) {
+ continue;
+ }
+
+ this._detachWindow(win);
+ }
+ }
+
+ _handleDOMWindowOpened(aSubject) {
+ let win = aSubject.QueryInterface(Ci.nsIDOMWindow);
+ let self = this;
+
+ win.addEventListener("load", () => {
+ // We attach to the new window when it has been loaded if the new loaded
+ // window is a browsing window.
+ if (win.document
+ .documentElement
+ .getAttribute("windowtype") !== "navigator:browser") {
+ return;
+ }
+ self._attachWindow(win);
+ }, {once: true});
+ }
}
let RFPHelper = new _RFPHelper();
diff --git a/toolkit/components/resistfingerprinting/moz.build b/toolkit/components/resistfingerprinting/moz.build
index 021f2786f966..f0c904d9c944 100644
--- a/toolkit/components/resistfingerprinting/moz.build
+++ b/toolkit/components/resistfingerprinting/moz.build
@@ -21,5 +21,5 @@ EXPORTS.mozilla += [
]
EXTRA_JS_MODULES += [
- 'RFPHelper.jsm',
+ 'RFPHelper.jsm'
]
1
0

[tor-browser/tor-browser-60.6.1esr-9.0-1] Bug 1407366 - Part 2: Rearrange RFPHelper for expansion r=johannh
by gk@torproject.org 17 May '19
by gk@torproject.org 17 May '19
17 May '19
commit 7f3ce3ef4cf86690864a4abd7ca58a9e5dbb087f
Author: Tom Ritter <tom(a)mozilla.com>
Date: Wed Apr 24 09:17:53 2019 -0500
Bug 1407366 - Part 2: Rearrange RFPHelper for expansion r=johannh
This patch rearranges RFPHelper.jsm to make it more clear what parts
of the file are responsible for what feature.
---
.../components/resistfingerprinting/RFPHelper.jsm | 62 +++++++++++++---------
1 file changed, 38 insertions(+), 24 deletions(-)
diff --git a/toolkit/components/resistfingerprinting/RFPHelper.jsm b/toolkit/components/resistfingerprinting/RFPHelper.jsm
index 2e8e85072364..5aef203ad38b 100755
--- a/toolkit/components/resistfingerprinting/RFPHelper.jsm
+++ b/toolkit/components/resistfingerprinting/RFPHelper.jsm
@@ -14,6 +14,9 @@ const kPrefSpoofEnglish = "privacy.spoof_english";
const kTopicHttpOnModifyRequest = "http-on-modify-request";
class _RFPHelper {
+ // ============================================================================
+ // Setup
+ // ============================================================================
constructor() {
this._initialized = false;
}
@@ -24,7 +27,9 @@ class _RFPHelper {
}
this._initialized = true;
+ // Add unconditional observers
Services.prefs.addObserver(kPrefResistFingerprinting, this);
+ // Add RFP observers if the pref is enabled
this._handleResistFingerprintingChanged();
}
@@ -34,8 +39,10 @@ class _RFPHelper {
}
this._initialized = false;
+ // Remove unconditional observers
Services.prefs.removeObserver(kPrefResistFingerprinting, this);
- this._removeObservers();
+ // Remove the RFP observers, swallowing exceptions if they weren't present
+ this._removeRFPObservers();
}
observe(subject, topic, data) {
@@ -51,24 +58,6 @@ class _RFPHelper {
}
}
- _removeObservers() {
- try {
- Services.pref.removeObserver(kPrefSpoofEnglish, this);
- } catch (e) {
- // do nothing
- }
- try {
- Services.obs.removeObserver(this, kTopicHttpOnModifyRequest);
- } catch (e) {
- // do nothing
- }
- }
-
- _shouldPromptForLanguagePref() {
- return (Services.locale.getAppLocaleAsLangTag().substr(0, 2) !== "en")
- && (Services.prefs.getIntPref(kPrefSpoofEnglish) === 0);
- }
-
_handlePrefChanged(data) {
switch (data) {
case kPrefResistFingerprinting:
@@ -82,14 +71,34 @@ class _RFPHelper {
}
}
+ // ============================================================================
+ // Language Prompt
+ // ============================================================================
+ _addRFPObservers() {
+ Services.prefs.addObserver(kPrefSpoofEnglish, this);
+ if (this._shouldPromptForLanguagePref()) {
+ Services.obs.addObserver(this, kTopicHttpOnModifyRequest);
+ }
+ }
+
+ _removeRFPObservers() {
+ try {
+ Services.pref.removeObserver(kPrefSpoofEnglish, this);
+ } catch (e) {
+ // do nothing
+ }
+ try {
+ Services.obs.removeObserver(this, kTopicHttpOnModifyRequest);
+ } catch (e) {
+ // do nothing
+ }
+ }
+
_handleResistFingerprintingChanged() {
if (Services.prefs.getBoolPref(kPrefResistFingerprinting)) {
- Services.prefs.addObserver(kPrefSpoofEnglish, this);
- if (this._shouldPromptForLanguagePref()) {
- Services.obs.addObserver(this, kTopicHttpOnModifyRequest);
- }
+ this._addRFPObservers();
} else {
- this._removeObservers();
+ this._removeRFPObservers();
Services.prefs.setIntPref(kPrefSpoofEnglish, 0);
}
}
@@ -116,6 +125,11 @@ class _RFPHelper {
}
}
+ _shouldPromptForLanguagePref() {
+ return (Services.locale.getAppLocaleAsLangTag().substr(0, 2) !== "en")
+ && (Services.prefs.getIntPref(kPrefSpoofEnglish) === 0);
+ }
+
_handleHttpOnModifyRequest(subject, data) {
// If we are loading an HTTP page from content, show the
// "request English language web pages?" prompt.
1
0

[tor-browser/tor-browser-60.6.1esr-9.0-1] Bug 1407366 - Part 4: Adding a test case for testing letterboxing. r=johannh
by gk@torproject.org 17 May '19
by gk@torproject.org 17 May '19
17 May '19
commit 610ad333716499f5f9cf704a1dd97e07d276f572
Author: Tom Ritter <tom(a)mozilla.com>
Date: Wed Apr 24 09:36:29 2019 -0500
Bug 1407366 - Part 4: Adding a test case for testing letterboxing. r=johannh
This patch adds a test for ensuring the letterboxing works as we expect.
It will open a tab and resize its window into several different sizes
and to see if the margins are correctly apply. And it will also check
that no margin should apply to a tab with chrome privilege.
---
.../resistfingerprinting/test/browser/browser.ini | 1 +
.../browser/browser_dynamical_window_rounding.js | 277 +++++++++++++++++++++
modules/libpref/init/all.js | 3 +
.../components/resistfingerprinting/RFPHelper.jsm | 35 ++-
4 files changed, 314 insertions(+), 2 deletions(-)
diff --git a/browser/components/resistfingerprinting/test/browser/browser.ini b/browser/components/resistfingerprinting/test/browser/browser.ini
index 024ee29907b4..1aa918b4574b 100644
--- a/browser/components/resistfingerprinting/test/browser/browser.ini
+++ b/browser/components/resistfingerprinting/test/browser/browser.ini
@@ -11,6 +11,7 @@ support-files =
head.js
[browser_block_mozAddonManager.js]
+[browser_dynamical_window_rounding.js]
[browser_navigator.js]
[browser_netInfo.js]
[browser_performanceAPI.js]
diff --git a/browser/components/resistfingerprinting/test/browser/browser_dynamical_window_rounding.js b/browser/components/resistfingerprinting/test/browser/browser_dynamical_window_rounding.js
new file mode 100644
index 000000000000..ea261b7820d7
--- /dev/null
+++ b/browser/components/resistfingerprinting/test/browser/browser_dynamical_window_rounding.js
@@ -0,0 +1,277 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * Bug 1407366 - A test case for reassuring the size of the content viewport is
+ * rounded if the window is resized when letterboxing is enabled.
+ */
+
+const TEST_PATH = "http://example.net/browser/browser/components/resistfingerprinting/test/bro…";
+
+const DEFAULT_ROUNDED_WIDTH_STEP = 200;
+const DEFAULT_ROUNDED_HEIGHT_STEP = 100;
+
+// A set of test cases which defines the width and the height of the outer window.
+const TEST_CASES = [
+ {width: 1250, height: 1000},
+ {width: 1500, height: 1050},
+ {width: 1120, height: 760},
+ {width: 800, height: 600},
+ {width: 640, height: 400},
+ {width: 500, height: 350},
+ {width: 300, height: 170},
+];
+
+function getPlatform() {
+ const {OS} = Services.appinfo;
+ if (OS == "WINNT") {
+ return "win";
+ } else if (OS == "Darwin") {
+ return "mac";
+ }
+ return "linux";
+}
+
+function handleOSFuzziness(aContent, aTarget) {
+ /*
+ * On Windows, we observed off-by-one pixel differences that
+ * couldn't be expained. When manually setting the window size
+ * to try to reproduce it; it did not occur.
+ */
+ if (getPlatform() == "win") {
+ return Math.abs(aContent - aTarget) <= 1;
+ }
+ return aContent == aTarget;
+}
+
+function checkForDefaultSetting(
+ aContentWidth, aContentHeight, aRealWidth, aRealHeight) {
+ // The default behavior for rounding is to round window with 200x100 stepping.
+ // So, we can get the rounded size by subtracting the remainder.
+ let targetWidth = aRealWidth - (aRealWidth % DEFAULT_ROUNDED_WIDTH_STEP);
+ let targetHeight = aRealHeight - (aRealHeight % DEFAULT_ROUNDED_HEIGHT_STEP);
+
+ // This platform-specific code is explained in the large comment below.
+ if (getPlatform() != "linux") {
+ ok(handleOSFuzziness(aContentWidth, targetWidth),
+ `Default Dimensions: The content window width is correctly rounded into. ${aRealWidth}px -> ${aContentWidth}px should equal ${targetWidth}px`);
+
+ ok(handleOSFuzziness(aContentHeight, targetHeight),
+ `Default Dimensions: The content window height is correctly rounded into. ${aRealHeight}px -> ${aContentHeight}px should equal ${targetHeight}px`);
+
+ // Using ok() above will cause Win/Mac to fail on even the first test, we don't need to repeat it, return true so waitForCondition ends
+ return true;
+ }
+ // Returning true or false depending on if the test succeeded will cause Linux to repeat until it succeeds.
+ return handleOSFuzziness(aContentWidth, targetWidth) && handleOSFuzziness(aContentHeight, targetHeight);
+}
+
+async function test_dynamical_window_rounding(aWindow, aCheckFunc) {
+ // We need to wait for the updating the margins for the newly opened tab, or
+ // it will affect the following tests.
+ let promiseForTheFirstRounding =
+ TestUtils.topicObserved("test:letterboxing:update-margin-finish");
+
+ info("Open a content tab for testing.");
+ let tab = await BrowserTestUtils.openNewForegroundTab(
+ aWindow.gBrowser, TEST_PATH + "file_dummy.html");
+
+ info("Wait until the margins are applied for the opened tab.");
+ await promiseForTheFirstRounding;
+
+ let getContainerSize = (aTab) => {
+ let browserContainer = aWindow.gBrowser
+ .getBrowserContainer(aTab.linkedBrowser);
+ return {
+ containerWidth: browserContainer.clientWidth,
+ containerHeight: browserContainer.clientHeight,
+ };
+ };
+
+ for (let {width, height} of TEST_CASES) {
+ let caseString = "Case " + width + "x" + height + ": ";
+ // Create a promise for waiting for the margin update.
+ let promiseRounding =
+ TestUtils.topicObserved("test:letterboxing:update-margin-finish");
+
+ let {containerWidth, containerHeight} = getContainerSize(tab);
+
+ info(caseString + "Resize the window and wait until resize event happened (currently " +
+ containerWidth + "x" + containerHeight + ")");
+ await new Promise(resolve => {
+ ({containerWidth, containerHeight} = getContainerSize(tab));
+ info(caseString + "Resizing (currently " + containerWidth + "x" + containerHeight + ")");
+
+ aWindow.onresize = () => {
+ ({containerWidth, containerHeight} = getContainerSize(tab));
+ info(caseString + "Resized (currently " + containerWidth + "x" + containerHeight + ")");
+ if (getPlatform() == "linux" && containerWidth != width) {
+ /*
+ * We observed frequent test failures that resulted from receiving an onresize
+ * event where the browser was resized to an earlier requested dimension. This
+ * resize event happens on Linux only, and is an artifact of the asynchronous
+ * resizing. (See more discussion on 1407366#53)
+ *
+ * We cope with this problem in two ways.
+ *
+ * 1: If we detect that the browser was resized to the wrong value; we
+ * redo the resize. (This is the lines of code immediately following this
+ * comment)
+ * 2: We repeat the test until it works using waitForCondition(). But we still
+ * test Win/Mac more thoroughly: they do not loop in waitForCondition more
+ * than once, and can fail the test on the first attempt (because their
+ * check() functions use ok() while on Linux, we do not all ok() and instead
+ * rely on waitForCondition to fail).
+ *
+ * The logging statements in this test, and RFPHelper.jsm, help narrow down and
+ * illustrate the issue.
+ */
+ info(caseString + "We hit the weird resize bug. Resize it again.");
+ aWindow.resizeTo(width, height);
+ } else {
+ resolve();
+ }
+ };
+ aWindow.resizeTo(width, height);
+ });
+
+ ({containerWidth, containerHeight} = getContainerSize(tab));
+ info(caseString + "Waiting until margin has been updated on browser element. (currently " +
+ containerWidth + "x" + containerHeight + ")");
+ await promiseRounding;
+
+ info(caseString + "Get innerWidth/Height from the content.");
+ await BrowserTestUtils.waitForCondition(async () => {
+ let {contentWidth, contentHeight} = await ContentTask.spawn(
+ tab.linkedBrowser, null, () => {
+ return {
+ contentWidth: content.innerWidth,
+ contentHeight: content.innerHeight,
+ };
+ });
+
+ info(caseString + "Check the result.");
+ return aCheckFunc(contentWidth, contentHeight, containerWidth, containerHeight);
+ }, "Default Dimensions: The content window width is correctly rounded into.");
+ }
+
+ BrowserTestUtils.removeTab(tab);
+}
+
+async function test_customize_width_and_height(aWindow) {
+ const test_dimensions = `120x80, 200x143, 335x255, 600x312, 742x447, 813x558,
+ 990x672, 1200x733, 1470x858`;
+
+ await SpecialPowers.pushPrefEnv({"set":
+ [
+ ["privacy.resistFingerprinting.letterboxing.dimensions", test_dimensions],
+ ],
+ });
+
+ let dimensions_set = test_dimensions.split(",").map(item => {
+ let sizes = item.split("x").map(size => parseInt(size, 10));
+
+ return {
+ width: sizes[0],
+ height: sizes[1],
+ };
+ });
+
+ let checkDimension =
+ (aContentWidth, aContentHeight, aRealWidth, aRealHeight) => {
+ let matchingArea = aRealWidth * aRealHeight;
+ let minWaste = Number.MAX_SAFE_INTEGER;
+ let targetDimensions = undefined;
+
+ // Find the dimensions which waste the least content area.
+ for (let dim of dimensions_set) {
+ if (dim.width > aRealWidth || dim.height > aRealHeight) {
+ continue;
+ }
+
+ let waste = matchingArea - dim.width * dim.height;
+
+ if (waste >= 0 && waste < minWaste) {
+ targetDimensions = dim;
+ minWaste = waste;
+ }
+ }
+
+ // This platform-specific code is explained in the large comment above.
+ if (getPlatform() != "linux") {
+ ok(handleOSFuzziness(aContentWidth, targetDimensions.width),
+ `Custom Dimension: The content window width is correctly rounded into. ${aRealWidth}px -> ${aContentWidth}px should equal ${targetDimensions.width}`);
+
+ ok(handleOSFuzziness(aContentHeight, targetDimensions.height),
+ `Custom Dimension: The content window height is correctly rounded into. ${aRealHeight}px -> ${aContentHeight}px should equal ${targetDimensions.height}`);
+
+ // Using ok() above will cause Win/Mac to fail on even the first test, we don't need to repeat it, return true so waitForCondition ends
+ return true;
+ }
+ // Returning true or false depending on if the test succeeded will cause Linux to repeat until it succeeds.
+ return handleOSFuzziness(aContentWidth, targetDimensions.width) && handleOSFuzziness(aContentHeight, targetDimensions.height);
+ };
+
+ await test_dynamical_window_rounding(aWindow, checkDimension);
+
+ await SpecialPowers.popPrefEnv();
+}
+
+async function test_no_rounding_for_chrome(aWindow) {
+ // First, resize the window to a size with is not rounded.
+ await new Promise(resolve => {
+ aWindow.onresize = () => resolve();
+ aWindow.resizeTo(700, 450);
+ });
+
+ // open a chrome privilege tab, like about:config.
+ let tab = await BrowserTestUtils.openNewForegroundTab(
+ aWindow.gBrowser, "about:config");
+
+ // Check that the browser element should not have a margin.
+ is(tab.linkedBrowser.style.margin, "", "There is no margin around chrome tab.");
+
+ BrowserTestUtils.removeTab(tab);
+}
+
+add_task(async function setup() {
+ await SpecialPowers.pushPrefEnv({"set":
+ [
+ ["privacy.resistFingerprinting.letterboxing", true],
+ ["privacy.resistFingerprinting.letterboxing.testing", true],
+ ],
+ });
+});
+
+add_task(async function do_tests() {
+ // Store the original window size before testing.
+ let originalOuterWidth = window.outerWidth;
+ let originalOuterHeight = window.outerHeight;
+
+ info("Run test for the default window rounding.");
+ await test_dynamical_window_rounding(window, checkForDefaultSetting);
+
+ info("Run test for the window rounding with customized dimensions.");
+ await test_customize_width_and_height(window);
+
+ info("Run test for no margin around tab with the chrome privilege.");
+ await test_no_rounding_for_chrome(window);
+
+ // Restore the original window size.
+ window.outerWidth = originalOuterWidth;
+ window.outerHeight = originalOuterHeight;
+
+ // Testing that whether the dynamical rounding works for new windows.
+ let win = await BrowserTestUtils.openNewBrowserWindow();
+
+ info("Run test for the default window rounding in new window.");
+ await test_dynamical_window_rounding(win, checkForDefaultSetting);
+
+ info("Run test for the window rounding with customized dimensions in new window.");
+ await test_customize_width_and_height(win);
+
+ info("Run test for no margin around tab with the chrome privilege in new window.");
+ await test_no_rounding_for_chrome(win);
+
+ await BrowserTestUtils.closeWindow(win);
+});
diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js
index 9dc30b8efe44..5b1d0a1c8972 100644
--- a/modules/libpref/init/all.js
+++ b/modules/libpref/init/all.js
@@ -1414,6 +1414,9 @@ pref("privacy.resistFingerprinting", false);
// If you do set it, to work around some broken website, please file a bug with
// information so we can understand why it is needed.
pref("privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts", true);
+// The log level for browser console messages logged in RFPHelper.jsm
+// Change to 'All' and restart to see the messages
+pref("privacy.resistFingerprinting.jsmloglevel", "Warn");
// A subset of Resist Fingerprinting protections focused specifically on timers for testing
// This affects the Animation API, the performance APIs, Date.getTime, Event.timestamp,
// File.lastModified, audioContext.currentTime, canvas.captureStream.currentTime
diff --git a/toolkit/components/resistfingerprinting/RFPHelper.jsm b/toolkit/components/resistfingerprinting/RFPHelper.jsm
index 4fb889ab16fe..2f3a1dd0e659 100755
--- a/toolkit/components/resistfingerprinting/RFPHelper.jsm
+++ b/toolkit/components/resistfingerprinting/RFPHelper.jsm
@@ -16,12 +16,26 @@ const kTopicHttpOnModifyRequest = "http-on-modify-request";
const kPrefLetterboxing = "privacy.resistFingerprinting.letterboxing";
const kPrefLetterboxingDimensions =
"privacy.resistFingerprinting.letterboxing.dimensions";
+const kPrefLetterboxingTesting =
+ "privacy.resistFingerprinting.letterboxing.testing";
const kTopicDOMWindowOpened = "domwindowopened";
const kEventLetterboxingSizeUpdate = "Letterboxing:ContentSizeUpdated";
const kDefaultWidthStepping = 200;
const kDefaultHeightStepping = 100;
+var logConsole;
+function log(msg) {
+ if (!logConsole) {
+ logConsole = console.createInstance({
+ prefix: "RFPHelper.jsm",
+ maxLogLevelPref: "privacy.resistFingerprinting.jsmloglevel",
+ });
+ }
+
+ logConsole.log(msg);
+}
+
class _RFPHelper {
// ============================================================================
// Shared Setup
@@ -41,6 +55,8 @@ class _RFPHelper {
Services.prefs.addObserver(kPrefLetterboxing, this);
XPCOMUtils.defineLazyPreferenceGetter(this, "_letterboxingDimensions",
kPrefLetterboxingDimensions, "", null, this._parseLetterboxingDimensions);
+ XPCOMUtils.defineLazyPreferenceGetter(this, "_isLetterboxingTesting",
+ kPrefLetterboxingTesting, false);
// Add RFP and Letterboxing observers if prefs are enabled
this._handleResistFingerprintingChanged();
@@ -326,6 +342,8 @@ class _RFPHelper {
* content viewport.
*/
async _roundContentView(aBrowser) {
+ let logId = Math.random();
+ log("_roundContentView[" + logId + "]");
let win = aBrowser.ownerGlobal;
let browserContainer = aBrowser.getTabBrowser()
.getBrowserContainer(aBrowser);
@@ -345,14 +363,21 @@ class _RFPHelper {
};
});
+ log("_roundContentView[" + logId + "] contentWidth=" + contentWidth + " contentHeight=" + contentHeight +
+ " containerWidth=" + containerWidth + " containerHeight=" + containerHeight + " ");
+
let calcMargins = (aWidth, aHeight) => {
+ let result;
+ log("_roundContentView[" + logId + "] calcMargins(" + aWidth + ", " + aHeight + ")");
// If the set is empty, we will round the content with the default
// stepping size.
if (!this._letterboxingDimensions.length) {
- return {
+ result = {
width: (aWidth % kDefaultWidthStepping) / 2,
height: (aHeight % kDefaultHeightStepping) / 2,
};
+ log("_roundContentView[" + logId + "] calcMargins(" + aWidth + ", " + aHeight + ") = " + result.width + " x " + result.height);
+ return result;
}
let matchingArea = aWidth * aHeight;
@@ -375,7 +400,6 @@ class _RFPHelper {
}
}
- let result;
// If we cannot find any dimensions match to the real content window, this
// means the content area is smaller the smallest size in the set. In this
// case, we won't apply any margins.
@@ -391,6 +415,7 @@ class _RFPHelper {
};
}
+ log("_roundContentView[" + logId + "] calcMargins(" + aWidth + ", " + aHeight + ") = " + result.width + " x " + result.height);
return result;
};
@@ -401,10 +426,16 @@ class _RFPHelper {
// If the size of the content is already quantized, we do nothing.
if (aBrowser.style.margin == `${margins.height}px ${margins.width}px`) {
+ log("_roundContentView[" + logId + "] is_rounded == true");
+ if (this._isLetterboxingTesting) {
+ log("_roundContentView[" + logId + "] is_rounded == true test:letterboxing:update-margin-finish");
+ Services.obs.notifyObservers(null, "test:letterboxing:update-margin-finish");
+ }
return;
}
win.requestAnimationFrame(() => {
+ log("_roundContentView[" + logId + "] setting margins to " + margins.width + " x " + margins.height);
// One cannot (easily) control the color of a margin unfortunately.
// An initial attempt to use a border instead of a margin resulted
// in offset event dispatching; so for now we use a colorless margin.
1
0