tbb-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
- 1 participants
- 18605 discussions

[tor-browser-bundle/master] Bug 17414: Move logfiles to separate dir.
by gk@torproject.org 23 Oct '15
by gk@torproject.org 23 Oct '15
23 Oct '15
commit df6acda1f483779cb9b6437ac067670212bca3fd
Author: Linus Nordberg <linus(a)torproject.org>
Date: Mon Oct 19 12:08:19 2015 +0200
Bug 17414: Move logfiles to separate dir.
---
tools/continuous-builds/build-tbb.sh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/continuous-builds/build-tbb.sh b/tools/continuous-builds/build-tbb.sh
index 434d61b..f1be4ef 100755
--- a/tools/continuous-builds/build-tbb.sh
+++ b/tools/continuous-builds/build-tbb.sh
@@ -29,7 +29,7 @@ N=$6; [ -z "$N" ] && N=16
[ -z "$MAILX" ] && MAILX=""
# Name of log file.
-logfile=$(date -u +%s).log
+logfile=build-logs/$(date -u +%s).log
# LOGRECIPIENTS is a space separated list of email addresses or an
# empty string.
@@ -50,7 +50,7 @@ while [ $status != done ]; do
printf "%s: Starting build number %d. target=$TARGET.\n" $0 $n | tee -a $logfile
date | tee -a $logfile
killall qemu-system-i386 qemu-system-x86_64
- make $MAKE_TARGET > build-$(date -u +%s).log && status=done
+ make $MAKE_TARGET > build-logs/build-$(date -u +%s).log && status=done
printf "%s: Tried building $MAKE_TARGET %d times. Status: %s.\n" $0 $n $status | tee -a $logfile
MAKE_TARGET=build-$TARGET
[ $n -ge $N ] && break
1
0
commit 7175e912d8d9d1ed0ef51dd35d845e613219b572
Author: Georg Koppen <gk(a)torproject.org>
Date: Wed Oct 21 08:00:02 2015 +0000
Update translations
---
src/chrome/locale/ach/network-settings.dtd | 4 +
src/chrome/locale/ady/network-settings.dtd | 4 +
src/chrome/locale/af/network-settings.dtd | 4 +
src/chrome/locale/ak/network-settings.dtd | 4 +
src/chrome/locale/am-ET/torlauncher.properties | 8 +-
src/chrome/locale/am/network-settings.dtd | 4 +
src/chrome/locale/ar/network-settings.dtd | 12 ++-
src/chrome/locale/arn/network-settings.dtd | 4 +
src/chrome/locale/ast/network-settings.dtd | 4 +
src/chrome/locale/az/network-settings.dtd | 4 +
src/chrome/locale/be/network-settings.dtd | 4 +
src/chrome/locale/bg/network-settings.dtd | 4 +
src/chrome/locale/bn-IN/network-settings.dtd | 4 +
src/chrome/locale/bn/network-settings.dtd | 4 +
src/chrome/locale/bo/network-settings.dtd | 4 +
src/chrome/locale/br/network-settings.dtd | 4 +
src/chrome/locale/bs/network-settings.dtd | 4 +
src/chrome/locale/ca/network-settings.dtd | 4 +
src/chrome/locale/cs/network-settings.dtd | 8 +-
src/chrome/locale/csb/network-settings.dtd | 4 +
src/chrome/locale/cv/network-settings.dtd | 4 +
src/chrome/locale/cy/network-settings.dtd | 4 +
src/chrome/locale/da/network-settings.dtd | 4 +
src/chrome/locale/de/network-settings.dtd | 6 +-
src/chrome/locale/dz/network-settings.dtd | 4 +
src/chrome/locale/el/network-settings.dtd | 16 ++--
src/chrome/locale/en-GB/network-settings.dtd | 4 +
src/chrome/locale/eo/network-settings.dtd | 4 +
src/chrome/locale/es-AR/network-settings.dtd | 4 +
src/chrome/locale/es-CL/network-settings.dtd | 4 +
src/chrome/locale/es-CO/network-settings.dtd | 4 +
src/chrome/locale/es-MX/network-settings.dtd | 6 +-
src/chrome/locale/es/network-settings.dtd | 4 +
src/chrome/locale/et/network-settings.dtd | 4 +
src/chrome/locale/eu/network-settings.dtd | 4 +
src/chrome/locale/fa/network-settings.dtd | 4 +
src/chrome/locale/fi/network-settings.dtd | 4 +
src/chrome/locale/fil/network-settings.dtd | 4 +
src/chrome/locale/fo/network-settings.dtd | 4 +
src/chrome/locale/fr-CA/network-settings.dtd | 4 +
src/chrome/locale/fr/network-settings.dtd | 28 ++++---
src/chrome/locale/fr/torlauncher.properties | 6 +-
src/chrome/locale/fur/network-settings.dtd | 4 +
src/chrome/locale/fy/network-settings.dtd | 4 +
src/chrome/locale/ga/network-settings.dtd | 4 +
src/chrome/locale/gl/network-settings.dtd | 4 +
src/chrome/locale/gu-IN/network-settings.dtd | 4 +
src/chrome/locale/gu/network-settings.dtd | 4 +
src/chrome/locale/gun/network-settings.dtd | 4 +
src/chrome/locale/ha/network-settings.dtd | 4 +
src/chrome/locale/he/network-settings.dtd | 78 +++++++++++---------
src/chrome/locale/he/progress.dtd | 2 +-
src/chrome/locale/he/torlauncher.properties | 74 +++++++++----------
src/chrome/locale/hi/network-settings.dtd | 4 +
src/chrome/locale/hr-HR/network-settings.dtd | 4 +
src/chrome/locale/hr/network-settings.dtd | 4 +
src/chrome/locale/ht/network-settings.dtd | 4 +
src/chrome/locale/hu/network-settings.dtd | 4 +
src/chrome/locale/hu/torlauncher.properties | 2 +-
src/chrome/locale/hy-AM/network-settings.dtd | 4 +
src/chrome/locale/hy/network-settings.dtd | 4 +
src/chrome/locale/ia/network-settings.dtd | 4 +
src/chrome/locale/id/network-settings.dtd | 4 +
src/chrome/locale/is/network-settings.dtd | 4 +
src/chrome/locale/it/network-settings.dtd | 4 +
src/chrome/locale/ja/network-settings.dtd | 4 +
src/chrome/locale/jv/network-settings.dtd | 4 +
src/chrome/locale/ka/network-settings.dtd | 4 +
src/chrome/locale/kk/network-settings.dtd | 4 +
src/chrome/locale/km/network-settings.dtd | 4 +
src/chrome/locale/kn/network-settings.dtd | 4 +
src/chrome/locale/ko-KR/network-settings.dtd | 4 +
src/chrome/locale/ko/network-settings.dtd | 4 +
src/chrome/locale/ku/network-settings.dtd | 4 +
src/chrome/locale/kw/network-settings.dtd | 4 +
src/chrome/locale/ky/network-settings.dtd | 4 +
src/chrome/locale/lb/network-settings.dtd | 10 ++-
src/chrome/locale/lb/torlauncher.properties | 2 +-
src/chrome/locale/lg/network-settings.dtd | 4 +
src/chrome/locale/ln/network-settings.dtd | 4 +
src/chrome/locale/lo/network-settings.dtd | 4 +
src/chrome/locale/lt/network-settings.dtd | 12 ++-
src/chrome/locale/lt/progress.dtd | 6 +-
src/chrome/locale/lv/network-settings.dtd | 4 +
src/chrome/locale/mg/network-settings.dtd | 4 +
src/chrome/locale/mi/network-settings.dtd | 4 +
src/chrome/locale/mk/network-settings.dtd | 4 +
src/chrome/locale/ml/network-settings.dtd | 4 +
src/chrome/locale/mn/network-settings.dtd | 4 +
src/chrome/locale/mr/network-settings.dtd | 4 +
src/chrome/locale/ms-MY/network-settings.dtd | 4 +
src/chrome/locale/mt/network-settings.dtd | 4 +
src/chrome/locale/my/network-settings.dtd | 4 +
src/chrome/locale/my/progress.dtd | 2 +-
src/chrome/locale/nah/network-settings.dtd | 4 +
src/chrome/locale/nap/network-settings.dtd | 4 +
src/chrome/locale/nb/network-settings.dtd | 4 +
src/chrome/locale/nds/network-settings.dtd | 4 +
src/chrome/locale/ne/network-settings.dtd | 4 +
src/chrome/locale/nl-BE/network-settings.dtd | 54 +++++++-------
src/chrome/locale/nl-BE/torlauncher.properties | 22 +++---
src/chrome/locale/nl/network-settings.dtd | 4 +
src/chrome/locale/nn/network-settings.dtd | 4 +
src/chrome/locale/nso/network-settings.dtd | 4 +
src/chrome/locale/oc/network-settings.dtd | 4 +
src/chrome/locale/or/network-settings.dtd | 4 +
src/chrome/locale/pa/network-settings.dtd | 4 +
src/chrome/locale/pap/network-settings.dtd | 4 +
src/chrome/locale/pl/network-settings.dtd | 4 +
src/chrome/locale/pms/network-settings.dtd | 4 +
src/chrome/locale/ps/network-settings.dtd | 4 +
src/chrome/locale/pt-BR/network-settings.dtd | 4 +
src/chrome/locale/pt/network-settings.dtd | 8 +-
src/chrome/locale/pt/torlauncher.properties | 8 +-
src/chrome/locale/ro/network-settings.dtd | 4 +
src/chrome/locale/ru/network-settings.dtd | 4 +
src/chrome/locale/ru(a)petr1708/network-settings.dtd | 4 +
src/chrome/locale/sco/network-settings.dtd | 4 +
src/chrome/locale/si-LK/network-settings.dtd | 4 +
src/chrome/locale/sk-SK/network-settings.dtd | 4 +
src/chrome/locale/sk/network-settings.dtd | 4 +
src/chrome/locale/sl-SI/network-settings.dtd | 4 +
src/chrome/locale/sl/network-settings.dtd | 4 +
src/chrome/locale/sn/network-settings.dtd | 4 +
src/chrome/locale/so/network-settings.dtd | 4 +
src/chrome/locale/son/network-settings.dtd | 4 +
src/chrome/locale/sq-AL/torlauncher.properties | 8 +-
src/chrome/locale/sq/network-settings.dtd | 4 +
src/chrome/locale/sr/network-settings.dtd | 4 +
src/chrome/locale/sr(a)latin/network-settings.dtd | 4 +
src/chrome/locale/st/network-settings.dtd | 4 +
src/chrome/locale/su/network-settings.dtd | 4 +
src/chrome/locale/sv/network-settings.dtd | 8 +-
src/chrome/locale/sw/network-settings.dtd | 4 +
src/chrome/locale/szl/network-settings.dtd | 4 +
src/chrome/locale/ta/network-settings.dtd | 4 +
src/chrome/locale/te-IN/network-settings.dtd | 6 +-
src/chrome/locale/te/network-settings.dtd | 4 +
src/chrome/locale/tg/network-settings.dtd | 4 +
src/chrome/locale/th/network-settings.dtd | 4 +
src/chrome/locale/ti/network-settings.dtd | 4 +
src/chrome/locale/tk/network-settings.dtd | 4 +
src/chrome/locale/tr/network-settings.dtd | 56 +++++++-------
src/chrome/locale/tr/torlauncher.properties | 10 +--
src/chrome/locale/uk/network-settings.dtd | 4 +
src/chrome/locale/ur-PK/network-settings.dtd | 8 +-
src/chrome/locale/ur-PK/progress.dtd | 9 ++-
src/chrome/locale/ur-PK/torlauncher.properties | 2 +-
src/chrome/locale/ur/network-settings.dtd | 4 +
src/chrome/locale/uz/network-settings.dtd | 4 +
src/chrome/locale/ve/network-settings.dtd | 4 +
src/chrome/locale/vi/network-settings.dtd | 10 ++-
src/chrome/locale/vi/torlauncher.properties | 2 +-
src/chrome/locale/wa/network-settings.dtd | 4 +
src/chrome/locale/wo/network-settings.dtd | 4 +
src/chrome/locale/zh-CN/network-settings.dtd | 4 +
src/chrome/locale/zh-HK/network-settings.dtd | 4 +
src/chrome/locale/zh-TW/network-settings.dtd | 4 +
src/chrome/locale/zu/network-settings.dtd | 4 +
159 files changed, 795 insertions(+), 206 deletions(-)
diff --git a/src/chrome/locale/ach/network-settings.dtd b/src/chrome/locale/ach/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/ach/network-settings.dtd
+++ b/src/chrome/locale/ach/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/ady/network-settings.dtd b/src/chrome/locale/ady/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/ady/network-settings.dtd
+++ b/src/chrome/locale/ady/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/af/network-settings.dtd b/src/chrome/locale/af/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/af/network-settings.dtd
+++ b/src/chrome/locale/af/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/ak/network-settings.dtd b/src/chrome/locale/ak/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/ak/network-settings.dtd
+++ b/src/chrome/locale/ak/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/am-ET/torlauncher.properties b/src/chrome/locale/am-ET/torlauncher.properties
index a2550db..02be756 100644
--- a/src/chrome/locale/am-ET/torlauncher.properties
+++ b/src/chrome/locale/am-ET/torlauncher.properties
@@ -3,8 +3,8 @@
torlauncher.error_title=Tor Launcher
-torlauncher.tor_exited=Tor unexpectedly exited.
-torlauncher.please_restart_app=Please restart this application.
+torlauncher.tor_exited=Tor unexpectedly exited. This might be due to a bug in Tor itself, another program on your system, or faulty hardware. Until you restart Tor, the Tor Browser will not able to reach any websites. If the problem persists, please send a copy of your Tor Log to the support team.
+torlauncher.tor_exited2=Restarting Tor will not close your browser tabs.
torlauncher.tor_controlconn_failed=Could not connect to Tor control port.
torlauncher.tor_failed_to_start=Tor failed to start.
torlauncher.tor_control_failed=Failed to take control of Tor.
@@ -30,12 +30,15 @@ torlauncher.error_bridge_bad_default_type=No provided bridges that have the tran
torlauncher.recommended_bridge=(recommended)
torlauncher.connect=Connect
+torlauncher.restart_tor=Restart Tor
torlauncher.quit=Quit
torlauncher.quit_win=Exit
torlauncher.done=Done
torlauncher.forAssistance=For assistance, contact %S
+torlauncher.copiedNLogMessages=Copy complete. %S Tor log messages are ready to be pasted into a text editor or an email message.
+
torlauncher.bootstrapStatus.conn_dir=Connecting to a relay directory
torlauncher.bootstrapStatus.handshake_dir=Establishing an encrypted directory connection
torlauncher.bootstrapStatus.requesting_status=Retrieving network status
@@ -55,3 +58,4 @@ torlauncher.bootstrapWarning.identity=identity mismatch
torlauncher.bootstrapWarning.timeout=connection timeout
torlauncher.bootstrapWarning.noroute=no route to host
torlauncher.bootstrapWarning.ioerror=read/write error
+torlauncher.bootstrapWarning.pt_missing=missing pluggable transport
diff --git a/src/chrome/locale/am/network-settings.dtd b/src/chrome/locale/am/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/am/network-settings.dtd
+++ b/src/chrome/locale/am/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/ar/network-settings.dtd b/src/chrome/locale/ar/network-settings.dtd
index 8b34b08..a581606 100644
--- a/src/chrome/locale/ar/network-settings.dtd
+++ b/src/chrome/locale/ar/network-settings.dtd
@@ -1,4 +1,8 @@
-<!ENTITY torsettings.dialog.title "إعدادات الشبكة الخاصة بتور">
+<!ENTITY torsettings.dialog.title "إعدادات الشبكة">
+
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
<!-- For "first run" wizard: -->
@@ -9,18 +13,18 @@
<!ENTITY torSettings.firstQuestion "أي مما يلي يعتبر وصف افضل لموقفك؟">
<!ENTITY torSettings.configurePrompt1 "اتصال هذا الحاسب بالإنترنت محجوب أو له بروكسي.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "أحتاج لإعداد جسر أو بروكسي محلي.">
<!ENTITY torSettings.configure "تكوين">
<!ENTITY torSettings.connectPrompt2 "أود الاتصال مباشرة إلى شبكة تور.">
<!ENTITY torSettings.connectPrompt3 "سيصلح هذا في معظم الحالات.">
<!ENTITY torSettings.connect "اتصل">
-<!ENTITY torSettings.proxyPageTitle "Local Proxy Configuration">
+<!ENTITY torSettings.proxyPageTitle "إعداد البروكسي المحلّي">
<!ENTITY torSettings.proxyQuestion "هل يحتاج هذا الكمبيوتر لاستخدام وكيل محلي للاتصال بالإنترنت؟">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
<!ENTITY torSettings.proxyHelp "إذا كنت غير متأكد من كيفية الإجابة على هذا السؤال، أنظر الى إعدادات الإنترنت في متصفح آخر لمعرفة ما إذا تمت تهيئتة لاستخدام وكيل محلي.">
<!ENTITY torSettings.enterProxy "أدخل إعدادات البروكسي.">
-<!ENTITY torSettings.bridgePageTitle "Tor Bridges Configuration">
+<!ENTITY torSettings.bridgePageTitle "إعداد جسور تور.">
<!ENTITY torSettings.bridgeQuestion "هل يقوم مقدم خدمة الإنترنت (ISP) الذي تتعامل معه بحجب الاتصالات بشبكة Tor أو مراقبتها بطريقة أخرى؟">
<!ENTITY torSettings.bridgeHelp "إذا لم تكن متأكدا من إجابة هذا السؤال، قم باختيار لا.   إذا قمت باختيار نعم، فسيطلب منك تكوين جسور Tor والتي هي منافذ ترحيل غير مدرجة تصعب عملية حظر الاتصالات بشبكة Tor.">
<!ENTITY torSettings.bridgeSettingsPrompt "يمكنك استخدام مجموعة الجسور المتوفرة أو الحصول على مجموعة مخصصة من الجسور.">
diff --git a/src/chrome/locale/arn/network-settings.dtd b/src/chrome/locale/arn/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/arn/network-settings.dtd
+++ b/src/chrome/locale/arn/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/ast/network-settings.dtd b/src/chrome/locale/ast/network-settings.dtd
index 63cdbe1..fdbc39c 100644
--- a/src/chrome/locale/ast/network-settings.dtd
+++ b/src/chrome/locale/ast/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/az/network-settings.dtd b/src/chrome/locale/az/network-settings.dtd
index a1c3dff..cd8cbcb 100644
--- a/src/chrome/locale/az/network-settings.dtd
+++ b/src/chrome/locale/az/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor şəbəkə paramertləri">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Tor şəbəkəsinə qoşulmaq üçün, kompüterin intrenet bağlantısı haqqında bəzi məlumatları verməlisiniz.">
diff --git a/src/chrome/locale/be/network-settings.dtd b/src/chrome/locale/be/network-settings.dtd
index 8ded736..fe05a5c 100644
--- a/src/chrome/locale/be/network-settings.dtd
+++ b/src/chrome/locale/be/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Налады сеткі Тор">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Перад тым як падключыцца да сеткі Тор, вам трэба падаць инфармацыю аб злучэнні гэтага капутара з інтэрнэтам.">
diff --git a/src/chrome/locale/bg/network-settings.dtd b/src/chrome/locale/bg/network-settings.dtd
index 4452961..5802488 100644
--- a/src/chrome/locale/bg/network-settings.dtd
+++ b/src/chrome/locale/bg/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Настройки на Tor мрежата">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Преди да се свържете към Tor мрежата, Вие трябва да предоставите информация относно интернет връзката на този компютър">
diff --git a/src/chrome/locale/bn-IN/network-settings.dtd b/src/chrome/locale/bn-IN/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/bn-IN/network-settings.dtd
+++ b/src/chrome/locale/bn-IN/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/bn/network-settings.dtd b/src/chrome/locale/bn/network-settings.dtd
index b9de48e..8f2f987 100644
--- a/src/chrome/locale/bn/network-settings.dtd
+++ b/src/chrome/locale/bn/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/bo/network-settings.dtd b/src/chrome/locale/bo/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/bo/network-settings.dtd
+++ b/src/chrome/locale/bo/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/br/network-settings.dtd b/src/chrome/locale/br/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/br/network-settings.dtd
+++ b/src/chrome/locale/br/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/bs/network-settings.dtd b/src/chrome/locale/bs/network-settings.dtd
index 523378e..3750fd2 100644
--- a/src/chrome/locale/bs/network-settings.dtd
+++ b/src/chrome/locale/bs/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/ca/network-settings.dtd b/src/chrome/locale/ca/network-settings.dtd
index 32ecd67..78253a0 100644
--- a/src/chrome/locale/ca/network-settings.dtd
+++ b/src/chrome/locale/ca/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Configuració de la Tor Network">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Abans de connectar-te a la xarxa Thor, necessites introduir informació sobre el ordinador que fas servir per la connexió a internet.">
diff --git a/src/chrome/locale/cs/network-settings.dtd b/src/chrome/locale/cs/network-settings.dtd
index a48ba53..4829311 100644
--- a/src/chrome/locale/cs/network-settings.dtd
+++ b/src/chrome/locale/cs/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Síťové nastavení TORu">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Než se připojíte s síti TORu je potřeba poskytnout údaje o internetovém připojení tohoto počítače.">
@@ -15,12 +19,12 @@
<!ENTITY torSettings.connectPrompt3 "Toto bude fungovat ve většině případů.">
<!ENTITY torSettings.connect "Připojit">
-<!ENTITY torSettings.proxyPageTitle "Local Proxy Configuration">
+<!ENTITY torSettings.proxyPageTitle "Konfigurace místní proxy">
<!ENTITY torSettings.proxyQuestion "Potřebuje tento počítač zapnutí lokální proxy, aby se připojil k internetu?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
<!ENTITY torSettings.proxyHelp "Pokud nevíte, jak odpovědět, podívejte se na nastavení sítě Internet v jiném prohlížeči, abyste zjistili, zda je nakonfigurován k používání proxy.">
<!ENTITY torSettings.enterProxy "Zadejte nastavení serveru proxy.">
-<!ENTITY torSettings.bridgePageTitle "Tor Bridges Configuration">
+<!ENTITY torSettings.bridgePageTitle "Konfigurace Tor přemostění">
<!ENTITY torSettings.bridgeQuestion "Blokuje nebo jinak cenzuruje váš poskytovatel internetového připojení (ISP) spojení se sítí TORu?">
<!ENTITY torSettings.bridgeHelp "Pokud si nejste jistí jak odpovědět na tuto otázku, zvolte No.  Pokud vyberete Ano, budete vyzváni k nastavení Mostů TORu, což jsou přenašeče neuvedené v seznamu, které dělají blokování spojení se sítí TORu složitější.">
<!ENTITY torSettings.bridgeSettingsPrompt "Můžete použít poskytnutou sadu síťových mostů nebo můžete získat a zadat vlastní sadu.">
diff --git a/src/chrome/locale/csb/network-settings.dtd b/src/chrome/locale/csb/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/csb/network-settings.dtd
+++ b/src/chrome/locale/csb/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/cv/network-settings.dtd b/src/chrome/locale/cv/network-settings.dtd
index 9869ab4..866ddd6 100644
--- a/src/chrome/locale/cv/network-settings.dtd
+++ b/src/chrome/locale/cv/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/cy/network-settings.dtd b/src/chrome/locale/cy/network-settings.dtd
index 1f39f08..7dfcd46 100644
--- a/src/chrome/locale/cy/network-settings.dtd
+++ b/src/chrome/locale/cy/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Gosodiadau Rhwydwaith Tor">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Cyn cysylltu â rhwydwaith Tor, mae angen i chi roi gwybodaeth am gysylltiad y cyfrifiadur hwn â'r rhyngrwyd.">
diff --git a/src/chrome/locale/da/network-settings.dtd b/src/chrome/locale/da/network-settings.dtd
index f9baa01..a59c8d6 100644
--- a/src/chrome/locale/da/network-settings.dtd
+++ b/src/chrome/locale/da/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor netværksindstillinger">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Sprog">
+<!ENTITY torlauncher.localePicker.prompt "Vælg venligst et sprog.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Før du forbinder til Tor netværket, skal du indtaste information om denne computers Internetforbindelse.">
diff --git a/src/chrome/locale/de/network-settings.dtd b/src/chrome/locale/de/network-settings.dtd
index 22a4ef5..cf394a3 100644
--- a/src/chrome/locale/de/network-settings.dtd
+++ b/src/chrome/locale/de/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor-Netzwerkeinstellungen">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Sprache">
+<!ENTITY torlauncher.localePicker.prompt "Bitte wählen Sie eine Sprache.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Bevor Sie sich zum Tor-Netzwerk verbinden können, müssen Sie Informationen über den Internetanschluss Ihres Rechners bereitstellen.">
@@ -18,7 +22,7 @@
<!ENTITY torSettings.proxyPageTitle "Lokale Proxy-Konfiguration">
<!ENTITY torSettings.proxyQuestion "Benötigt dieser Rechner einen lokalen Proxy um auf das Internet zuzugreifen?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Wenn Sie unsicher sind, schauen Sie in den Interneteinstellungen in einem andern Browser nach, um zu erkennen ob ein lokaler Proxy konfiguriert ist.">
+<!ENTITY torSettings.proxyHelp "Wenn Sie unsicher sind, schauen Sie in den Interneteinstellungen in einem andern Browser nach, um zu sehen ob ein lokaler Proxy konfiguriert ist.">
<!ENTITY torSettings.enterProxy "Proxy-Einstellungen eingeben.">
<!ENTITY torSettings.bridgePageTitle "Torbrücken-Konfiguration">
<!ENTITY torSettings.bridgeQuestion "Blockiert oder zensiert Ihr Internetdienstanbieter (ISP) Verbindungen zum Tor-Netzwerk?">
diff --git a/src/chrome/locale/dz/network-settings.dtd b/src/chrome/locale/dz/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/dz/network-settings.dtd
+++ b/src/chrome/locale/dz/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/el/network-settings.dtd b/src/chrome/locale/el/network-settings.dtd
index 90753f1..64c7ccf 100644
--- a/src/chrome/locale/el/network-settings.dtd
+++ b/src/chrome/locale/el/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Ρυθμίσεις Δικτύου ">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Πριν συνδεθείτε στο δίκτυο Tor, θα χρειαστούμε λίγες πληροφορίες για το πώς συνδέεστε στο Internet.">
@@ -9,18 +13,18 @@
<!ENTITY torSettings.firstQuestion "Ποιο από τα παρακάτω περιγράφει καλύτερα την κατάστασή σας;">
<!ENTITY torSettings.configurePrompt1 "Σύνδεση στο Internet αυτού του υπολογιστή λογοκρίνεται ή προσεγγίζεται">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "Χρειάζομαι να ρυθμίσω την γέφυρα ή τις τοπικές ρυθμίσεις proxy">
<!ENTITY torSettings.configure "Ρύθμιση ">
<!ENTITY torSettings.connectPrompt2 "Θα ήθελα να συνδεθεί άμεσα με το δίκτυο Tor.">
<!ENTITY torSettings.connectPrompt3 "Αυτό θα λειτουργήσει στις περισσότερες περιπτώσεις.">
<!ENTITY torSettings.connect "Σύνδεση">
-<!ENTITY torSettings.proxyPageTitle "Local Proxy Configuration">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
+<!ENTITY torSettings.proxyPageTitle "Τοπική διαμόρφωση Proxy">
+<!ENTITY torSettings.proxyQuestion "Μήπως αυτός ο υπολογιστής πρέπει να χρησιμοποιήσει ένα τοπικό proxy για την πρόσβαση στο Διαδίκτυο;">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
+<!ENTITY torSettings.proxyHelp "Αν δεν είστε σίγουροι πως να απαντήσετε σε αυτήν την ερώτηση, κοιτάξτε τις ρυθμίσεις του Internet σε κάποιο άλλο πρόγραμμα περιήγησης για να δείτε αν έχει ρυθμιστεί να χρησιμοποιεί ένα τοπικό proxy.">
<!ENTITY torSettings.enterProxy "Εισάγωγη των ρυθμίσεων διακομιστή μεσολάβησης.">
-<!ENTITY torSettings.bridgePageTitle "Tor Bridges Configuration">
+<!ENTITY torSettings.bridgePageTitle "Διαμόρφωση Γεφυρών Tor">
<!ENTITY torSettings.bridgeQuestion "Γνωρίζετε αν ο πάροχος (ISP) σας μπλοκάρει ή με οποιοδήποτε τρόπο ελέγχει συνδέσεις
στο δίκτυο Tor?">
<!ENTITY torSettings.bridgeHelp "Αν δε ξέρετε πώς να απαντήσετε εδώ, επιλέξτε "Όχι".  Αν επιλέξετε "Ναι", θα σας ζητήσω να ρυθμίσετε γέφυρες Tor, που είναι μη ευρέως γνωστά κανάλια εισόδου στο δίκτυο Tor, που δυσκολεύουν όσους προσπαθούν να μπλοκάρουν τις συνδέσεις στο δίκτυο Tor.">
@@ -33,7 +37,7 @@
<!ENTITY torsettings.optional "Προεραιτικα">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "Αυτός ο υπολογιστής χρειάζεται να χρησιμοποιήσει ένα τοπικό proxy για την πρόσβαση στο Internet">
<!ENTITY torsettings.useProxy.type "Τύπος διακομιστή μεσολάβησης:">
<!ENTITY torsettings.useProxy.address "Διεύθυνση:">
<!ENTITY torsettings.useProxy.address.placeholder "Διεύθυνση ΙΡ η όνομα υπολογιστή ">
diff --git a/src/chrome/locale/en-GB/network-settings.dtd b/src/chrome/locale/en-GB/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/en-GB/network-settings.dtd
+++ b/src/chrome/locale/en-GB/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/eo/network-settings.dtd b/src/chrome/locale/eo/network-settings.dtd
index b62d50b..263ade0 100644
--- a/src/chrome/locale/eo/network-settings.dtd
+++ b/src/chrome/locale/eo/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/es-AR/network-settings.dtd b/src/chrome/locale/es-AR/network-settings.dtd
index fdee9cb..2c3f300 100644
--- a/src/chrome/locale/es-AR/network-settings.dtd
+++ b/src/chrome/locale/es-AR/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Configuraciones de la red Tor">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/es-CL/network-settings.dtd b/src/chrome/locale/es-CL/network-settings.dtd
index 12f4a5d..c3b8e6e 100644
--- a/src/chrome/locale/es-CL/network-settings.dtd
+++ b/src/chrome/locale/es-CL/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Configuracion De Internet Tor">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/es-CO/network-settings.dtd b/src/chrome/locale/es-CO/network-settings.dtd
index c764147..b630a4a 100644
--- a/src/chrome/locale/es-CO/network-settings.dtd
+++ b/src/chrome/locale/es-CO/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Configuraciones de red de Tor">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Antes de conectar con la red de Tor, necesitas proveer informacion acerca de la coneccion de internet de este computador.">
diff --git a/src/chrome/locale/es-MX/network-settings.dtd b/src/chrome/locale/es-MX/network-settings.dtd
index 5112f08..0c7dbb6 100644
--- a/src/chrome/locale/es-MX/network-settings.dtd
+++ b/src/chrome/locale/es-MX/network-settings.dtd
@@ -1,4 +1,8 @@
-<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!ENTITY torsettings.dialog.title "Configuración de red Tor">
+
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
<!-- For "first run" wizard: -->
diff --git a/src/chrome/locale/es/network-settings.dtd b/src/chrome/locale/es/network-settings.dtd
index a117fa0..ed03009 100644
--- a/src/chrome/locale/es/network-settings.dtd
+++ b/src/chrome/locale/es/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Configuración de la red Tor">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Antes de que se conecte a la red Tor, necesita proporcionar información sobre la conexión a Internet de este equipo.">
diff --git a/src/chrome/locale/et/network-settings.dtd b/src/chrome/locale/et/network-settings.dtd
index a43df36..b5db33d 100644
--- a/src/chrome/locale/et/network-settings.dtd
+++ b/src/chrome/locale/et/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/eu/network-settings.dtd b/src/chrome/locale/eu/network-settings.dtd
index 26a3d03..6190d66 100644
--- a/src/chrome/locale/eu/network-settings.dtd
+++ b/src/chrome/locale/eu/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor sare ezarpenak">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Tor sarera konektatu baino lehen, ordenagailu honen Interneteko konexioari buruzko informazioa eman behar duzu.">
diff --git a/src/chrome/locale/fa/network-settings.dtd b/src/chrome/locale/fa/network-settings.dtd
index b1da1e7..9a66be2 100644
--- a/src/chrome/locale/fa/network-settings.dtd
+++ b/src/chrome/locale/fa/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "تنظیمات شبکه تور">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "قبل از اتصال به شبکه تور، باید اطلاعاتی از نحوه اتصال این کامپیوتر به اینترنت فراهم کنید.">
diff --git a/src/chrome/locale/fi/network-settings.dtd b/src/chrome/locale/fi/network-settings.dtd
index 66a1e54..55a218f 100644
--- a/src/chrome/locale/fi/network-settings.dtd
+++ b/src/chrome/locale/fi/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor-verkkoasetukset">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor-selaimen kieli">
+<!ENTITY torlauncher.localePicker.prompt "Valitse kieli, ole hyvä.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Ennen kuin voit yhdistää Tor-verkkoon, sinun on annettava tietoja tietokoneesi internet-yhteydestä.">
diff --git a/src/chrome/locale/fil/network-settings.dtd b/src/chrome/locale/fil/network-settings.dtd
index db7d3fa..001b446 100644
--- a/src/chrome/locale/fil/network-settings.dtd
+++ b/src/chrome/locale/fil/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Bago ka maka-connect sa Tor network, kailangan mong mag-bigay ng impormasyon tungkol sa koneksyon sa Internet ng kompyuter na ito. ">
diff --git a/src/chrome/locale/fo/network-settings.dtd b/src/chrome/locale/fo/network-settings.dtd
index d85d5e4..e113692 100644
--- a/src/chrome/locale/fo/network-settings.dtd
+++ b/src/chrome/locale/fo/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/fr-CA/network-settings.dtd b/src/chrome/locale/fr-CA/network-settings.dtd
index 6e0c02f..9e3094d 100644
--- a/src/chrome/locale/fr-CA/network-settings.dtd
+++ b/src/chrome/locale/fr-CA/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Paramètres du réseau Tor">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Langue du navigateur Tor">
+<!ENTITY torlauncher.localePicker.prompt "Veuillez choisir une langue">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Avant de vous connecter au réseau Tor, vous devez fournir des informations sur la connexion Internet de cet ordinateur.">
diff --git a/src/chrome/locale/fr/network-settings.dtd b/src/chrome/locale/fr/network-settings.dtd
index f5c1581..9b4f6d0 100644
--- a/src/chrome/locale/fr/network-settings.dtd
+++ b/src/chrome/locale/fr/network-settings.dtd
@@ -1,8 +1,12 @@
<!ENTITY torsettings.dialog.title "Paramètres du réseau Tor">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Merci de sélectionner une langue.">
+
<!-- For "first run" wizard: -->
-<!ENTITY torsettings.prompt "Vous devez fournir des informations concernant la connexion à Internet de cet ordinateur afin que vous puissiez vous connecter au réseau Tor.">
+<!ENTITY torsettings.prompt "Vous devez fournir des informations concernant la connexion à Internet de cet ordinateur afin de pouvoir vous connecter au réseau Tor.">
<!ENTITY torSettings.yes "Oui">
<!ENTITY torSettings.no "Non">
@@ -15,15 +19,15 @@
<!ENTITY torSettings.connectPrompt3 "Cela fonctionnera dans la plupart des situations.">
<!ENTITY torSettings.connect "Se connecter">
-<!ENTITY torSettings.proxyPageTitle "Configuration du Proxy local">
+<!ENTITY torSettings.proxyPageTitle "Configuration du proxy local">
<!ENTITY torSettings.proxyQuestion "Est-ce que cet ordinateur a besoin d'utiliser un proxy pour accéder à internet ?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Si vous n'êtes pas sure de la réponse à cette question, regardez les paramètres internet dans un autre navigateur pour voir si il est configuré pour l'utilisation d'un proxy.">
+<!ENTITY torSettings.proxyHelp "Si vous n'êtes pas sur de la réponse à cette question, regardez les paramètres internet dans un autre navigateur pour voir si il est configuré pour l'utilisation d'un proxy.">
<!ENTITY torSettings.enterProxy "Entrez les paramètres de votre proxy.">
-<!ENTITY torSettings.bridgePageTitle "Configuration Tor Bridges">
+<!ENTITY torSettings.bridgePageTitle "Configuration des relais TOR">
<!ENTITY torSettings.bridgeQuestion "Est-ce que votre Fournisseur d'Accès Internet (FAI) bloque les connexions au réseau Tor ?">
-<!ENTITY torSettings.bridgeHelp "Si vous ne savez pas comment répondre à cette question, choisissez Non.  Si vous choisissez Oui, il vous sera demandé de configurer les bridges Tor qui sont des relais non listés et qui rendent plus difficile le blocage du réseau Tor.">
-<!ENTITY torSettings.bridgeSettingsPrompt "Vous pouvez utiliser les bridges fournis ou bien saisir votre liste de bridges personnels.">
+<!ENTITY torSettings.bridgeHelp "Si vous ne savez pas comment répondre à cette question, choisissez Non.  Si vous choisissez Oui, il vous sera demandé de configurer les ponts Tor qui sont des relais non listés et qui rendent plus difficile le blocage du réseau Tor.">
+<!ENTITY torSettings.bridgeSettingsPrompt "Vous pouvez utiliser les ponts fournis ou bien saisir votre liste de ponts personnels.">
<!-- Other: -->
@@ -45,16 +49,16 @@
<!ENTITY torsettings.firewall.checkbox "Cet ordinateur passe par un pare-feu qui autorise uniquement les connexions à certains ports">
<!ENTITY torsettings.firewall.allowedPorts "Ports autorisés :">
<!ENTITY torsettings.useBridges.checkbox "Mon Fournisseur d'Accès à Internet (FAI) bloque les connexions au réseau Tor">
-<!ENTITY torsettings.useBridges.default "Se connecter en utilisant les bridges préconfigurés">
+<!ENTITY torsettings.useBridges.default "Se connecter en utilisant les ponts pré-configurés">
<!ENTITY torsettings.useBridges.type "Mode de transport:">
-<!ENTITY torsettings.useBridges.custom "Entrez vos bridges personnels">
-<!ENTITY torsettings.useBridges.label "Saisir un ou davantage de bridges relais (un par ligne).">
-<!ENTITY torsettings.useBridges.placeholder "type adresse:port">
+<!ENTITY torsettings.useBridges.custom "Entrez vos ponts personnels">
+<!ENTITY torsettings.useBridges.label "Saisir un ou davantage de ponts relais (un par ligne).">
+<!ENTITY torsettings.useBridges.placeholder "tapez adresse:port">
<!ENTITY torsettings.copyLog "Copier le journal des messages de Tor dans le presse-papier">
-<!ENTITY torsettings.bridgeHelpTitle "Aide pour les bridges">
+<!ENTITY torsettings.bridgeHelpTitle "Aide pour les ponts">
<!ENTITY torsettings.bridgeHelp1 "Si vous ne pouvez pas vous connecter au réseau Tor, il se pourrait que votre fournisseur d'accès à Internet (FAI) ou une autre agence bloque le Tor.  Souvent, vous pouvez contourner ce problème en utilisant des ponts Tor, qui sont des relais non listés qui sont plus difficiles à bloquer.">
-<!ENTITY torsettings.bridgeHelp1B "Vous pouvez utiliser les liste de bridges préconfigurés par défaut ou en obtenir une liste personnalisée d'adresses en utilisant l'une des trois méthodes ci-dessous :">
+<!ENTITY torsettings.bridgeHelp1B "Vous pouvez utiliser les liste de ponts pré-configurés par défaut ou en obtenir une liste personnalisée d'adresses en utilisant l'une des trois méthodes ci-dessous :">
<!ENTITY torsettings.bridgeHelp2Heading "Par le Web">
<!ENTITY torsettings.bridgeHelp2 "Utilisez un navigateur web pour visiter https://bridges.torproject.org">
<!ENTITY torsettings.bridgeHelp3Heading "Par le répondeur automatique de courriel">
diff --git a/src/chrome/locale/fr/torlauncher.properties b/src/chrome/locale/fr/torlauncher.properties
index 6949020..209755b 100644
--- a/src/chrome/locale/fr/torlauncher.properties
+++ b/src/chrome/locale/fr/torlauncher.properties
@@ -24,8 +24,8 @@ torlauncher.ensure_tor_is_running=Veuillez-vous assurer que Tor est lancé.
torlauncher.error_proxy_addr_missing=Pour configurer Tor afin qu'il utilise un proxy, vous devez spécifier une adresse IP ou un nom d'hôte ainsi qu'un numéro de port.
torlauncher.error_proxy_type_missing=Vous devez sélectionner un type de proxy.
torlauncher.error_bridges_missing=Vous devez spécifier un ou plusieurs bridges.
-torlauncher.error_default_bridges_type_missing=Vous devez sélectionner un type de transport pour les bridges fournis.
-torlauncher.error_bridge_bad_default_type=Aucun des bridges fournis n'a le type de transport %S. Merci d'ajuster vos paramètres.
+torlauncher.error_default_bridges_type_missing=Vous devez sélectionner un type de transport pour les ponts fournis.
+torlauncher.error_bridge_bad_default_type=Aucun des ponts fournis n'a le type de transport %S. Merci d'ajuster vos paramètres.
torlauncher.recommended_bridge=(recommandé)
@@ -44,7 +44,7 @@ torlauncher.bootstrapStatus.handshake_dir=Établissement d'une connexion annuair
torlauncher.bootstrapStatus.requesting_status=Récupération de l'état du réseau
torlauncher.bootstrapStatus.loading_status=Chargement de l'état du réseau
torlauncher.bootstrapStatus.loading_keys=Chargement des certificats d'autorité
-torlauncher.bootstrapStatus.requesting_descriptors=Demande d'informations sur le relai
+torlauncher.bootstrapStatus.requesting_descriptors=Demande d'informations sur le relais
torlauncher.bootstrapStatus.loading_descriptors=Chargement des informations sur le relais
torlauncher.bootstrapStatus.conn_or=Connexion au réseau Tor
torlauncher.bootstrapStatus.handshake_or=Réalisation d'un circuit Tor
diff --git a/src/chrome/locale/fur/network-settings.dtd b/src/chrome/locale/fur/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/fur/network-settings.dtd
+++ b/src/chrome/locale/fur/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/fy/network-settings.dtd b/src/chrome/locale/fy/network-settings.dtd
index ace4158..6c6c869 100644
--- a/src/chrome/locale/fy/network-settings.dtd
+++ b/src/chrome/locale/fy/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/ga/network-settings.dtd b/src/chrome/locale/ga/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/ga/network-settings.dtd
+++ b/src/chrome/locale/ga/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/gl/network-settings.dtd b/src/chrome/locale/gl/network-settings.dtd
index cee7f9d..bcf88eb 100644
--- a/src/chrome/locale/gl/network-settings.dtd
+++ b/src/chrome/locale/gl/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Axustes da rede Tor">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/gu-IN/network-settings.dtd b/src/chrome/locale/gu-IN/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/gu-IN/network-settings.dtd
+++ b/src/chrome/locale/gu-IN/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/gu/network-settings.dtd b/src/chrome/locale/gu/network-settings.dtd
index ce2cae5..2e06d74 100644
--- a/src/chrome/locale/gu/network-settings.dtd
+++ b/src/chrome/locale/gu/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/gun/network-settings.dtd b/src/chrome/locale/gun/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/gun/network-settings.dtd
+++ b/src/chrome/locale/gun/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/ha/network-settings.dtd b/src/chrome/locale/ha/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/ha/network-settings.dtd
+++ b/src/chrome/locale/ha/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/he/network-settings.dtd b/src/chrome/locale/he/network-settings.dtd
index 5f0a53d..d4b3d16 100644
--- a/src/chrome/locale/he/network-settings.dtd
+++ b/src/chrome/locale/he/network-settings.dtd
@@ -1,64 +1,72 @@
<!ENTITY torsettings.dialog.title "הגדרות רשת Tor">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
-<!ENTITY torsettings.prompt "לפני שאתה מתחבר לרשת ה-Tor, אתה צריך לספק מידע על חיבור האינטרנט של מחשב זה.">
+<!ENTITY torsettings.prompt "לפני שתתחבר לרשת Tor, עליך לספק מידע על חיבור האינטרנט של מחשב זה.">
<!ENTITY torSettings.yes "כן">
<!ENTITY torSettings.no "לא">
-<!ENTITY torSettings.firstQuestion "אילו מן הבאים מתאר את המצב שלך באופן הטוב ביותר?">
-<!ENTITY torSettings.configurePrompt1 "חיבור האינטרנט של המחשב הזה מצונזר או עובר בשרת פרוקסי">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
+<!ENTITY torSettings.firstQuestion "אילו מן הבאים מתאר את מצבך בצורה המדויקת ביותר?">
+<!ENTITY torSettings.configurePrompt1 "חיבור האינטרנט של מחשב זה מסונן או עובר דרך שרת פרוקסי.">
+<!ENTITY torSettings.configurePrompt2 "ברצוני להגדיר גשר או שרת פרוקסי מקומי.">
<!ENTITY torSettings.configure "הגדר">
-<!ENTITY torSettings.connectPrompt2 "ברצוני להתחבר ישירות אל הרשת Tor.">
-<!ENTITY torSettings.connectPrompt3 "זה יעבוד ברוב המקרים.">
+<!ENTITY torSettings.connectPrompt2 "ברצוני להתחבר ישירות לרשת Tor.">
+<!ENTITY torSettings.connectPrompt3 "דבר זה יעבוד במרבית המקרים.">
<!ENTITY torSettings.connect "התחבר">
-<!ENTITY torSettings.proxyPageTitle "Local Proxy Configuration">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
+<!ENTITY torSettings.proxyPageTitle "הגדרות שרת פרוקסי מקומי">
+<!ENTITY torSettings.proxyQuestion "האם מחשב זה מוכרח להשתמש בשרת פרוקסי מקומי כדי לקבל גישה לאינטרנט?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
+<!ENTITY torSettings.proxyHelp "אם אינך בטוח כיצד להשיב לשאלה זו, בחן את הגדרות האינטרנט בדפדפן אחר כדי לראות האם הגדרות ההתחברות שלו כוללות שימוש בשרת פרוקסי מקומי.">
<!ENTITY torSettings.enterProxy "הזן את הגדרות הפרוקסי.">
-<!ENTITY torSettings.bridgePageTitle "Tor Bridges Configuration">
-<!ENTITY torSettings.bridgeQuestion "האם ספק שירותי האינטרנט (ISP) שלך חוסם או מצנזר אחרת חיבורים לרשת Tor ?">
-<!ENTITY torSettings.bridgeHelp "אם אינך בטוח איך לענות לשאלה הזו, בחר No.  במידה ותבחר כן, תתבקש להגדיר את גשרי Tor, שהם ממסרים לא רשומים שמקשים לחסום חיבורים לרשת Tor.">
-<!ENTITY torSettings.bridgeSettingsPrompt "You may use the provided set of bridges or you may obtain and enter a custom set of bridges.">
+<!ENTITY torSettings.bridgePageTitle "הגדרת גשרים ל-Tor">
+<!ENTITY torSettings.bridgeQuestion "האם ספק שירותי האינטרנט (ISP) שלך חוסם או מסנן חיבורים לרשת Tor ?">
+<!ENTITY torSettings.bridgeHelp "אם אינך בטוח כיצד לענות לשאלה זו, בחר ב-'לא'. אם תבחר ב-'כן', תתבקש להגדיר גשרים ל-Tor, שהם שרתים לא פומביים המסייעים לעקוף חסימות גישה לרשת Tor. ">
+<!ENTITY torSettings.bridgeSettingsPrompt "באפשרותך להשתמש ברשימת הגשרים המוכנה או להשיג בעצמך ולהזין רשימת גשרים חדשה.">
<!-- Other: -->
<!ENTITY torsettings.startingTor "ממתין כעת עבור Tor כדי להתחיל…">
<!ENTITY torsettings.restartTor "התחל מחדש את Tor">
-<!ENTITY torsettings.optional "רשות">
+<!ENTITY torsettings.optional "אופציונלי">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
-<!ENTITY torsettings.useProxy.type "טיפוס פרוקסי:">
+<!ENTITY torsettings.useProxy.checkbox "מחשב זה חייב להשתמש בשרת פרוקסי מקומי על מנת להתחבר לאינטרנט">
+<!ENTITY torsettings.useProxy.type "סוג פרוקסי:">
<!ENTITY torsettings.useProxy.address "כתובת:">
<!ENTITY torsettings.useProxy.address.placeholder "כתובת IP או שם מארח">
-<!ENTITY torsettings.useProxy.port "יציאה:">
+<!ENTITY torsettings.useProxy.port "פורט:">
<!ENTITY torsettings.useProxy.username "שם משתמש:">
<!ENTITY torsettings.useProxy.password "סיסמה:">
<!ENTITY torsettings.useProxy.type.socks4 "SOCKS 4">
<!ENTITY torsettings.useProxy.type.socks5 "SOCKS 5">
<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
-<!ENTITY torsettings.firewall.checkbox "מחשב זה עובר דרך חומת אש שרק מאפשר חיבורים ליציאות מסוימות">
-<!ENTITY torsettings.firewall.allowedPorts "יציאות מורשות:">
-<!ENTITY torsettings.useBridges.checkbox "ספק האינטרנט שלי (ISP) חוסם חיבורים אל הרשת Tor">
-<!ENTITY torsettings.useBridges.default "Connect with provided bridges">
-<!ENTITY torsettings.useBridges.type "Transport type:">
-<!ENTITY torsettings.useBridges.custom "Enter custom bridges">
-<!ENTITY torsettings.useBridges.label "הקלד אחד או יותר ממסרי גשר (אחד לכל שורה)">
-<!ENTITY torsettings.useBridges.placeholder "type address:port">
+<!ENTITY torsettings.firewall.checkbox "מחשב זה מחובר לאינטרנט דרך חומת אש המאפשר חיבורים רק לפורטים מסויימים ">
+<!ENTITY torsettings.firewall.allowedPorts "פורטים מורשים:">
+<!ENTITY torsettings.useBridges.checkbox "ספק האינטרנט שלי (ISP) חוסם חיבורים לרשת Tor">
+<!ENTITY torsettings.useBridges.default "התחבר באמצעות הגשרים המוכנים מראש">
+<!ENTITY torsettings.useBridges.type "סוג מסווה תעבורה:">
+<!ENTITY torsettings.useBridges.custom "הזן רשימת גשרים חדשה">
+<!ENTITY torsettings.useBridges.label "הזן פרטי גשר אחד לפחות (אחד לכל שורה)">
+<!ENTITY torsettings.useBridges.placeholder "הזן כתובת:פורט address:port">
<!ENTITY torsettings.copyLog "העתק את יומן Tor אל לוח גזירה">
-<!ENTITY torsettings.bridgeHelpTitle "עזרת ממסר גשר">
-<!ENTITY torsettings.bridgeHelp1 "If you are unable to connect to the Tor network, it could be that your Internet Service Provider (ISP) or another agency is blocking Tor.  Often, you can work around this problem by using Tor Bridges, which are unlisted relays that are more difficult to block.">
-<!ENTITY torsettings.bridgeHelp1B "You may use the preconfigured, provided set of bridge addresses or you may obtain a custom set of addresses by using one of these three methods:">
-<!ENTITY torsettings.bridgeHelp2Heading "Through the Web">
-<!ENTITY torsettings.bridgeHelp2 "Use a web browser to visit https://bridges.torproject.org">
-<!ENTITY torsettings.bridgeHelp3Heading "Through the Email Autoresponder">
-<!ENTITY torsettings.bridgeHelp3.emailDesc "Send email to bridges(a)torproject.org with the line 'get bridges' by itself in the body of the message.  However, to make it harder for an attacker to learn a lot of bridge addresses, you must send this request from one of the following email providers (listed in order of preference):">
-<!ENTITY torsettings.bridgeHelp3.emailList "https://www.riseup.net, https://mail.google.com, or https://mail.yahoo.com">
-<!ENTITY torsettings.bridgeHelp4Heading "Through the Help Desk">
-<!ENTITY torsettings.bridgeHelp4 "As a last resort, you can request bridge addresses by sending a polite email message to help(a)rt.torproject.org.  Please note that a person will need to respond to each request.">
+<!ENTITY torsettings.bridgeHelpTitle "עזרה בנוגע לגשרים">
+<!ENTITY torsettings.bridgeHelp1 "אם אין באפשרותך להתחבר לרשת Tor, ייתכן שהסיבה לכך היא שספק האינטרנט שלך או גורם אחר חוסמים את Tor. לעתים קרובות, ניתן להתגבר על בעיה זו באמצעות שימוש בגשרים, שהם שרתים חסויים שקשה יותר לחסום אותם.">
+<!ENTITY torsettings.bridgeHelp1B "באפשרותך להשתמש ברשימה מוכנה מראש של גשרים או להשיג בעצמך רשימה חדשה של כתובות באמצעות אחת משלוש הדרכים הבאות:">
+<!ENTITY torsettings.bridgeHelp2Heading "באמצעות רשת האינטרנט">
+<!ENTITY torsettings.bridgeHelp2 "היעזר בדפדפן אינטרנט על מנת לבקר באתר https://bridges.torproject.org">
+<!ENTITY torsettings.bridgeHelp3Heading "דרך שירות הדואל האוטומטי">
+<!ENTITY torsettings.bridgeHelp3.emailDesc "שלח דואל לכתובת bridges(a)torproject.org עם השורה "get bridges" ללא גרשיים בתוך גוף ההודעה. אולם, כדי להקשות עוד יותר על תוקפים לצבור מאגר כתובות של גשרים, עליך לשלוח בקשה זו מתוך אחד מספקי הדואל הבאים בלבד (בסדר עדיפויות יורד):">
+<!ENTITY torsettings.bridgeHelp3.emailList "https://www.riseup.net
+https://mail.google.com
+https://mail.yahoo.com">
+<!ENTITY torsettings.bridgeHelp4Heading "באמצעות צוות התמיכה שלנו">
+<!ENTITY torsettings.bridgeHelp4 "כמוצא אחרון, תוכל לבקש רשימת גשרים באמצעות פנייה מנומסת בדואל לכתובת הבאה:
+help(a)rt.torproject.org
+אנא זכור שבן אנוש ייאלץ להשיב באופן אישי לכל בקשה שכזו.">
diff --git a/src/chrome/locale/he/progress.dtd b/src/chrome/locale/he/progress.dtd
index 2e3d2c3..891697d 100644
--- a/src/chrome/locale/he/progress.dtd
+++ b/src/chrome/locale/he/progress.dtd
@@ -1,4 +1,4 @@
<!ENTITY torprogress.dialog.title "מצב Tor">
<!ENTITY torprogress.openSettings "פתח הגדרות">
<!ENTITY torprogress.heading "מתחבר כעת אל רשת Tor">
-<!ENTITY torprogress.pleaseWait "בבקשה המתן בזמן שאנחנו יוצרים חיבור לרשת ה-Tor">
+<!ENTITY torprogress.pleaseWait "אנא המתן בעת שאנו מתחברים לרשת Tor.">
diff --git a/src/chrome/locale/he/torlauncher.properties b/src/chrome/locale/he/torlauncher.properties
index 55224f5..66cd550 100644
--- a/src/chrome/locale/he/torlauncher.properties
+++ b/src/chrome/locale/he/torlauncher.properties
@@ -1,61 +1,61 @@
### Copyright (c) 2014, The Tor Project, Inc.
### See LICENSE for licensing information.
-torlauncher.error_title=משגר Tor
+torlauncher.error_title=תוכנת ההפעלה של Tor
-torlauncher.tor_exited=Tor unexpectedly exited. This might be due to a bug in Tor itself, another program on your system, or faulty hardware. Until you restart Tor, the Tor Browser will not able to reach any websites. If the problem persists, please send a copy of your Tor Log to the support team.
+torlauncher.tor_exited=Tor הפסיק לעבוד באופן פתאומי. ייתכן שהדבר אירע עקב תקלה ב-Tor עצמה, בשל תוכנה אחרת הפועלת על המערכת שלך, או בגין תקלת חומרה. כל עוד לא תפעיל מחדש את Tor, דפדפן Tor ימנע ממך לגלוש באינטרנט. אם הבעיה נמשכת, אנא שלח עותק מיומן הרישום של Tor לצוות התמיכה שלנו.
torlauncher.tor_exited2=התחלה מחדש של Tor לא תסגור את כרטיסיות הדפדפן שלך.
-torlauncher.tor_controlconn_failed=לא הצליח להתחבר ליציאת שליטת Tor.
-torlauncher.tor_failed_to_start=Tor נכשל בהפעלה.
-torlauncher.tor_control_failed=נכשל לקבל שליטה על Tor.
-torlauncher.tor_bootstrap_failed=Tor נכשל לבסס חיבור רשת Tor.
-torlauncher.tor_bootstrap_failed_details=%1$S failed (%2$S).
-
-torlauncher.unable_to_start_tor=אין אפשרות להתחיל את Tor.\n\n%S
-torlauncher.tor_missing=בר הרצה Tor הינו חסר.
-torlauncher.torrc_missing=הקובץ torrc הינו חסר.
-torlauncher.datadir_missing=ספריית נתונים Tor לא קיימת.
+torlauncher.tor_controlconn_failed=נכשל החיבור לפורט השליטה של Tor.
+torlauncher.tor_failed_to_start=הפעלת Tor נכשלה.
+torlauncher.tor_control_failed=כשלה נטילת השליטה על Tor.
+torlauncher.tor_bootstrap_failed=נכשל הניסיון להקים חיבור יציב לרשת Tor.
+torlauncher.tor_bootstrap_failed_details=%1$S נכשל (%2$S).
+
+torlauncher.unable_to_start_tor=אין אפשרות להפעיל את Tor.\n\n%S
+torlauncher.tor_missing=קובץ ההפעלה של Tor איננו קיים.
+torlauncher.torrc_missing=קובץ torrc איננו קיים.
+torlauncher.datadir_missing=תיקיית הנתונים Tor איננה קיימת.
torlauncher.password_hash_missing=כשל בהשגת סיסמה מעורבלת.
torlauncher.failed_to_get_settings=אין אפשרות לאחזר הגדרות Tor.\n\n%S
torlauncher.failed_to_save_settings=אין אפשרות לשמור הגדרות Tor.\n\n%S
-torlauncher.ensure_tor_is_running=אנא וודא כי Tor מורץ כעת.
+torlauncher.ensure_tor_is_running=אנא וודא כי Tor פועל כעת.
-torlauncher.error_proxy_addr_missing=עליך לציין כתובת IP או שם מארח וגם מספר יציאה בכדי להגדיר את Tor לשימוש בשרת פרוקסי כדי לעשות שימוש בפרוקסי כדי להיכנס אל האינטרנט.
-torlauncher.error_proxy_type_missing=עליך לבחור את טיפוס הפרוקסי.
-torlauncher.error_bridges_missing=עליך לציין גשר אחד או יותר.
-torlauncher.error_default_bridges_type_missing=You must select a transport type for the provided bridges.
-torlauncher.error_bridge_bad_default_type=No provided bridges that have the transport type %S are available. Please adjust your settings.
+torlauncher.error_proxy_addr_missing=עליך לציין גם כתובת IP או שם מארח וגם מספר פורט כדי לאפשר ל-Tor להיעזר בשרת פרוקסי על מנת לגשת לרשת האינטרנט.
+torlauncher.error_proxy_type_missing=עליך לבחור את סוג שרת הפרוקסי.
+torlauncher.error_bridges_missing=עליך לבחור בגשר אחד לפחות.
+torlauncher.error_default_bridges_type_missing=עליך לבחור באיזה סוג של מסווה תעבורה תרצה להשתמש בגשרים שבחרת.
+torlauncher.error_bridge_bad_default_type=גשרים בעלי מסווה תעבורה מסוג %S אינם זמינים כעת. אנא בחר סוג אחר.
torlauncher.recommended_bridge=(מומלץ)
torlauncher.connect=התחבר
torlauncher.restart_tor=התחל מחדש את Tor
-torlauncher.quit=יציאה
-torlauncher.quit_win=צא
-torlauncher.done=הושלם
-
-torlauncher.forAssistance=לעזרה, צרו קשר עם %S
-
-torlauncher.copiedNLogMessages=Copy complete. %S Tor log messages are ready to be pasted into a text editor or an email message.
-
-torlauncher.bootstrapStatus.conn_dir=מתחבר כעת אל מדור ממסר
-torlauncher.bootstrapStatus.handshake_dir=מקים כעת חיבור ספריות מוצפן
-torlauncher.bootstrapStatus.requesting_status=מאתר כעת את מצב הרשת
-torlauncher.bootstrapStatus.loading_status=טוען כעת את מצב הרשת
-torlauncher.bootstrapStatus.loading_keys=טוען כעת אישורים אמינים
-torlauncher.bootstrapStatus.requesting_descriptors=מבקש כעת מידע ממסר
-torlauncher.bootstrapStatus.loading_descriptors=טוען כעת מידע ממסר
-torlauncher.bootstrapStatus.conn_or=מתחבר כעת אל רשת Tor
-torlauncher.bootstrapStatus.handshake_or=מקים כעת מעגל Tor
+torlauncher.quit=צא
+torlauncher.quit_win=יציאה
+torlauncher.done=בוצע
+
+torlauncher.forAssistance=לתמיכה, צור קשר עם %S
+
+torlauncher.copiedNLogMessages=ההעתקה הושלמה. %S הודעות מיומן הרישום של Tor מוכנות להעתקה לתוך עורך טקסט או להודעת דואל.
+
+torlauncher.bootstrapStatus.conn_dir=מתחבר למאגר שרתים
+torlauncher.bootstrapStatus.handshake_dir=מקים כעת חיבור מוצפן למאגר שרתים
+torlauncher.bootstrapStatus.requesting_status=מתעדכן כעת במצב הרשת
+torlauncher.bootstrapStatus.loading_status=טוען את מצב הרשת
+torlauncher.bootstrapStatus.loading_keys=טוען את אישורי האבטחה של הרשות
+torlauncher.bootstrapStatus.requesting_descriptors=מבקש רשימת שרתים
+torlauncher.bootstrapStatus.loading_descriptors=טוען רשימת שרתים
+torlauncher.bootstrapStatus.conn_or=מתחבר אל רשת Tor
+torlauncher.bootstrapStatus.handshake_or=מקים נתיב Tor
torlauncher.bootstrapStatus.done=מחובר לרשת Tor!
torlauncher.bootstrapWarning.done=בוצע
-torlauncher.bootstrapWarning.connectrefused=החיבור נדחה
+torlauncher.bootstrapWarning.connectrefused=החיבור סורב
torlauncher.bootstrapWarning.misc=שונות
torlauncher.bootstrapWarning.resourcelimit=משאבים לא מספיקים
torlauncher.bootstrapWarning.identity=זהות אינה תואמת
torlauncher.bootstrapWarning.timeout=החיבור פקע
torlauncher.bootstrapWarning.noroute=אין נתיב לארח
torlauncher.bootstrapWarning.ioerror=שגיאת קריאה/כתיבה
-torlauncher.bootstrapWarning.pt_missing=missing pluggable transport
+torlauncher.bootstrapWarning.pt_missing=חסר מסווה תעבורה
diff --git a/src/chrome/locale/hi/network-settings.dtd b/src/chrome/locale/hi/network-settings.dtd
index 56e4906..95ec84d 100644
--- a/src/chrome/locale/hi/network-settings.dtd
+++ b/src/chrome/locale/hi/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/hr-HR/network-settings.dtd b/src/chrome/locale/hr-HR/network-settings.dtd
index 0b41d35..74d4ce2 100644
--- a/src/chrome/locale/hr-HR/network-settings.dtd
+++ b/src/chrome/locale/hr-HR/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor mrežne postavke">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Jezik Tor Preglednika">
+<!ENTITY torlauncher.localePicker.prompt "Molimo odaberite jezik.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Prije nego se spojite na Tor mrežu, trebate dati informacije o
diff --git a/src/chrome/locale/hr/network-settings.dtd b/src/chrome/locale/hr/network-settings.dtd
index 7f24263..0ccf030 100644
--- a/src/chrome/locale/hr/network-settings.dtd
+++ b/src/chrome/locale/hr/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Postavke Tor Mreže">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/ht/network-settings.dtd b/src/chrome/locale/ht/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/ht/network-settings.dtd
+++ b/src/chrome/locale/ht/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/hu/network-settings.dtd b/src/chrome/locale/hu/network-settings.dtd
index f89464c..afdfafc 100644
--- a/src/chrome/locale/hu/network-settings.dtd
+++ b/src/chrome/locale/hu/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor hálózati beállítások">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser nyelv">
+<!ENTITY torlauncher.localePicker.prompt "Kérlek válassz egy nyelvet.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Mielőtt a Tor hálózatra csatlakoznál, információt kell adj a számítógép internet kapcsolatáról.">
diff --git a/src/chrome/locale/hu/torlauncher.properties b/src/chrome/locale/hu/torlauncher.properties
index c841168..d2b6ea2 100644
--- a/src/chrome/locale/hu/torlauncher.properties
+++ b/src/chrome/locale/hu/torlauncher.properties
@@ -3,7 +3,7 @@
torlauncher.error_title=Tor Indító
-torlauncher.tor_exited=A Tor váratlanul kilépet. Ez bekövetkezhet a Tor-ban található hibából, egy a rendszeren található másik programból, vagy hibás harverből. Amíg nem indítja újra a tor-t addig a Tor böngésző nem ér el semmilyen oldalt. Ha a hiba folyamatosan fennáll, kérjük küldje le a Tor Log-ot a támogatási csoportnak.
+torlauncher.tor_exited=A Tor váratlanul kilépet. Ez bekövetkezhet a Tor-ban található hibából, egy a rendszeren található másik programból, vagy hibás hardverből. Amíg nem indítja újra a tor-t addig a Tor Browser nem ér el semmilyen oldalt. Ha a hiba folyamatosan fennáll, kérjük küldje le a Tor Log-ot a támogatási csoportnak.
torlauncher.tor_exited2=A Tor újraindítása nem fogja bezárni a böngésző füleket.
torlauncher.tor_controlconn_failed=Nem lehetséges csatlakozni a Tor vezérlő portjára
torlauncher.tor_failed_to_start=Nem sikerült elindulnia a Tor-nak.
diff --git a/src/chrome/locale/hy-AM/network-settings.dtd b/src/chrome/locale/hy-AM/network-settings.dtd
index f4460b2..0daa0a7 100644
--- a/src/chrome/locale/hy-AM/network-settings.dtd
+++ b/src/chrome/locale/hy-AM/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/hy/network-settings.dtd b/src/chrome/locale/hy/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/hy/network-settings.dtd
+++ b/src/chrome/locale/hy/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/ia/network-settings.dtd b/src/chrome/locale/ia/network-settings.dtd
index 2328ab6..13fc151 100644
--- a/src/chrome/locale/ia/network-settings.dtd
+++ b/src/chrome/locale/ia/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/id/network-settings.dtd b/src/chrome/locale/id/network-settings.dtd
index e410043..2062d8c 100644
--- a/src/chrome/locale/id/network-settings.dtd
+++ b/src/chrome/locale/id/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Pengaturan Jaringan Tor">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Bahasa Peramban Tor">
+<!ENTITY torlauncher.localePicker.prompt "Silahkan pilih bahasa.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Sebelum Anda terhubung ke jaringan Tor, Anda perlu memberikan informasi tentang koneksi internet komputer ini.">
diff --git a/src/chrome/locale/is/network-settings.dtd b/src/chrome/locale/is/network-settings.dtd
index 00e059c..9af70e1 100644
--- a/src/chrome/locale/is/network-settings.dtd
+++ b/src/chrome/locale/is/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/it/network-settings.dtd b/src/chrome/locale/it/network-settings.dtd
index 026e63e..2f9859e 100644
--- a/src/chrome/locale/it/network-settings.dtd
+++ b/src/chrome/locale/it/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Impostazioni rete Tor">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Prima di connetterti alla rete Tor, devi fornire le informazioni riguardo la connessione internet di questo computer.">
diff --git a/src/chrome/locale/ja/network-settings.dtd b/src/chrome/locale/ja/network-settings.dtd
index 68ebd96..dc7f76f 100644
--- a/src/chrome/locale/ja/network-settings.dtd
+++ b/src/chrome/locale/ja/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Torネットワーク設定">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Tor ネットワークに接続する前に、このコンピューターのインターネット接続についての情報を提供して頂く必要があります。">
diff --git a/src/chrome/locale/jv/network-settings.dtd b/src/chrome/locale/jv/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/jv/network-settings.dtd
+++ b/src/chrome/locale/jv/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/ka/network-settings.dtd b/src/chrome/locale/ka/network-settings.dtd
index 8faeef4..7551c74 100644
--- a/src/chrome/locale/ka/network-settings.dtd
+++ b/src/chrome/locale/ka/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/kk/network-settings.dtd b/src/chrome/locale/kk/network-settings.dtd
index 61cb458..f1d2205 100644
--- a/src/chrome/locale/kk/network-settings.dtd
+++ b/src/chrome/locale/kk/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/km/network-settings.dtd b/src/chrome/locale/km/network-settings.dtd
index 65c3328..eff2770 100644
--- a/src/chrome/locale/km/network-settings.dtd
+++ b/src/chrome/locale/km/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "ការកំណត់បណ្ដាញ Tor">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "មុនពេលអ្នកភ្ជាប់ទៅបណ្ដាញ Tor អ្នកត្រូវផ្ដល់ព័ត៌មានអំពីការភ្ជាប់អ៊ីនធឺណិតកុំព្យូទ័រនេះ។">
diff --git a/src/chrome/locale/kn/network-settings.dtd b/src/chrome/locale/kn/network-settings.dtd
index a88ceb2..2c14637 100644
--- a/src/chrome/locale/kn/network-settings.dtd
+++ b/src/chrome/locale/kn/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/ko-KR/network-settings.dtd b/src/chrome/locale/ko-KR/network-settings.dtd
index bc07f76..63fb382 100644
--- a/src/chrome/locale/ko-KR/network-settings.dtd
+++ b/src/chrome/locale/ko-KR/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/ko/network-settings.dtd b/src/chrome/locale/ko/network-settings.dtd
index 9f67a86..88ba8b1 100644
--- a/src/chrome/locale/ko/network-settings.dtd
+++ b/src/chrome/locale/ko/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor 네트워크 설정">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Tor 네트워크에 연결을 시도하기 전에, 이 컴퓨터의 인터넷 연결에 대한 정보를 제공해야합니다.">
diff --git a/src/chrome/locale/ku/network-settings.dtd b/src/chrome/locale/ku/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/ku/network-settings.dtd
+++ b/src/chrome/locale/ku/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/kw/network-settings.dtd b/src/chrome/locale/kw/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/kw/network-settings.dtd
+++ b/src/chrome/locale/kw/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/ky/network-settings.dtd b/src/chrome/locale/ky/network-settings.dtd
index 29fa570..ef50668 100644
--- a/src/chrome/locale/ky/network-settings.dtd
+++ b/src/chrome/locale/ky/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/lb/network-settings.dtd b/src/chrome/locale/lb/network-settings.dtd
index 07d3d09..0aabd24 100644
--- a/src/chrome/locale/lb/network-settings.dtd
+++ b/src/chrome/locale/lb/network-settings.dtd
@@ -1,11 +1,15 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
-<!ENTITY torSettings.yes "Yes">
-<!ENTITY torSettings.no "No">
+<!ENTITY torSettings.yes "Jo">
+<!ENTITY torSettings.no "Nee">
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
@@ -38,7 +42,7 @@
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
<!ENTITY torsettings.useProxy.port "Port:">
<!ENTITY torsettings.useProxy.username "Username:">
-<!ENTITY torsettings.useProxy.password "Password:">
+<!ENTITY torsettings.useProxy.password "Passwuert:">
<!ENTITY torsettings.useProxy.type.socks4 "SOCKS 4">
<!ENTITY torsettings.useProxy.type.socks5 "SOCKS 5">
<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
diff --git a/src/chrome/locale/lb/torlauncher.properties b/src/chrome/locale/lb/torlauncher.properties
index 02be756..9edd40f 100644
--- a/src/chrome/locale/lb/torlauncher.properties
+++ b/src/chrome/locale/lb/torlauncher.properties
@@ -33,7 +33,7 @@ torlauncher.connect=Connect
torlauncher.restart_tor=Restart Tor
torlauncher.quit=Quit
torlauncher.quit_win=Exit
-torlauncher.done=Done
+torlauncher.done=Fäerdeg
torlauncher.forAssistance=For assistance, contact %S
diff --git a/src/chrome/locale/lg/network-settings.dtd b/src/chrome/locale/lg/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/lg/network-settings.dtd
+++ b/src/chrome/locale/lg/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/ln/network-settings.dtd b/src/chrome/locale/ln/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/ln/network-settings.dtd
+++ b/src/chrome/locale/ln/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/lo/network-settings.dtd b/src/chrome/locale/lo/network-settings.dtd
index 52c6e42..bc62da0 100644
--- a/src/chrome/locale/lo/network-settings.dtd
+++ b/src/chrome/locale/lo/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "ການຕັ້ງຄ່າເຄືອຂ່າຍ Tor">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "ກ່ອນທີ່ທ່ານຈະເຊື່ອມຕໍ່ເຂົ້າເຄືອຂ່າຍ Tor, ທ່ານຕ້ອງໄດ້ໃຫ້ລາຍລະອຽດກ່ຽວກັບ ການເຊື່ອມຕໍ່ ອິນເຕີເນັດ ຂອງ ຄັອມພິວເຕີຣ໌ ນີ້ກ່ອນ.">
diff --git a/src/chrome/locale/lt/network-settings.dtd b/src/chrome/locale/lt/network-settings.dtd
index 624c09e..4966246 100644
--- a/src/chrome/locale/lt/network-settings.dtd
+++ b/src/chrome/locale/lt/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor tinklo parametrai">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
@@ -12,11 +16,11 @@
<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
-<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
+<!ENTITY torSettings.connectPrompt3 "Tai suveiks daugeliu situacijų.">
<!ENTITY torSettings.connect "Prisijungti">
<!ENTITY torSettings.proxyPageTitle "Local Proxy Configuration">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Ar šis kompiuteris naudoja vietinį proxy prisijungimui prie interneto?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
@@ -30,10 +34,10 @@
<!ENTITY torsettings.startingTor "Waiting for Tor to start…">
<!ENTITY torsettings.restartTor "Pakartotinai paleisti Tor">
-<!ENTITY torsettings.optional "Optional">
+<!ENTITY torsettings.optional "Nebūtina">
<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
-<!ENTITY torsettings.useProxy.type "Proxy Type:">
+<!ENTITY torsettings.useProxy.type "Proxy tipas:">
<!ENTITY torsettings.useProxy.address "Adresas:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
<!ENTITY torsettings.useProxy.port "Prievadas:">
diff --git a/src/chrome/locale/lt/progress.dtd b/src/chrome/locale/lt/progress.dtd
index 253043b..24b4319 100644
--- a/src/chrome/locale/lt/progress.dtd
+++ b/src/chrome/locale/lt/progress.dtd
@@ -1,4 +1,4 @@
-<!ENTITY torprogress.dialog.title "Tor Status">
-<!ENTITY torprogress.openSettings "Open Settings">
+<!ENTITY torprogress.dialog.title "Tor statusas">
+<!ENTITY torprogress.openSettings "Atidaryti nustatymus">
<!ENTITY torprogress.heading "Jungiamasi prie Tor tinklo">
-<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.">
+<!ENTITY torprogress.pleaseWait "Prašome palaukti kol sujungsime su Tor tinklu.">
diff --git a/src/chrome/locale/lv/network-settings.dtd b/src/chrome/locale/lv/network-settings.dtd
index 7c369cd..1f2c90d 100644
--- a/src/chrome/locale/lv/network-settings.dtd
+++ b/src/chrome/locale/lv/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor tīkla iestatījumi">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Pirms pievienojaties pie tīkla Tor, Jums jānorāda informācija par šī datora interneta savienojumu.">
diff --git a/src/chrome/locale/mg/network-settings.dtd b/src/chrome/locale/mg/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/mg/network-settings.dtd
+++ b/src/chrome/locale/mg/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/mi/network-settings.dtd b/src/chrome/locale/mi/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/mi/network-settings.dtd
+++ b/src/chrome/locale/mi/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/mk/network-settings.dtd b/src/chrome/locale/mk/network-settings.dtd
index bfd4124..d62a729 100644
--- a/src/chrome/locale/mk/network-settings.dtd
+++ b/src/chrome/locale/mk/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/ml/network-settings.dtd b/src/chrome/locale/ml/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/ml/network-settings.dtd
+++ b/src/chrome/locale/ml/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/mn/network-settings.dtd b/src/chrome/locale/mn/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/mn/network-settings.dtd
+++ b/src/chrome/locale/mn/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/mr/network-settings.dtd b/src/chrome/locale/mr/network-settings.dtd
index 1895b72..aa410db 100644
--- a/src/chrome/locale/mr/network-settings.dtd
+++ b/src/chrome/locale/mr/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/ms-MY/network-settings.dtd b/src/chrome/locale/ms-MY/network-settings.dtd
index a5db7dd..20a6de7 100644
--- a/src/chrome/locale/ms-MY/network-settings.dtd
+++ b/src/chrome/locale/ms-MY/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tetapan Rangkaian Tor">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Sebelum anda menyambung ke jaringan Tor, anda mestilah memberi maklumat tentang talian internet komputer ini terlebih dahulu.">
diff --git a/src/chrome/locale/mt/network-settings.dtd b/src/chrome/locale/mt/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/mt/network-settings.dtd
+++ b/src/chrome/locale/mt/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/my/network-settings.dtd b/src/chrome/locale/my/network-settings.dtd
index 3af4515..b1adfef 100644
--- a/src/chrome/locale/my/network-settings.dtd
+++ b/src/chrome/locale/my/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/my/progress.dtd b/src/chrome/locale/my/progress.dtd
index a5a4e99..7b35c53 100644
--- a/src/chrome/locale/my/progress.dtd
+++ b/src/chrome/locale/my/progress.dtd
@@ -1,4 +1,4 @@
<!ENTITY torprogress.dialog.title "Tor အနေအထား">
<!ENTITY torprogress.openSettings "Open Settings">
<!ENTITY torprogress.heading "Tor ကွန်ရက်ကို ဆက်သွယ်နေသည်">
-<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.">
+<!ENTITY torprogress.pleaseWait "Tor ကွန်ယက်နှင့် ချိတ်ဆက်မှုပြုလုပ်နေစဥ်စောင့်ဆိုင်းပေးပါ။">
diff --git a/src/chrome/locale/nah/network-settings.dtd b/src/chrome/locale/nah/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/nah/network-settings.dtd
+++ b/src/chrome/locale/nah/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/nap/network-settings.dtd b/src/chrome/locale/nap/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/nap/network-settings.dtd
+++ b/src/chrome/locale/nap/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/nb/network-settings.dtd b/src/chrome/locale/nb/network-settings.dtd
index ad43941..1bc8963 100644
--- a/src/chrome/locale/nb/network-settings.dtd
+++ b/src/chrome/locale/nb/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Nettverksinnstillinger">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Språk i Tor-nettleser">
+<!ENTITY torlauncher.localePicker.prompt "Velg språk">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Før du kan koble til Tor-nettverket, må du gi informasjon om denne datamaskinens internett-tilkobling.">
diff --git a/src/chrome/locale/nds/network-settings.dtd b/src/chrome/locale/nds/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/nds/network-settings.dtd
+++ b/src/chrome/locale/nds/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/ne/network-settings.dtd b/src/chrome/locale/ne/network-settings.dtd
index ad59738..a853c53 100644
--- a/src/chrome/locale/ne/network-settings.dtd
+++ b/src/chrome/locale/ne/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/nl-BE/network-settings.dtd b/src/chrome/locale/nl-BE/network-settings.dtd
index 2de3c52..0cb285b 100644
--- a/src/chrome/locale/nl-BE/network-settings.dtd
+++ b/src/chrome/locale/nl-BE/network-settings.dtd
@@ -1,43 +1,47 @@
-<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!ENTITY torsettings.dialog.title "Tor Netwerk Instellingen">
+
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
<!-- For "first run" wizard: -->
-<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
+<!ENTITY torsettings.prompt "Voordat u connecteert met het Tor netwerk, dient u informatie op te geven inzake uw internetconnectie.">
<!ENTITY torSettings.yes "Ja">
<!ENTITY torSettings.no "Nee">
-<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
-<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
-<!ENTITY torSettings.configure "Configure">
-<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
-<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
-<!ENTITY torSettings.connect "Connect">
+<!ENTITY torSettings.firstQuestion "Welke van devolgende situaties beschrijft uw situatie het best?">
+<!ENTITY torSettings.configurePrompt1 "De Internet connectie van deze computer is gecensureerd of connecteert via een proxy.">
+<!ENTITY torSettings.configurePrompt2 "Ik dien bridge of lokale proxy instellingen te configureren.">
+<!ENTITY torSettings.configure "Configureer">
+<!ENTITY torSettings.connectPrompt2 "Ik zou direct naar het Tor netwerk willen connecteren.">
+<!ENTITY torSettings.connectPrompt3 "Dit zal werken in de meeste situaties.">
+<!ENTITY torSettings.connect "Verbinden">
-<!ENTITY torSettings.proxyPageTitle "Local Proxy Configuration">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
+<!ENTITY torSettings.proxyPageTitle "Lokale Proxy Configuratie.">
+<!ENTITY torSettings.proxyQuestion "Gebruikt deze computer een lokale proxy om verbinding te maken met het Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
-<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
-<!ENTITY torSettings.bridgePageTitle "Tor Bridges Configuration">
-<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
+<!ENTITY torSettings.enterProxy "Geef de proxy instellingen in">
+<!ENTITY torSettings.bridgePageTitle "Tor Bridges Configuratie">
+<!ENTITY torSettings.bridgeQuestion "Blokkeert of censureert uw internetleverancier (ISP) connecties naar het Tor netwerk?">
<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
<!ENTITY torSettings.bridgeSettingsPrompt "You may use the provided set of bridges or you may obtain and enter a custom set of bridges.">
<!-- Other: -->
-<!ENTITY torsettings.startingTor "Waiting for Tor to start…">
-<!ENTITY torsettings.restartTor "Restart Tor">
+<!ENTITY torsettings.startingTor "Wachten tot Tor opstart...">
+<!ENTITY torsettings.restartTor "Tor herstarten">
-<!ENTITY torsettings.optional "Optional">
+<!ENTITY torsettings.optional "Optioneel">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "Deze computer heeft een lokale proxy nodig om toegang te krijgen tot het Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
-<!ENTITY torsettings.useProxy.address "Address:">
-<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
-<!ENTITY torsettings.useProxy.port "Port:">
-<!ENTITY torsettings.useProxy.username "Username:">
+<!ENTITY torsettings.useProxy.address "Adres:">
+<!ENTITY torsettings.useProxy.address.placeholder "IP adres of hostnaam">
+<!ENTITY torsettings.useProxy.port "Poort:">
+<!ENTITY torsettings.useProxy.username "Gebruikersnaam:">
<!ENTITY torsettings.useProxy.password "Wachtwoord:">
<!ENTITY torsettings.useProxy.type.socks4 "SOCKS 4">
<!ENTITY torsettings.useProxy.type.socks5 "SOCKS 5">
@@ -55,10 +59,10 @@
<!ENTITY torsettings.bridgeHelpTitle "Bridge Relay Help">
<!ENTITY torsettings.bridgeHelp1 "If you are unable to connect to the Tor network, it could be that your Internet Service Provider (ISP) or another agency is blocking Tor.  Often, you can work around this problem by using Tor Bridges, which are unlisted relays that are more difficult to block.">
<!ENTITY torsettings.bridgeHelp1B "You may use the preconfigured, provided set of bridge addresses or you may obtain a custom set of addresses by using one of these three methods:">
-<!ENTITY torsettings.bridgeHelp2Heading "Through the Web">
-<!ENTITY torsettings.bridgeHelp2 "Use a web browser to visit https://bridges.torproject.org">
+<!ENTITY torsettings.bridgeHelp2Heading "Via het Web">
+<!ENTITY torsettings.bridgeHelp2 "Gebruik een web browser om https://bridges.torproject.org te bezoeken">
<!ENTITY torsettings.bridgeHelp3Heading "Through the Email Autoresponder">
<!ENTITY torsettings.bridgeHelp3.emailDesc "Send email to bridges(a)torproject.org with the line 'get bridges' by itself in the body of the message.  However, to make it harder for an attacker to learn a lot of bridge addresses, you must send this request from one of the following email providers (listed in order of preference):">
<!ENTITY torsettings.bridgeHelp3.emailList "https://www.riseup.net, https://mail.google.com, or https://mail.yahoo.com">
-<!ENTITY torsettings.bridgeHelp4Heading "Through the Help Desk">
+<!ENTITY torsettings.bridgeHelp4Heading "Via de Help Desk">
<!ENTITY torsettings.bridgeHelp4 "As a last resort, you can request bridge addresses by sending a polite email message to help(a)rt.torproject.org.  Please note that a person will need to respond to each request.">
diff --git a/src/chrome/locale/nl-BE/torlauncher.properties b/src/chrome/locale/nl-BE/torlauncher.properties
index 8d3941b..e231325 100644
--- a/src/chrome/locale/nl-BE/torlauncher.properties
+++ b/src/chrome/locale/nl-BE/torlauncher.properties
@@ -6,14 +6,14 @@ torlauncher.error_title=Tor Launcher
torlauncher.tor_exited=Tor unexpectedly exited. This might be due to a bug in Tor itself, another program on your system, or faulty hardware. Until you restart Tor, the Tor Browser will not able to reach any websites. If the problem persists, please send a copy of your Tor Log to the support team.
torlauncher.tor_exited2=Restarting Tor will not close your browser tabs.
torlauncher.tor_controlconn_failed=Could not connect to Tor control port.
-torlauncher.tor_failed_to_start=Tor failed to start.
+torlauncher.tor_failed_to_start=Kan Tor niet starten.
torlauncher.tor_control_failed=Failed to take control of Tor.
torlauncher.tor_bootstrap_failed=Tor failed to establish a Tor network connection.
torlauncher.tor_bootstrap_failed_details=%1$S failed (%2$S).
-torlauncher.unable_to_start_tor=Unable to start Tor.\n\n%S
+torlauncher.unable_to_start_tor=Kan Tor niet starten.\n\n%S
torlauncher.tor_missing=The Tor executable is missing.
-torlauncher.torrc_missing=The torrc file is missing.
+torlauncher.torrc_missing=Het torcc bestand ontbreekt
torlauncher.datadir_missing=The Tor data directory does not exist.
torlauncher.password_hash_missing=Failed to get hashed password.
@@ -29,20 +29,20 @@ torlauncher.error_bridge_bad_default_type=No provided bridges that have the tran
torlauncher.recommended_bridge=(aanbevolen)
-torlauncher.connect=Connect
-torlauncher.restart_tor=Restart Tor
-torlauncher.quit=Quit
+torlauncher.connect=Verbinden
+torlauncher.restart_tor=Tor herstarten
+torlauncher.quit=Afsluiten
torlauncher.quit_win=Afsluiten
torlauncher.done=Klaar
-torlauncher.forAssistance=For assistance, contact %S
+torlauncher.forAssistance=Voor assistentie, gelieve %S te contacteren
torlauncher.copiedNLogMessages=Copy complete. %S Tor log messages are ready to be pasted into a text editor or an email message.
torlauncher.bootstrapStatus.conn_dir=Connecting to a relay directory
torlauncher.bootstrapStatus.handshake_dir=Establishing an encrypted directory connection
-torlauncher.bootstrapStatus.requesting_status=Retrieving network status
-torlauncher.bootstrapStatus.loading_status=Loading network status
+torlauncher.bootstrapStatus.requesting_status=Netwerkstatus aan het ophalen
+torlauncher.bootstrapStatus.loading_status=Netwerkstatus aan het lasen
torlauncher.bootstrapStatus.loading_keys=Loading authority certificates
torlauncher.bootstrapStatus.requesting_descriptors=Requesting relay information
torlauncher.bootstrapStatus.loading_descriptors=Loading relay information
@@ -50,12 +50,12 @@ torlauncher.bootstrapStatus.conn_or=Connecteren naar het Tor netwerk
torlauncher.bootstrapStatus.handshake_or=Establishing a Tor circuit
torlauncher.bootstrapStatus.done=Connected to the Tor network!
-torlauncher.bootstrapWarning.done=done
+torlauncher.bootstrapWarning.done=klaar
torlauncher.bootstrapWarning.connectrefused=connection refused
torlauncher.bootstrapWarning.misc=miscellaneous
torlauncher.bootstrapWarning.resourcelimit=insufficient resources
torlauncher.bootstrapWarning.identity=identity mismatch
torlauncher.bootstrapWarning.timeout=connection timeout
torlauncher.bootstrapWarning.noroute=no route to host
-torlauncher.bootstrapWarning.ioerror=read/write error
+torlauncher.bootstrapWarning.ioerror=read/write foutmelding
torlauncher.bootstrapWarning.pt_missing=missing pluggable transport
diff --git a/src/chrome/locale/nl/network-settings.dtd b/src/chrome/locale/nl/network-settings.dtd
index 8bb2a1e..5415366 100644
--- a/src/chrome/locale/nl/network-settings.dtd
+++ b/src/chrome/locale/nl/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor netwerkinstellingen">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Taal">
+<!ENTITY torlauncher.localePicker.prompt "Selecteer een taal.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Voordat je verbindt met het Tor-netwerk moet je eerst wat meer informatie geven over de internetverbinding van deze computer.">
diff --git a/src/chrome/locale/nn/network-settings.dtd b/src/chrome/locale/nn/network-settings.dtd
index 41af041..8a75a1f 100644
--- a/src/chrome/locale/nn/network-settings.dtd
+++ b/src/chrome/locale/nn/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor nettverksinnstillingar">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/nso/network-settings.dtd b/src/chrome/locale/nso/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/nso/network-settings.dtd
+++ b/src/chrome/locale/nso/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/oc/network-settings.dtd b/src/chrome/locale/oc/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/oc/network-settings.dtd
+++ b/src/chrome/locale/oc/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/or/network-settings.dtd b/src/chrome/locale/or/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/or/network-settings.dtd
+++ b/src/chrome/locale/or/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/pa/network-settings.dtd b/src/chrome/locale/pa/network-settings.dtd
index 4052c35..4270144 100644
--- a/src/chrome/locale/pa/network-settings.dtd
+++ b/src/chrome/locale/pa/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "ਟੋਰ ਨੈੱਟਵਰਕ ਸੈਟਿੰਗ">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/pap/network-settings.dtd b/src/chrome/locale/pap/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/pap/network-settings.dtd
+++ b/src/chrome/locale/pap/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/pl/network-settings.dtd b/src/chrome/locale/pl/network-settings.dtd
index 0640c15..a7af06b 100644
--- a/src/chrome/locale/pl/network-settings.dtd
+++ b/src/chrome/locale/pl/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Ustawienia Sieci">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Język przeglądarki Tor.">
+<!ENTITY torlauncher.localePicker.prompt "Wybierz język.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Zanim podłączysz się do sieci Tor, uzupełnij informacje o parametrach połączenia tego komputera z internetem.">
diff --git a/src/chrome/locale/pms/network-settings.dtd b/src/chrome/locale/pms/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/pms/network-settings.dtd
+++ b/src/chrome/locale/pms/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/ps/network-settings.dtd b/src/chrome/locale/ps/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/ps/network-settings.dtd
+++ b/src/chrome/locale/ps/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/pt-BR/network-settings.dtd b/src/chrome/locale/pt-BR/network-settings.dtd
index c8bbdf7..544bc0b 100644
--- a/src/chrome/locale/pt-BR/network-settings.dtd
+++ b/src/chrome/locale/pt-BR/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Configurações da Rede Tor">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Idioma do navegador Tor">
+<!ENTITY torlauncher.localePicker.prompt "Por favor selecione um idioma.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Antes de se conectar à rede Tor, você deve fornecer informações sobre a conexão a Internet desse computador.">
diff --git a/src/chrome/locale/pt/network-settings.dtd b/src/chrome/locale/pt/network-settings.dtd
index 0ba38a3..251a592 100644
--- a/src/chrome/locale/pt/network-settings.dtd
+++ b/src/chrome/locale/pt/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Configurações da Rede Tor">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Linguagem do Navegador Tor">
+<!ENTITY torlauncher.localePicker.prompt "Por favor seleccione um idioma.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Antes de se ligar à rede Tor, precisa de fornecer informação sobre a ligação deste computador à Internet.">
@@ -9,13 +13,13 @@
<!ENTITY torSettings.firstQuestion "Qual das seguintes frases melhor descreve a sua situação?">
<!ENTITY torSettings.configurePrompt1 "Esta ligação à Internet deste computador está censurada ou é efetuada via proxy.">
-<!ENTITY torSettings.configurePrompt2 "Preciso de configurar a ponte ou as definições locais de proxy.">
+<!ENTITY torSettings.configurePrompt2 "Eu preciso de configurar a ponte ou as definições de proxy local.">
<!ENTITY torSettings.configure "Configurar">
<!ENTITY torSettings.connectPrompt2 "Eu gostaria de me ligar diretamente à rede Tor.">
<!ENTITY torSettings.connectPrompt3 "Isto funciona na maior parte das situações.">
<!ENTITY torSettings.connect "Ligar">
-<!ENTITY torSettings.proxyPageTitle "Configuração do servidor local">
+<!ENTITY torSettings.proxyPageTitle "Configuração do Proxy Local">
<!ENTITY torSettings.proxyQuestion "Este computador precisa de usar um acesso proxy à Intrnet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
<!ENTITY torSettings.proxyHelp "Se não tem a certeza da resposta, veja as definições de Internet noutro navegador para confirmar se está configurado para usar um proxy local.">
diff --git a/src/chrome/locale/pt/torlauncher.properties b/src/chrome/locale/pt/torlauncher.properties
index 45b7a61..61b4aa9 100644
--- a/src/chrome/locale/pt/torlauncher.properties
+++ b/src/chrome/locale/pt/torlauncher.properties
@@ -5,7 +5,7 @@ torlauncher.error_title=Executor Tor
torlauncher.tor_exited=O Tor encerrou inesperadamente. Isto pode ter acontecido devido a erro dentro do Tor, outro programa no seu sistema ou falha de hardware. Até que reinicie o Tor, o Navegador Tor não irá poder aceder a quaisquer sítios da Web. Se o problema persistir, por favor, envie uma cópia do Registo de Eventos do seu Tor para a equipa de suporte.
torlauncher.tor_exited2=Ao reiniciar o Tor não irá fechar os separadores do seu navegador.
-torlauncher.tor_controlconn_failed=Não foi possível conetar à porta de controlo do Tor.
+torlauncher.tor_controlconn_failed=Não foi possível ligar à porta de controlo do Tor.
torlauncher.tor_failed_to_start=O Tor não foi iniciado.
torlauncher.tor_control_failed=Não foi possível obter o controlo do Tor
torlauncher.tor_bootstrap_failed=O Tor não conseguiu estabelecer uma ligação de rede Tor.
@@ -17,8 +17,8 @@ torlauncher.torrc_missing=O ficheiro torrc está em falta.
torlauncher.datadir_missing=A pasta dos dados do Tor não existe.
torlauncher.password_hash_missing=Não foi possível obter a senha "hashed".
-torlauncher.failed_to_get_settings=Não é possível obter as definições do Tor\n\n %S
-torlauncher.failed_to_save_settings=Não é possível guardar as definições do Tor\n\n %S
+torlauncher.failed_to_get_settings=Não é possível obter as configurações do Tor\n\n %S
+torlauncher.failed_to_save_settings=Não é possível guardar as configurações do Tor\n\n %S
torlauncher.ensure_tor_is_running=Por favor, assegure que o Tor está em execução.
torlauncher.error_proxy_addr_missing=Deve especificar ambos, um endereço de IP ou o nome de hospedeiro e um número de porta para configurar o Tor, para utilizar um proxy para aceder à Internet.
@@ -32,7 +32,7 @@ torlauncher.recommended_bridge=(recomendado)
torlauncher.connect=Ligar
torlauncher.restart_tor=Reiniciar o Tor
torlauncher.quit=Sair
-torlauncher.quit_win=Sair
+torlauncher.quit_win=Fechar
torlauncher.done=Concluído
torlauncher.forAssistance=Para assistência, contacte %S
diff --git a/src/chrome/locale/ro/network-settings.dtd b/src/chrome/locale/ro/network-settings.dtd
index dfceb1b..6561901 100644
--- a/src/chrome/locale/ro/network-settings.dtd
+++ b/src/chrome/locale/ro/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Setări rețea Tor">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Înainte de a vă conecta la rețeaua Tor, trebuie să oferiți informații despre conexiunea acestui computer la Internet.">
diff --git a/src/chrome/locale/ru/network-settings.dtd b/src/chrome/locale/ru/network-settings.dtd
index f7d2be0..4880f19 100644
--- a/src/chrome/locale/ru/network-settings.dtd
+++ b/src/chrome/locale/ru/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Сетевые настройки Tor">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Прежде чем вы подключитесь к сети Tor, вам нужно указать информацию об интернет-соединении этого компьютера.">
diff --git a/src/chrome/locale/ru(a)petr1708/network-settings.dtd b/src/chrome/locale/ru(a)petr1708/network-settings.dtd
index 7caaf17..3c1d225 100644
--- a/src/chrome/locale/ru(a)petr1708/network-settings.dtd
+++ b/src/chrome/locale/ru(a)petr1708/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/sco/network-settings.dtd b/src/chrome/locale/sco/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/sco/network-settings.dtd
+++ b/src/chrome/locale/sco/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/si-LK/network-settings.dtd b/src/chrome/locale/si-LK/network-settings.dtd
index 658325d..0ef880c 100644
--- a/src/chrome/locale/si-LK/network-settings.dtd
+++ b/src/chrome/locale/si-LK/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "TOR ජාල සිටුවම්">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/sk-SK/network-settings.dtd b/src/chrome/locale/sk-SK/network-settings.dtd
index 2cd33df..8520626 100644
--- a/src/chrome/locale/sk-SK/network-settings.dtd
+++ b/src/chrome/locale/sk-SK/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Nastavenia Tor Network">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Pred tým, než sa pripojíte k sieti Tor, je potrebné poskytnúť informácie o pripojení tohto počítača na Internet.">
diff --git a/src/chrome/locale/sk/network-settings.dtd b/src/chrome/locale/sk/network-settings.dtd
index ff81a82..096cb08 100644
--- a/src/chrome/locale/sk/network-settings.dtd
+++ b/src/chrome/locale/sk/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Sieťové Nastavenia Tor">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Predtým než sa pripojíte k sieti Toru, potrebujete poskytnúť informácie o pripojení tohto počítača k Internetu.">
diff --git a/src/chrome/locale/sl-SI/network-settings.dtd b/src/chrome/locale/sl-SI/network-settings.dtd
index b4c6070..e80491f 100644
--- a/src/chrome/locale/sl-SI/network-settings.dtd
+++ b/src/chrome/locale/sl-SI/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor mrežne nastavitve">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Preden se povežete na Tor omrežje, si morate priskrbeti informacije o tej računalniški internet povezavi.">
diff --git a/src/chrome/locale/sl/network-settings.dtd b/src/chrome/locale/sl/network-settings.dtd
index 5435c0e..31e1cfc 100644
--- a/src/chrome/locale/sl/network-settings.dtd
+++ b/src/chrome/locale/sl/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/sn/network-settings.dtd b/src/chrome/locale/sn/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/sn/network-settings.dtd
+++ b/src/chrome/locale/sn/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/so/network-settings.dtd b/src/chrome/locale/so/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/so/network-settings.dtd
+++ b/src/chrome/locale/so/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/son/network-settings.dtd b/src/chrome/locale/son/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/son/network-settings.dtd
+++ b/src/chrome/locale/son/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/sq-AL/torlauncher.properties b/src/chrome/locale/sq-AL/torlauncher.properties
index a2550db..02be756 100644
--- a/src/chrome/locale/sq-AL/torlauncher.properties
+++ b/src/chrome/locale/sq-AL/torlauncher.properties
@@ -3,8 +3,8 @@
torlauncher.error_title=Tor Launcher
-torlauncher.tor_exited=Tor unexpectedly exited.
-torlauncher.please_restart_app=Please restart this application.
+torlauncher.tor_exited=Tor unexpectedly exited. This might be due to a bug in Tor itself, another program on your system, or faulty hardware. Until you restart Tor, the Tor Browser will not able to reach any websites. If the problem persists, please send a copy of your Tor Log to the support team.
+torlauncher.tor_exited2=Restarting Tor will not close your browser tabs.
torlauncher.tor_controlconn_failed=Could not connect to Tor control port.
torlauncher.tor_failed_to_start=Tor failed to start.
torlauncher.tor_control_failed=Failed to take control of Tor.
@@ -30,12 +30,15 @@ torlauncher.error_bridge_bad_default_type=No provided bridges that have the tran
torlauncher.recommended_bridge=(recommended)
torlauncher.connect=Connect
+torlauncher.restart_tor=Restart Tor
torlauncher.quit=Quit
torlauncher.quit_win=Exit
torlauncher.done=Done
torlauncher.forAssistance=For assistance, contact %S
+torlauncher.copiedNLogMessages=Copy complete. %S Tor log messages are ready to be pasted into a text editor or an email message.
+
torlauncher.bootstrapStatus.conn_dir=Connecting to a relay directory
torlauncher.bootstrapStatus.handshake_dir=Establishing an encrypted directory connection
torlauncher.bootstrapStatus.requesting_status=Retrieving network status
@@ -55,3 +58,4 @@ torlauncher.bootstrapWarning.identity=identity mismatch
torlauncher.bootstrapWarning.timeout=connection timeout
torlauncher.bootstrapWarning.noroute=no route to host
torlauncher.bootstrapWarning.ioerror=read/write error
+torlauncher.bootstrapWarning.pt_missing=missing pluggable transport
diff --git a/src/chrome/locale/sq/network-settings.dtd b/src/chrome/locale/sq/network-settings.dtd
index 6dce4eb..9a627e9 100644
--- a/src/chrome/locale/sq/network-settings.dtd
+++ b/src/chrome/locale/sq/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Konfigurimi i Rrjetit të Tor">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Përpara se të lidheni me rrjetin e Tor, ju nevojitet të ofroni informacion rreth lidhjes së Internetit të këtij kompjuteri.">
diff --git a/src/chrome/locale/sr/network-settings.dtd b/src/chrome/locale/sr/network-settings.dtd
index 7b0c4f2..0883ccf 100644
--- a/src/chrome/locale/sr/network-settings.dtd
+++ b/src/chrome/locale/sr/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Подешавања Тор мреже">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Пре него што се повежете на Тор мрежу, требало би да пружите информације о интернет конекцији овог рачунара.">
diff --git a/src/chrome/locale/sr(a)latin/network-settings.dtd b/src/chrome/locale/sr(a)latin/network-settings.dtd
index 905edc2..331278d 100644
--- a/src/chrome/locale/sr(a)latin/network-settings.dtd
+++ b/src/chrome/locale/sr(a)latin/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Podešavanja Tor mreže">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Pre nego što se konektujete na Tor mrežu, potrebno je da pružite informacije o internet konekciji ovog kompjutera.">
diff --git a/src/chrome/locale/st/network-settings.dtd b/src/chrome/locale/st/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/st/network-settings.dtd
+++ b/src/chrome/locale/st/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/su/network-settings.dtd b/src/chrome/locale/su/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/su/network-settings.dtd
+++ b/src/chrome/locale/su/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/sv/network-settings.dtd b/src/chrome/locale/sv/network-settings.dtd
index 4f1c21b..6ec3077 100644
--- a/src/chrome/locale/sv/network-settings.dtd
+++ b/src/chrome/locale/sv/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Nätverksinställningar för Tor">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Innan du ansluter till Tor-nätverket så behöver du lämna information om den här datorns internetanslutning.">
@@ -15,12 +19,12 @@
<!ENTITY torSettings.connectPrompt3 "Detta fungerar i de flesta situationer.">
<!ENTITY torSettings.connect "Anslut">
-<!ENTITY torSettings.proxyPageTitle "Local Proxy Configuration">
+<!ENTITY torSettings.proxyPageTitle "Lokal proxy-konfiguration">
<!ENTITY torSettings.proxyQuestion "Behöver den här datorn använda en lokal proxy för att ansluta till Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
<!ENTITY torSettings.proxyHelp "Om du är osäker på svaret på frågan, titta på Internetinställningarna i en annan webbläsare för att se om den är konfigurerad att använda en lokal proxy.">
<!ENTITY torSettings.enterProxy "Ange proxyinställningarna.">
-<!ENTITY torSettings.bridgePageTitle "Tor Bridges Configuration">
+<!ENTITY torSettings.bridgePageTitle "Konfiguration av Tor-bryggor">
<!ENTITY torSettings.bridgeQuestion "Blockerar eller censurerar din internetleverantör anslutningar till Tor-nätverket?">
<!ENTITY torSettings.bridgeHelp "Om du är osäker på hur du ska svara på den här frågan, välj Nej.  Om du väljer Ja kommer du ombes att konfigurera Tor-bryggor, vilka är olistade reläer som gör det svårare att blockera anslutningar till Tor-nätverket.">
<!ENTITY torSettings.bridgeSettingsPrompt "Du kan använda de förkonfigurerade bryggorna, eller skaffa och ange bryggor själv.">
diff --git a/src/chrome/locale/sw/network-settings.dtd b/src/chrome/locale/sw/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/sw/network-settings.dtd
+++ b/src/chrome/locale/sw/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/szl/network-settings.dtd b/src/chrome/locale/szl/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/szl/network-settings.dtd
+++ b/src/chrome/locale/szl/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/ta/network-settings.dtd b/src/chrome/locale/ta/network-settings.dtd
index 7b0f9e1..5e1479c 100644
--- a/src/chrome/locale/ta/network-settings.dtd
+++ b/src/chrome/locale/ta/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor நெட்வொர்க் அமைப்புகள்">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/te-IN/network-settings.dtd b/src/chrome/locale/te-IN/network-settings.dtd
index 07d3d09..8943c47 100644
--- a/src/chrome/locale/te-IN/network-settings.dtd
+++ b/src/chrome/locale/te-IN/network-settings.dtd
@@ -1,11 +1,15 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
<!ENTITY torSettings.yes "Yes">
-<!ENTITY torSettings.no "No">
+<!ENTITY torSettings.no "కాదు ">
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
diff --git a/src/chrome/locale/te/network-settings.dtd b/src/chrome/locale/te/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/te/network-settings.dtd
+++ b/src/chrome/locale/te/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/tg/network-settings.dtd b/src/chrome/locale/tg/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/tg/network-settings.dtd
+++ b/src/chrome/locale/tg/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/th/network-settings.dtd b/src/chrome/locale/th/network-settings.dtd
index dce3b91..23ad049 100644
--- a/src/chrome/locale/th/network-settings.dtd
+++ b/src/chrome/locale/th/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "ตั้งค่าเครือข่าย Tor">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/ti/network-settings.dtd b/src/chrome/locale/ti/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/ti/network-settings.dtd
+++ b/src/chrome/locale/ti/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/tk/network-settings.dtd b/src/chrome/locale/tk/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/tk/network-settings.dtd
+++ b/src/chrome/locale/tk/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/tr/network-settings.dtd b/src/chrome/locale/tr/network-settings.dtd
index ad2501d..c37d65d 100644
--- a/src/chrome/locale/tr/network-settings.dtd
+++ b/src/chrome/locale/tr/network-settings.dtd
@@ -1,64 +1,68 @@
-<!ENTITY torsettings.dialog.title "Tor Ağ Ayarları">
+<!ENTITY torsettings.dialog.title "Tor Ağı Ayarları">
+
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Dili">
+<!ENTITY torlauncher.localePicker.prompt "Lütfen bir dil seçin.">
<!-- For "first run" wizard: -->
-<!ENTITY torsettings.prompt "Tor ağına bağlanmadan önce, bu bilgisayarın İnternet bağlantısı hakkında bilgi vermeniz gerekir.">
+<!ENTITY torsettings.prompt "Tor ağına bağlanmadan önce, bu bilgisayarın Internet bağlantısı hakkında bilgi vermeniz gerekiyor.">
<!ENTITY torSettings.yes "Evet">
<!ENTITY torSettings.no "Hayır">
<!ENTITY torSettings.firstQuestion "Aşağıdakilerden hangisi durumunuzu en iyi açıklıyor?">
-<!ENTITY torSettings.configurePrompt1 "Bu bilgisayarın İnternet bağlantısı sansürlü ya da vekil sunucu arkasında.">
+<!ENTITY torSettings.configurePrompt1 "Bu bilgisayarın Internet bağlantısı sansürlü ya da vekil sunucu arkasında.">
<!ENTITY torSettings.configurePrompt2 "Köprü ve yerel vekil sunucu ayarlarını yapmam gerekiyor.">
-<!ENTITY torSettings.configure "Ayarla">
+<!ENTITY torSettings.configure "Yapılandır">
<!ENTITY torSettings.connectPrompt2 "Doğrudan Tor ağına bağlanmak istiyorum.">
-<!ENTITY torSettings.connectPrompt3 "Çoğu durumda çalışır.">
+<!ENTITY torSettings.connectPrompt3 "Bu çoğu durumda çalışır.">
<!ENTITY torSettings.connect "Bağlan">
<!ENTITY torSettings.proxyPageTitle "Yerel Vekil Sunucu Ayarları">
-<!ENTITY torSettings.proxyQuestion "Bu bilgisayarın İnternet erişimi için yerel bir vekil sunucu kullanması gerekiyor mu?">
+<!ENTITY torSettings.proxyQuestion "Bu bilgisayarın Internet'e erişmesi için bir yerel vekil sunucu kullanması gerekiyor mu?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "Bu soruyu nasıl yanıtlayacağınızı bilmiyorsanız, başka bir tarayıcıda İnternet ayarlarına bakarak yerel bir vekil sunucu kullanılıp kullanılmadığını görün.">
-<!ENTITY torSettings.enterProxy "Vekil sunucu ayarlarını yazın.">
+<!ENTITY torSettings.proxyHelp "Bu soruyu nasıl yanıtlayacağınızı bilmiyorsanız, başka bir tarayıcıda Internet ayarlarına bakarak bir yerel vekil sunucu kullanılıp kullanılmadığını görün.">
+<!ENTITY torSettings.enterProxy "Vekil sunucu ayarlarını girin.">
<!ENTITY torSettings.bridgePageTitle "Tor Köprüleri Ayarları">
-<!ENTITY torSettings.bridgeQuestion "İnternet Servis Sağlayıcınız (ISS) Tor Ağına bağlantıları engelliyor ya da sansürlüyor mu?">
-<!ENTITY torSettings.bridgeHelp "Bu soruyu nasıl cevaplayacağınızdan emin değilseniz Hayır seçin.  Evet seçerseniz, Tor Ağı bağlantılarının engellenmesini daha zor hale getiren, listelenmeyen aktarıcılar olan Tor Köprülerini ayarlamanız istenir.">
-<!ENTITY torSettings.bridgeSettingsPrompt "Sağlanan köprüler kümesini kullanabilir ya da özel bir köprü kümesi edinip yazabilirsiniz.">
+<!ENTITY torSettings.bridgeQuestion "Internet Servis Sağlayıcınız (ISS) Tor Ağına olan bağlantıları engelliyor ya da sansürlüyor mu?">
+<!ENTITY torSettings.bridgeHelp "Bu soruyu nasıl yanıtlayacağınızı bilmiyorsanız, Hayır 'ı seçin. Evet'i seçerseniz, Tor Ağı bağlantılarının engellenmesini daha zor hale getiren, listelenmeyen aktarıcılar olan Tor Köprülerini ayarlamanız istenir.">
+<!ENTITY torSettings.bridgeSettingsPrompt "Sağlanan köprüleri kullanabilir ya da özel köprüler edinip yazabilirsiniz.">
<!-- Other: -->
-<!ENTITY torsettings.startingTor "Tor yazılımının başlaması bekleniyor...">
-<!ENTITY torsettings.restartTor "Tor Yazılımını Yeniden Başlat">
+<!ENTITY torsettings.startingTor "Tor'un başlaması bekleniyor…">
+<!ENTITY torsettings.restartTor "Tor'u Yeniden Başlat">
-<!ENTITY torsettings.optional "İsteğe Bağlı">
+<!ENTITY torsettings.optional "İsteğe bağlı">
-<!ENTITY torsettings.useProxy.checkbox "Bu bilgisayar İnternet erişimi için yerel bir vekil sunucu kullanıyor.">
+<!ENTITY torsettings.useProxy.checkbox "Bu bilgisayarın Internet'e erişmesi için bir yerel vekil sunucu kullanması gerekiyor">
<!ENTITY torsettings.useProxy.type "Vekil Sunucu Tipi:">
<!ENTITY torsettings.useProxy.address "Adres:">
<!ENTITY torsettings.useProxy.address.placeholder "IP adresi ya da sunucu adı">
-<!ENTITY torsettings.useProxy.port "Kapı:">
+<!ENTITY torsettings.useProxy.port "Bağlantı noktası:">
<!ENTITY torsettings.useProxy.username "Kullanıcı adı:">
<!ENTITY torsettings.useProxy.password "Parola:">
<!ENTITY torsettings.useProxy.type.socks4 "SOCKS 4">
<!ENTITY torsettings.useProxy.type.socks5 "SOCKS 5">
<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
-<!ENTITY torsettings.firewall.checkbox "Bu bilgisayar, yalnız belirli kapılara bağlanma izin veren bir güvenlik duvarı kullanıyor ">
-<!ENTITY torsettings.firewall.allowedPorts "İzin Verilen Kapılar:">
-<!ENTITY torsettings.useBridges.checkbox "İnternet Servis Sağlayıcım (İSS) Tor Ağı ile bağlantılarımı engelliyor">
+<!ENTITY torsettings.firewall.checkbox "Bu bilgisayar yalnız belirli bağlantı noktalarına bağlanmaya izin veren bir güvenlik duvarı kullanıyor">
+<!ENTITY torsettings.firewall.allowedPorts "İzin Verilen Bağlantı Noktaları:">
+<!ENTITY torsettings.useBridges.checkbox "Internet Servis Sağlayıcım (ISS) Tor ağına olan bağlantıları engelliyor">
<!ENTITY torsettings.useBridges.default "Sağlanan köprüler ile bağlan">
<!ENTITY torsettings.useBridges.type "Aktarım tipi:">
<!ENTITY torsettings.useBridges.custom "Özel köprüler yazın">
-<!ENTITY torsettings.useBridges.label "Bir ya da bir kaç köprü aktarıcısı yazın (her satıra bir tane).">
-<!ENTITY torsettings.useBridges.placeholder "adres:kapı şeklinde yazın">
+<!ENTITY torsettings.useBridges.label "Bir ya da birkaç köprü aktarıcısı yazın (her satıra bir tane).">
+<!ENTITY torsettings.useBridges.placeholder "adres:bağlantı noktası şeklinde yazın">
<!ENTITY torsettings.copyLog "Tor Günlüğünü Panoya Kopyala">
<!ENTITY torsettings.bridgeHelpTitle "Köprü Aktarıcı Yardımı">
-<!ENTITY torsettings.bridgeHelp1 "Tor ağına bağlanamıyorsanız, kullandığınız İnternet Servis Sağlayıcısı (ISS) veya başka bir kurum Tor yazılımını engelliyor olabilir.  Bu sorunu çoğunlukla, engellenmesi daha zor olan listelenmeyen aktarıcılar, Tor Köprülerini kullanarak çözebilirsiniz.">
-<!ENTITY torsettings.bridgeHelp1B "Önceden ayarlanmış ve sunulmuş köprü adresleri kümesini kullanabilir ya da şu üç yöntemden birini kullanarak özel bir adres kümesi edinebilirsiniz:">
+<!ENTITY torsettings.bridgeHelp1 "Tor ağına bağlanamıyorsanız, kullandığınız Internet Servis Sağlayıcısı (ISS) ya da başka bir kurum Tor 'u engelliyor olabilir. Bu sorunu çoğunlukla, engellenmesi daha zor olan listelenmeyen aktarıcılar, Tor Köprülerini kullanarak çözebilirsiniz.">
+<!ENTITY torsettings.bridgeHelp1B "Önceden ayarlanmış ve sunulmuş köprü adreslerini kullanabilir ya da şu üç yöntemden birini kullanarak özel adresler edinebilirsiniz:">
<!ENTITY torsettings.bridgeHelp2Heading "Web yoluyla">
-<!ENTITY torsettings.bridgeHelp2 "Web tarayıcınız ile https://bridges.torproject.org sitesine bakın">
+<!ENTITY torsettings.bridgeHelp2 "Bir web tarayıcısı kullanarak https://bridges.torproject.org adresini ziyaret edin">
<!ENTITY torsettings.bridgeHelp3Heading "Otomatik e-posta yanıtı yoluyla">
-<!ENTITY torsettings.bridgeHelp3.emailDesc "bridges(a)torproject.org adresine, ileti içeriğine yalnız 'get bridges' yazarak bir e-posta gönderin.  Bir saldırganın çok sayıda köprü adresi öğrenmesini zorlaştırmak için bu e-postayı aşağıdaki e-posta sağlayıcılarının birinden yollmalısınız (yeğlenme sırasına göre listelenmiştir):">
-<!ENTITY torsettings.bridgeHelp3.emailList "https://www.riseup.net, https://mail.google.com ya da https://mail.yahoo.com">
+<!ENTITY torsettings.bridgeHelp3.emailDesc "bridges(a)torproject.org adresine, ileti içeriğine yalnız 'get bridges' yazarak bir e-posta gönderin.  Bir saldırganın çok sayıda köprü adresi öğrenmesini zorlaştırmak için bu e-postayı aşağıdaki e-posta sağlayıcılarının birinden göndermelisiniz (yeğlenme sırasına göre listelenmiştir):">
+<!ENTITY torsettings.bridgeHelp3.emailList "https://www.riseup.net, https://mail.google.com, ya da https://mail.yahoo.com">
<!ENTITY torsettings.bridgeHelp4Heading "Yardım masası yoluyla">
<!ENTITY torsettings.bridgeHelp4 "Son yol olarak, köprü adreslerini help(a)rt.torproject.org adresine göndereceğiniz nazik bir e-posta ile isteyebilirsiniz.  Her isteği bir kişinin yanıtlayacağını unutmayın.">
diff --git a/src/chrome/locale/tr/torlauncher.properties b/src/chrome/locale/tr/torlauncher.properties
index 3b88714..38b0740 100644
--- a/src/chrome/locale/tr/torlauncher.properties
+++ b/src/chrome/locale/tr/torlauncher.properties
@@ -4,7 +4,7 @@
torlauncher.error_title=Tor Başlatıcı
torlauncher.tor_exited=Tor, beklenmedik şekilde sonlandı. Bu durum Tor içinde ya da sisteminizdeki başka bir yazılımda bulunan bir hatadan ya da sorunlu bir donanımdan kaynaklanmış olabilir. Yeniden başlatılana kadar Tor Browser hiçbir web sitesine erişemeyecek. Sorun devam ederse lütfen Tor Günlüğünün bir kopyasını destek takımına gönderin.
-torlauncher.tor_exited2=Tor yeniden başlatıldığında tarayıcı sekmelerinizi kapatılmayacak.
+torlauncher.tor_exited2=Tor yeniden başlatıldığında tarayıcı sekmeleriniz kapatılmayacak.
torlauncher.tor_controlconn_failed=Tor denetim kapısına bağlanılamadı.
torlauncher.tor_failed_to_start=Tor başlatılamadı.
torlauncher.tor_control_failed=Tor denetimi alınamadı.
@@ -21,16 +21,16 @@ torlauncher.failed_to_get_settings=Tor ayarları alınamadı.\n\n%S
torlauncher.failed_to_save_settings=Tor ayarları kaydedilemedi.\n\n%S
torlauncher.ensure_tor_is_running=Lütfen Tor'un çalıştığından emin olun.
-torlauncher.error_proxy_addr_missing=İnternete bir vekil sunucu üzerinden bağlanmak için bir IP adresi ya da sunucu adı ile kapı numarasının yazılması gereklidir.
+torlauncher.error_proxy_addr_missing=Internet'e bir vekil sunucu üzerinden bağlanmak için bir IP adresi ya da sunucu adı ile bağlantı noktası numarasının yazılması gereklidir.
torlauncher.error_proxy_type_missing=Vekil sunucu tipini seçmelisiniz.
-torlauncher.error_bridges_missing=Bir ya da bir kaç köprü belirtmelisiniz.
+torlauncher.error_bridges_missing=Bir ya da birkaç köprü belirtmelisiniz.
torlauncher.error_default_bridges_type_missing=Sağlanan köprüler için bir aktarım tipi seçmelisiniz.
torlauncher.error_bridge_bad_default_type=Sağlanan köprüler %S aktarım tipi için kullanılamıyor. Lütfen ayarlarınızı değiştirin.
torlauncher.recommended_bridge=(önerilir)
torlauncher.connect=Bağlan
-torlauncher.restart_tor=Tor Yazılımını Yeniden Başlat
+torlauncher.restart_tor=Tor'u Yeniden Başlat
torlauncher.quit=Çık
torlauncher.quit_win=Çıkış
torlauncher.done=Tamamlandı
@@ -50,7 +50,7 @@ torlauncher.bootstrapStatus.conn_or=Tor ağına bağlanılıyor
torlauncher.bootstrapStatus.handshake_or=Bir Tor devresi kuruluyor
torlauncher.bootstrapStatus.done=Tor ağına bağlanıldı!
-torlauncher.bootstrapWarning.done=tamam
+torlauncher.bootstrapWarning.done=bitti
torlauncher.bootstrapWarning.connectrefused=bağlantı geri çevrildi
torlauncher.bootstrapWarning.misc=çeşitli
torlauncher.bootstrapWarning.resourcelimit=kaynaklar yetersiz
diff --git a/src/chrome/locale/uk/network-settings.dtd b/src/chrome/locale/uk/network-settings.dtd
index 1886481..a3468a9 100644
--- a/src/chrome/locale/uk/network-settings.dtd
+++ b/src/chrome/locale/uk/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Налаштування мережі Tor">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Перед тим, як підключитися до мережі Tor, необхідно надати інформацію про підключення до Інтернету Вашого комп'ютера.">
diff --git a/src/chrome/locale/ur-PK/network-settings.dtd b/src/chrome/locale/ur-PK/network-settings.dtd
index f9935d9..c055623 100644
--- a/src/chrome/locale/ur-PK/network-settings.dtd
+++ b/src/chrome/locale/ur-PK/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "ٹور نیٹ ورک سیٹنگز">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
@@ -30,13 +34,13 @@
<!ENTITY torsettings.startingTor "Waiting for Tor to start…">
<!ENTITY torsettings.restartTor "Restart Tor">
-<!ENTITY torsettings.optional "Optional">
+<!ENTITY torsettings.optional "اختیاری">
<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
<!ENTITY torsettings.useProxy.type "Proxy Type:">
<!ENTITY torsettings.useProxy.address "Address:">
<!ENTITY torsettings.useProxy.address.placeholder "IP address or hostname">
-<!ENTITY torsettings.useProxy.port "Port:">
+<!ENTITY torsettings.useProxy.port "پورٹ:">
<!ENTITY torsettings.useProxy.username "Username:">
<!ENTITY torsettings.useProxy.password "Password:">
<!ENTITY torsettings.useProxy.type.socks4 "SOCKS 4">
diff --git a/src/chrome/locale/ur-PK/progress.dtd b/src/chrome/locale/ur-PK/progress.dtd
index 79ed2b6..09d3567 100644
--- a/src/chrome/locale/ur-PK/progress.dtd
+++ b/src/chrome/locale/ur-PK/progress.dtd
@@ -1,4 +1,5 @@
-<!ENTITY torprogress.dialog.title "ٹور اسٹیٹس">
-<!ENTITY torprogress.openSettings "Open Settings">
-<!ENTITY torprogress.heading "Connecting to the Tor network">
-<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.">
+<!ENTITY torprogress.dialog.title "ٹار اسٹیٹس">
+<!ENTITY torprogress.openSettings "ترتیبات کھولیں">
+<!ENTITY torprogress.heading "ٹار نیٹ ورکس سے رابطہ بنائیں">
+<!ENTITY torprogress.pleaseWait "برائے مہربانی انتظار فرمائیں
+ہم آپ کا رابطہ ٹار نیٹ ورک کے ساتھ کر رہیں">
diff --git a/src/chrome/locale/ur-PK/torlauncher.properties b/src/chrome/locale/ur-PK/torlauncher.properties
index 8ac7270..f5a81fc 100644
--- a/src/chrome/locale/ur-PK/torlauncher.properties
+++ b/src/chrome/locale/ur-PK/torlauncher.properties
@@ -46,7 +46,7 @@ torlauncher.bootstrapStatus.loading_status=Loading network status
torlauncher.bootstrapStatus.loading_keys=Loading authority certificates
torlauncher.bootstrapStatus.requesting_descriptors=Requesting relay information
torlauncher.bootstrapStatus.loading_descriptors=Loading relay information
-torlauncher.bootstrapStatus.conn_or=Connecting to the Tor network
+torlauncher.bootstrapStatus.conn_or=ٹار نیٹ ورکس سے رابطہ بنائیں
torlauncher.bootstrapStatus.handshake_or=Establishing a Tor circuit
torlauncher.bootstrapStatus.done=Connected to the Tor network!
diff --git a/src/chrome/locale/ur/network-settings.dtd b/src/chrome/locale/ur/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/ur/network-settings.dtd
+++ b/src/chrome/locale/ur/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/uz/network-settings.dtd b/src/chrome/locale/uz/network-settings.dtd
index 05b4faa..e6db699 100644
--- a/src/chrome/locale/uz/network-settings.dtd
+++ b/src/chrome/locale/uz/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor tarmoq moslamalari">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/ve/network-settings.dtd b/src/chrome/locale/ve/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/ve/network-settings.dtd
+++ b/src/chrome/locale/ve/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/vi/network-settings.dtd b/src/chrome/locale/vi/network-settings.dtd
index 5af908c..64e6fcb 100644
--- a/src/chrome/locale/vi/network-settings.dtd
+++ b/src/chrome/locale/vi/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Cài đặt mạng Tor">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Trước khi kết nối đến mạng lưới Tor, bạn cần phải cung cấp thông tin về kết nối Internet của máy tính này.">
@@ -45,9 +49,9 @@
<!ENTITY torsettings.firewall.checkbox "This computer goes through a firewall that only allows connections to certain ports">
<!ENTITY torsettings.firewall.allowedPorts "Những Cổng Được phép:">
<!ENTITY torsettings.useBridges.checkbox "Nhà cung cấp dịch vụ của tôi (ISP) đã chặn kết nối đến mạng Tor">
-<!ENTITY torsettings.useBridges.default "Connect with provided bridges">
-<!ENTITY torsettings.useBridges.type "Transport type:">
-<!ENTITY torsettings.useBridges.custom "Enter custom bridges">
+<!ENTITY torsettings.useBridges.default "Kết nối với những cầu được cung cấp">
+<!ENTITY torsettings.useBridges.type "Loại hình vận chuyển:">
+<!ENTITY torsettings.useBridges.custom "Nhập những cầu quen thuộc">
<!ENTITY torsettings.useBridges.label "Enter one or more bridge relays (one per line).">
<!ENTITY torsettings.useBridges.placeholder "type address:port">
diff --git a/src/chrome/locale/vi/torlauncher.properties b/src/chrome/locale/vi/torlauncher.properties
index 4ced031..e5d7acd 100644
--- a/src/chrome/locale/vi/torlauncher.properties
+++ b/src/chrome/locale/vi/torlauncher.properties
@@ -58,4 +58,4 @@ torlauncher.bootstrapWarning.identity=nhận dạng không phù hợp
torlauncher.bootstrapWarning.timeout=kết nối timeout
torlauncher.bootstrapWarning.noroute=không có lộ trình để lưu trữ
torlauncher.bootstrapWarning.ioerror=lỗi đọc / ghi
-torlauncher.bootstrapWarning.pt_missing=missing pluggable transport
+torlauncher.bootstrapWarning.pt_missing=pluggable transport bị mất
diff --git a/src/chrome/locale/wa/network-settings.dtd b/src/chrome/locale/wa/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/wa/network-settings.dtd
+++ b/src/chrome/locale/wa/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/wo/network-settings.dtd b/src/chrome/locale/wo/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/wo/network-settings.dtd
+++ b/src/chrome/locale/wo/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/zh-CN/network-settings.dtd b/src/chrome/locale/zh-CN/network-settings.dtd
index e0321b5..8afb952 100644
--- a/src/chrome/locale/zh-CN/network-settings.dtd
+++ b/src/chrome/locale/zh-CN/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor 网络设置">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser 语言">
+<!ENTITY torlauncher.localePicker.prompt "请选择一个语言。">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "在连接 Tor 网络之前,需提供相关的网络连接信息。">
diff --git a/src/chrome/locale/zh-HK/network-settings.dtd b/src/chrome/locale/zh-HK/network-settings.dtd
index cf33e0b..bcd5692 100644
--- a/src/chrome/locale/zh-HK/network-settings.dtd
+++ b/src/chrome/locale/zh-HK/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/locale/zh-TW/network-settings.dtd b/src/chrome/locale/zh-TW/network-settings.dtd
index 4cd2f87..d02b3f1 100644
--- a/src/chrome/locale/zh-TW/network-settings.dtd
+++ b/src/chrome/locale/zh-TW/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor 網路設定">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "在您連接到 Tor 網路前,您需要提供這台電腦網路連線的相關資訊">
diff --git a/src/chrome/locale/zu/network-settings.dtd b/src/chrome/locale/zu/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/zu/network-settings.dtd
+++ b/src/chrome/locale/zu/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
1
0

[tor-browser-bundle/master] Bug 12967: Add support for a multi-lingual Tor Browser.
by gk@torproject.org 20 Oct '15
by gk@torproject.org 20 Oct '15
20 Oct '15
commit 10a8f2badf8294d8a69d9898fee805750789da86
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Tue Oct 20 11:30:19 2015 -0400
Bug 12967: Add support for a multi-lingual Tor Browser.
Include all locales (language packs) in one installable package.
The downloadable file names use "ALL" instead of a locale name, e.g.,
tor-browser-linux64-5.5a3_ALL.tar.xz
"ALL" is also used as the locale within the update check URLs.
Multi-lingual packaging may be disabled by setting MULTI_LINGUAL=0
inside the versions files (or by removing that variable entirely).
Also, simplify the code that creates the per-locale packages.
---
gitian/descriptors/linux/gitian-bundle.yml | 159 +++++++++++++++-----------
gitian/descriptors/mac/gitian-bundle.yml | 98 ++++++++++------
gitian/descriptors/windows/gitian-bundle.yml | 110 ++++++++++--------
gitian/versions.nightly | 4 +
4 files changed, 224 insertions(+), 147 deletions(-)
diff --git a/gitian/descriptors/linux/gitian-bundle.yml b/gitian/descriptors/linux/gitian-bundle.yml
index 1a6776d..f1d99e9 100644
--- a/gitian/descriptors/linux/gitian-bundle.yml
+++ b/gitian/descriptors/linux/gitian-bundle.yml
@@ -75,10 +75,14 @@ script: |
cd ..
mkdir -p $OUTDIR/
- mkdir -p tor-browser/Browser/TorBrowser/Data/Browser/profile.default/extensions/https-everywhere-eff(a)eff.org
- mkdir -p tor-browser/Browser/TorBrowser/Data/Browser/profile.meek-http-helper/extensions
- mkdir -p tor-browser/Browser/TorBrowser/Data/Browser/Caches
- mkdir -p tor-browser/Browser/TorBrowser/Docs/sources/
+ # When we build with MULTI_LINGUAL=1, the browser will be packaged inside a
+ # directory named tor-browser (instead of tor-browser_en-US). Therefore we
+ # stage everything under tor-browser-stage to avoid a conflict.
+ TB_STAGE_DIR=tor-browser-stage
+ mkdir -p ${TB_STAGE_DIR}/Browser/TorBrowser/Data/Browser/profile.default/extensions/https-everywhere-eff(a)eff.org
+ mkdir -p ${TB_STAGE_DIR}/Browser/TorBrowser/Data/Browser/profile.meek-http-helper/extensions
+ mkdir -p ${TB_STAGE_DIR}/Browser/TorBrowser/Data/Browser/Caches
+ mkdir -p ${TB_STAGE_DIR}/Browser/TorBrowser/Docs/sources/
# Preparing Python for HTTPS-Everywhere.
unzip -d $INSTDIR python-linux$GBUILD_BITS-utils.zip
export PATH=$INSTDIR/python/bin:$PATH
@@ -95,7 +99,7 @@ script: |
mkdir pkg/tmp
cd pkg/tmp
unzip ../*.xpi
- ~/build/dzip.sh ../../../tor-browser/Browser/TorBrowser/Data/Browser/profile.default/extensions/tor-launcher(a)torproject.org.xpi .
+ ~/build/dzip.sh ../../../${TB_STAGE_DIR}/Browser/TorBrowser/Data/Browser/profile.default/extensions/tor-launcher(a)torproject.org.xpi .
cd ../../../
#
cd torbutton
@@ -105,7 +109,7 @@ script: |
mkdir pkg/tmp
cd pkg/tmp
unzip ../*.xpi
- ~/build/dzip.sh ../../../tor-browser/Browser/TorBrowser/Data/Browser/profile.default/extensions/torbutton(a)torproject.org.xpi .
+ ~/build/dzip.sh ../../../${TB_STAGE_DIR}/Browser/TorBrowser/Data/Browser/profile.default/extensions/torbutton(a)torproject.org.xpi .
cd ../../../
#
cd https-everywhere
@@ -124,11 +128,11 @@ script: |
fi
# Since 5.0.2 a .xpi for AMO is built, too. We don't need it.
rm ./pkg/*-amo.xpi
- cp pkg/*.xpi ../tor-browser/Browser/TorBrowser/Data/Browser/profile.default/extensions/https-everywhere(a)eff.org.xpi
+ cp pkg/*.xpi ../${TB_STAGE_DIR}/Browser/TorBrowser/Data/Browser/profile.default/extensions/https-everywhere(a)eff.org.xpi
cd ..
#
- cp *.xpi tor-browser/Browser/TorBrowser/Data/Browser/profile.default/extensions/
- cd tor-browser/Browser/TorBrowser/Data/Browser/profile.default/extensions
+ cp *.xpi ${TB_STAGE_DIR}/Browser/TorBrowser/Data/Browser/profile.default/extensions/
+ cd ${TB_STAGE_DIR}/Browser/TorBrowser/Data/Browser/profile.default/extensions
mv noscript(a)noscript.net.xpi {73a6fe31-595d-460b-a920-fcc0f8843232}.xpi
cd https-everywhere-eff(a)eff.org/
unzip ../https-everywhere(a)eff.org.xpi
@@ -136,27 +140,27 @@ script: |
cd ~/build
#
cd meek/firefox
- ~/build/dzip.sh ../../tor-browser/Browser/TorBrowser/Data/Browser/profile.meek-http-helper/extensions/meek-http-helper(a)bamsoftware.com.xpi .
+ ~/build/dzip.sh ../../${TB_STAGE_DIR}/Browser/TorBrowser/Data/Browser/profile.meek-http-helper/extensions/meek-http-helper(a)bamsoftware.com.xpi .
cd ~/build/
#
# Install fonts.
- mkdir -p tor-browser/Browser/fonts
+ mkdir -p ${TB_STAGE_DIR}/Browser/fonts
NOTO_FONTS_HINTED="Arimo-Regular.ttf Arimo-Bold.ttf Arimo-Italic.ttf Arimo-BoldItalic.ttf Cousine-Regular.ttf Tinos-Regular.ttf Tinos-Bold.ttf Tinos-Italic.ttf Tinos-BoldItalic.ttf NotoNaskhArabic-Regular.ttf NotoSansArmenian-Regular.ttf NotoSansBengali-Regular.ttf NotoSansDevanagari-Regular.ttf NotoSansEthiopic-Regular.ttf NotoSansGeorgian-Regular.ttf NotoSansGujarati-Regular.ttf NotoSansGurmukhi-Regular.ttf NotoSansHebrew-Regular.ttf NotoSansKannada-Regular.ttf NotoSansKhmer-Regular.ttf NotoSansLao-Regular.ttf NotoSansMalayalam-Regular.ttf NotoSansMyanmar-Regular.ttf NotoSansOriya-Regular.ttf NotoSansSinhala-Regular.ttf NotoSansTamil-Regular.ttf NotoSansTelugu-Regular.ttf NotoSansThaana-Regular.ttf NotoSansThai-Regular.ttf NotoSansTibetan-Regular.ttf NotoSerifArmenian-Regular.ttf NotoSerifKhmer-Regular.ttf NotoSerifLao-Regular.ttf NotoSerifThai-Regular.ttf"
for fontfile in $NOTO_FONTS_HINTED; do
- cp "noto-fonts/hinted/$fontfile" tor-browser/Browser/fonts/
+ cp "noto-fonts/hinted/$fontfile" ${TB_STAGE_DIR}/Browser/fonts/
done
NOTO_FONTS_UNHINTED="NotoSansCanadianAboriginal-Regular.ttf NotoSansBuginese-Regular.ttf NotoSansCherokee-Regular.ttf NotoSansMongolian-Regular.ttf NotoSansYi-Regular.ttf"
for fontfile in $NOTO_FONTS_UNHINTED; do
- cp "noto-fonts/unhinted/$fontfile" tor-browser/Browser/fonts/
+ cp "noto-fonts/unhinted/$fontfile" ${TB_STAGE_DIR}/Browser/fonts/
done
- cp NotoSansCJKsc-Regular.otf tor-browser/Browser/fonts/
+ cp NotoSansCJKsc-Regular.otf ${TB_STAGE_DIR}/Browser/fonts/
unzip -o STIXv1.1.1-latex.zip -d STIX
- cp "STIX/Fonts/fonts/opentype/public/stix/STIXMath-Regular.otf" tor-browser/Browser/fonts/
+ cp "STIX/Fonts/fonts/opentype/public/stix/STIXMath-Regular.otf" ${TB_STAGE_DIR}/Browser/fonts/
#
unzip relativelink-src.zip
- cp RelativeLink/* tor-browser/Browser/
+ cp RelativeLink/* ${TB_STAGE_DIR}/Browser/
#
- cd tor-browser
+ cd ${TB_STAGE_DIR}
cp Browser/start-tor-browser.desktop ./
unzip ~/build/tor-browser-linux$GBUILD_BITS-gbuilt.zip
cd Browser/TorBrowser
@@ -174,12 +178,23 @@ script: |
cd ../../..
#
# Copy reproducibility info
- cp versions tor-browser/Browser/TorBrowser/Docs/sources/
- cp bundle.inputs tor-browser/Browser/TorBrowser/Docs/sources/
- #
- cp -a tor-browser tor-browser_en-US
+ cp versions ${TB_STAGE_DIR}/Browser/TorBrowser/Docs/sources/
+ cp bundle.inputs ${TB_STAGE_DIR}/Browser/TorBrowser/Docs/sources/
+
+ # Create en-US or multi-lingual package.
+ PKG_LOCALE="en-US"
+ PKG_DIR="tor-browser_${PKG_LOCALE}"
+ # If we are building a multi-lingual package, use "ALL" in the package name
+ # and as the locale for update purposes. We do not include "ALL" in the name
+ # of the directory that is inside the package (in other words, users will
+ # not see tor-browser_ALL after they install Tor Browser).
+ if [ "z$MULTI_LINGUAL" = "z1" ]; then
+ PKG_LOCALE="ALL"
+ PKG_DIR="tor-browser"
+ fi
+ cp -a ${TB_STAGE_DIR} ${PKG_DIR}
#
- pushd tor-browser_en-US/Browser/browser/
+ pushd ${PKG_DIR}/Browser/browser/
unzip omni.ja defaults/preferences/000-tor-browser.js
cp defaults/preferences/000-tor-browser.js ~/build/
# Set the locale of the bundle.
@@ -188,56 +203,72 @@ script: |
rm -rf defaults
popd
#
+ unzip linux-langpacks.zip
+ LINUX_LOCALES="$BUNDLE_LOCALES $BUNDLE_LOCALES_LINUX"
+ # If we are building a multi-lingual package, add all of the language packs.
+ if [ "z$MULTI_LINGUAL" = "z1" ]; then
+ pushd linux-langpacks
+ for LANG in $LINUX_LOCALES
+ do
+ xpi=$LANG.xpi
+ cp $xpi ../${PKG_DIR}/Browser/TorBrowser/Data/Browser/profile.default/extensions/langpack-$LANG(a)firefox.mozilla.org.xpi
+ done
+ popd
+
+ # Set the update.locale (it is used to replace %LOCALE% within
+ # app.update.url).
+ pushd ${PKG_DIR}/Browser/
+ echo ${PKG_LOCALE} > update.locale
+ zip -Xm omni.ja update.locale
+ popd
+ fi
+
# Recreate precomplete file (needs to be accurate for full MAR updates).
- pushd tor-browser_en-US/Browser
+ pushd ${PKG_DIR}/Browser
rm -f precomplete
python $MARTOOLS/createprecomplete.py
popd
#
# Create full MAR file and compressed package.
- MAR_FILE=tor-browser-linux${GBUILD_BITS}-${TORBROWSER_VERSION}_en-US.mar
- MAR=$MARTOOLS/mar MBSDIFF=$MARTOOLS/mbsdiff $MARTOOLS/make_full_update.sh -q $OUTDIR/$MAR_FILE tor-browser_en-US/Browser
- ~/build/dtar.sh $OUTDIR/tor-browser-linux${GBUILD_BITS}-${TORBROWSER_VERSION}_en-US.tar.xz tor-browser_en-US
- rm -rf tor-browser_en-US
+ MAR_FILE=tor-browser-linux${GBUILD_BITS}-${TORBROWSER_VERSION}_${PKG_LOCALE}.mar
+ MAR=$MARTOOLS/mar MBSDIFF=$MARTOOLS/mbsdiff $MARTOOLS/make_full_update.sh -q $OUTDIR/$MAR_FILE ${PKG_DIR}/Browser
+ ~/build/dtar.sh $OUTDIR/tor-browser-linux${GBUILD_BITS}-${TORBROWSER_VERSION}_${PKG_LOCALE}.tar.xz ${PKG_DIR}
+ rm -rf ${PKG_DIR}
#
- unzip linux-langpacks.zip
- cd linux-langpacks
- LINUX_LOCALES="$BUNDLE_LOCALES $BUNDLE_LOCALES_LINUX"
- for LANG in $LINUX_LOCALES
- do
- xpi=$LANG.xpi
- cp -a ../tor-browser ../tor-browser_$LANG
- cp $xpi ../tor-browser_$LANG/Browser/TorBrowser/Data/Browser/profile.default/extensions/langpack-$LANG(a)firefox.mozilla.org.xpi
- cd ..
+ # If we did not create a multi-lingual package above, create a package for
+ # each locale.
+ if [ "z$MULTI_LINGUAL" != "z1" ]; then
+ for LANG in $LINUX_LOCALES
+ do
+ xpi=linux-langpacks/$LANG.xpi
+ cp -a ${TB_STAGE_DIR} tor-browser_$LANG
+ cp $xpi tor-browser_$LANG/Browser/TorBrowser/Data/Browser/profile.default/extensions/langpack-$LANG(a)firefox.mozilla.org.xpi
- pushd tor-browser_$LANG/Browser/browser/
- mkdir -p defaults/preferences
- cp ~/build/000-tor-browser.js defaults/preferences/
- # Set the locale of the bundle.
- echo "pref(\"general.useragent.locale\", \"$LANG\");" >> defaults/preferences/000-tor-browser.js
- zip -Xm omni.ja defaults/preferences/000-tor-browser.js
- rm -rf defaults
- popd
+ pushd tor-browser_$LANG/Browser/browser/
+ mkdir -p defaults/preferences
+ cp ~/build/000-tor-browser.js defaults/preferences/
+ # Set the locale of the bundle.
+ echo "pref(\"general.useragent.locale\", \"$LANG\");" >> defaults/preferences/000-tor-browser.js
+ zip -Xm omni.ja defaults/preferences/000-tor-browser.js
+ rm -rf defaults
+ popd
- # Set the update.locale (it is used to replace %LOCALE% within
- # app.update.url) and remove the en-US spellchecking dictionary.
- pushd tor-browser_$LANG/Browser/
- echo "$LANG" > update.locale
- zip -Xm omni.ja update.locale
- rm -rf dictionaries
- popd
-
- # Recreate precomplete file (needs to be accurate for full MAR updates).
- pushd tor-browser_$LANG/Browser
- rm -f precomplete
- python $MARTOOLS/createprecomplete.py
- popd
+ # Set the update.locale (it is used to replace %LOCALE% within
+ # app.update.url), remove the en-US spellchecking dictionary, and
+ # recreate precomplete file (needs to be accurate for full MAR updates).
+ pushd tor-browser_$LANG/Browser/
+ echo "$LANG" > update.locale
+ zip -Xm omni.ja update.locale
+ rm -rf dictionaries
+ rm -f precomplete
+ python $MARTOOLS/createprecomplete.py
+ popd
- # Create full MAR file and compressed package for this locale.
- MAR_FILE=tor-browser-linux${GBUILD_BITS}-${TORBROWSER_VERSION}_$LANG.mar
- MAR=$MARTOOLS/mar MBSDIFF=$MARTOOLS/mbsdiff $MARTOOLS/make_full_update.sh -q $OUTDIR/$MAR_FILE tor-browser_$LANG/Browser
- ~/build/dtar.sh $OUTDIR/tor-browser-linux${GBUILD_BITS}-${TORBROWSER_VERSION}_$LANG.tar.xz tor-browser_$LANG
+ # Create full MAR file and compressed package for this locale.
+ MAR_FILE=tor-browser-linux${GBUILD_BITS}-${TORBROWSER_VERSION}_$LANG.mar
+ MAR=$MARTOOLS/mar MBSDIFF=$MARTOOLS/mbsdiff $MARTOOLS/make_full_update.sh -q $OUTDIR/$MAR_FILE tor-browser_$LANG/Browser
+ ~/build/dtar.sh $OUTDIR/tor-browser-linux${GBUILD_BITS}-${TORBROWSER_VERSION}_$LANG.tar.xz tor-browser_$LANG
- rm -rf tor-browser_$LANG
- cd linux-langpacks
- done
+ rm -rf tor-browser_$LANG
+ done
+ fi
diff --git a/gitian/descriptors/mac/gitian-bundle.yml b/gitian/descriptors/mac/gitian-bundle.yml
index f24e521..e3baa3c 100644
--- a/gitian/descriptors/mac/gitian-bundle.yml
+++ b/gitian/descriptors/mac/gitian-bundle.yml
@@ -203,6 +203,29 @@ script: |
~/build/background-plist.py ../../../Contents/Info.plist > TorBrowser.app.meek-http-helper/Contents/Info.plist
unzip ~/build/TorBrowser.app.meek-http-helper.zip
popd
+
+ unzip mac-langpacks.zip
+ MAC_LOCALES="$BUNDLE_LOCALES $BUNDLE_LOCALES_MAC"
+ PKG_LOCALE="en-US"
+ # If we are building a multi-lingual package, add all of the language packs
+ # and use "ALL" in the package name and as the locale for update purposes.
+ if [ "z$MULTI_LINGUAL" = "z1" ]; then
+ PKG_LOCALE="ALL"
+ pushd mac-langpacks
+ for LANG in $MAC_LOCALES
+ do
+ xpi=$LANG.xpi
+ cp $xpi ~/build/$TORBROWSER_NAME.app/TorBrowser/Data/Browser/profile.default/extensions/langpack-$LANG(a)firefox.mozilla.org.xpi
+ done
+ popd
+
+ # Set the update.locale to ALL (it is used to replace %LOCALE% within
+ # app.update.url).
+ pushd ~/build/$TORBROWSER_NAME.app/Contents/Resources/
+ echo $PKG_LOCALE > update.locale
+ zip -Xm omni.ja update.locale
+ popd
+ fi
#
# XXX: We need to insert these placeholders because otherwise mkisofs won't
# include these otherwise empty dirs:
@@ -214,47 +237,46 @@ script: |
popd
#
# Create full MAR file and disk image.
- MAR_FILE=tor-browser-osx${GBUILD_BITS}-${TORBROWSER_VERSION}_en-US.mar
+ MAR_FILE=tor-browser-osx${GBUILD_BITS}-${TORBROWSER_VERSION}_${PKG_LOCALE}.mar
MAR=$MARTOOLS/mar MBSDIFF=$MARTOOLS/mbsdiff $MARTOOLS/make_full_update.sh -q $OUTDIR/$MAR_FILE ~/build/$TORBROWSER_NAME.app
cp -a ~/build/$TORBROWSER_NAME.app ~/build/dmg/$TORBROWSER_APP.app
- ~/build/ddmg.sh $OUTDIR/TorBrowser-${TORBROWSER_VERSION}-osx${GBUILD_BITS}_en-US.dmg ~/build/dmg
+ ~/build/ddmg.sh $OUTDIR/TorBrowser-${TORBROWSER_VERSION}-osx${GBUILD_BITS}_${PKG_LOCALE}.dmg ~/build/dmg
rm -rf ~/build/dmg/$TORBROWSER_APP.app
mv $TORBROWSER_NAME.app ${TORBROWSER_NAME}_plain.app
- #
- unzip mac-langpacks.zip
- cd mac-langpacks
- MAC_LOCALES="$BUNDLE_LOCALES $BUNDLE_LOCALES_MAC"
- for LANG in $MAC_LOCALES
- do
- xpi=$LANG.xpi
- DEST=$TORBROWSER_APP
- cp -a ../${TORBROWSER_NAME}_plain.app ~/build/dmg/$DEST.app
- cp $xpi ~/build/dmg/$DEST.app/TorBrowser/Data/Browser/profile.default/extensions/langpack-$LANG(a)firefox.mozilla.org.xpi
- cd ..
- pushd ~/build/dmg/$DEST.app/Contents/Resources/browser/
- mkdir -p defaults/preferences
- cp ~/build/000-tor-browser.js defaults/preferences/
- # Set the locale of the bundle.
- echo "pref(\"general.useragent.locale\", \"$LANG\");" >> defaults/preferences/000-tor-browser.js
- zip -Xm omni.ja defaults/preferences/000-tor-browser.js
- rm -rf defaults
- popd
+ # If we did not create a multi-lingual package above, create a package for
+ # each locale.
+ if [ "z$MULTI_LINGUAL" != "z1" ]; then
+ for LANG in $MAC_LOCALES
+ do
+ xpi=mac-langpacks/$LANG.xpi
+ DEST=$TORBROWSER_APP
+ cp -a ${TORBROWSER_NAME}_plain.app ~/build/dmg/$DEST.app
+ cp $xpi ~/build/dmg/$DEST.app/TorBrowser/Data/Browser/profile.default/extensions/langpack-$LANG(a)firefox.mozilla.org.xpi
- # Set the update.locale (it is used to replace %LOCALE% within
- # app.update.url), remove the en-US spellchecking dictionary, and recreate
- # the precomplete file (needs to be accurate for full MAR updates).
- pushd ~/build/dmg/$DEST.app/Contents/Resources/
- echo "$LANG" > update.locale
- zip -Xm omni.ja update.locale
- rm -rf dictionaries
- rm -f precomplete
- python $MARTOOLS/createprecomplete.py
- popd
- #
- MAR_FILE=tor-browser-osx${GBUILD_BITS}-${TORBROWSER_VERSION}_$LANG.mar
- MAR=$MARTOOLS/mar MBSDIFF=$MARTOOLS/mbsdiff $MARTOOLS/make_full_update.sh -q $OUTDIR/$MAR_FILE ~/build/dmg/$DEST.app
- ~/build/ddmg.sh $OUTDIR/TorBrowser-${TORBROWSER_VERSION}-osx${GBUILD_BITS}_$LANG.dmg ~/build/dmg/
- rm -rf ~/build/dmg/$DEST.app
- cd mac-langpacks
- done
+ pushd ~/build/dmg/$DEST.app/Contents/Resources/browser/
+ mkdir -p defaults/preferences
+ cp ~/build/000-tor-browser.js defaults/preferences/
+ # Set the locale of the bundle.
+ echo "pref(\"general.useragent.locale\", \"$LANG\");" >> defaults/preferences/000-tor-browser.js
+ zip -Xm omni.ja defaults/preferences/000-tor-browser.js
+ rm -rf defaults
+ popd
+
+ # Set the update.locale (it is used to replace %LOCALE% within
+ # app.update.url), remove the en-US spellchecking dictionary, and recreate
+ # the precomplete file (needs to be accurate for full MAR updates).
+ pushd ~/build/dmg/$DEST.app/Contents/Resources/
+ echo "$LANG" > update.locale
+ zip -Xm omni.ja update.locale
+ rm -rf dictionaries
+ rm -f precomplete
+ python $MARTOOLS/createprecomplete.py
+ popd
+ #
+ MAR_FILE=tor-browser-osx${GBUILD_BITS}-${TORBROWSER_VERSION}_$LANG.mar
+ MAR=$MARTOOLS/mar MBSDIFF=$MARTOOLS/mbsdiff $MARTOOLS/make_full_update.sh -q $OUTDIR/$MAR_FILE ~/build/dmg/$DEST.app
+ ~/build/ddmg.sh $OUTDIR/TorBrowser-${TORBROWSER_VERSION}-osx${GBUILD_BITS}_$LANG.dmg ~/build/dmg/
+ rm -rf ~/build/dmg/$DEST.app
+ done
+ fi
diff --git a/gitian/descriptors/windows/gitian-bundle.yml b/gitian/descriptors/windows/gitian-bundle.yml
index b54d562..eac3345 100644
--- a/gitian/descriptors/windows/gitian-bundle.yml
+++ b/gitian/descriptors/windows/gitian-bundle.yml
@@ -154,6 +154,30 @@ script: |
# Copy reproducibility info
cp ../versions "Tor Browser"/Browser/TorBrowser/Docs/sources/
cp ../bundle.inputs "Tor Browser"/Browser/TorBrowser/Docs/sources/
+
+ unzip ../win32-langpacks.zip
+ WIN32_LOCALES="$BUNDLE_LOCALES $BUNDLE_LOCALES_WIN32"
+ PKG_LOCALE="en-US"
+ # If we are building a multi-lingual package, add all of the language packs
+ # and use "ALL" in the package name and as the locale for update purposes.
+ if [ "z$MULTI_LINGUAL" = "z1" ]; then
+ PKG_LOCALE="ALL"
+ pushd win32-langpacks
+ for LANG in $WIN32_LOCALES
+ do
+ xpi=$LANG.xpi
+ cp $xpi ../"Tor Browser"/Browser/TorBrowser/Data/Browser/profile.default/extensions/langpack-$LANG(a)firefox.mozilla.org.xpi
+ done
+ popd
+
+ # Set the update.locale to ALL (it is used to replace %LOCALE% within
+ # app.update.url).
+ pushd "Tor Browser"/Browser/
+ echo $PKG_LOCALE > update.locale
+ zip -Xm omni.ja update.locale
+ popd
+ fi
+
#
pushd "Tor Browser"/Browser/browser/
unzip omni.ja defaults/preferences/000-tor-browser.js
@@ -173,7 +197,7 @@ script: |
# Create full MAR file and installer.
# Strangely, mbsdiff is linked as mbsdiff.exe even though it is a host
# (e.g., Linux) executable.
- MAR_FILE=tor-browser-win32-${TORBROWSER_VERSION}_en-US.mar
+ MAR_FILE=tor-browser-win32-${TORBROWSER_VERSION}_${PKG_LOCALE}.mar
MAR=$MARTOOLS/mar MBSDIFF=$MARTOOLS/mbsdiff.exe $MARTOOLS/make_full_update.sh -q $OUTDIR/$MAR_FILE "Tor Browser"/Browser
makensis torbrowser.nsi
# Working around NSIS braindamage
@@ -181,51 +205,47 @@ script: |
python ~/build/pe_checksum_fix.py
mv torbrowser-install-tmp2.exe torbrowser-install.exe
rm torbrowser-install-tmp.exe
- mv torbrowser-install.exe $OUTDIR/torbrowser-install-${TORBROWSER_VERSION}_en-US.exe
- #
- unzip ../win32-langpacks.zip
- cd win32-langpacks
- WIN32_LOCALES="$BUNDLE_LOCALES $BUNDLE_LOCALES_WIN32"
- for LANG in $WIN32_LOCALES
- do
- xpi=$LANG.xpi
- cp $xpi ../"Tor Browser"/Browser/TorBrowser/Data/Browser/profile.default/extensions/langpack-$LANG(a)firefox.mozilla.org.xpi
- cd ..
+ mv torbrowser-install.exe $OUTDIR/torbrowser-install-${TORBROWSER_VERSION}_${PKG_LOCALE}.exe
- pushd "Tor Browser"/Browser/browser/
- mkdir -p defaults/preferences
- cp ~/build/000-tor-browser.js defaults/preferences/
- echo "pref(\"general.useragent.locale\", \"$LANG\");" >> defaults/preferences/000-tor-browser.js
- zip -Xm omni.ja defaults/preferences/000-tor-browser.js
- rm -rf defaults
- popd
+ # If we did not create a multi-lingual package above, create a package for
+ # each locale.
+ if [ "z$MULTI_LINGUAL" != "z1" ]; then
+ for LANG in $WIN32_LOCALES
+ do
+ xpi=win32-langpacks/$LANG.xpi
+ cp $xpi "Tor Browser"/Browser/TorBrowser/Data/Browser/profile.default/extensions/langpack-$LANG(a)firefox.mozilla.org.xpi
- # Set the update.locale (it is used to replace %LOCALE% within
- # app.update.url) and remove the en-US spellchecking dictionary.
- pushd "Tor Browser"/Browser/
- echo "$LANG" > update.locale
- zip -Xm omni.ja update.locale
- rm -rf dictionaries
- popd
+ pushd "Tor Browser"/Browser/browser/
+ mkdir -p defaults/preferences
+ cp ~/build/000-tor-browser.js defaults/preferences/
+ echo "pref(\"general.useragent.locale\", \"$LANG\");" >> defaults/preferences/000-tor-browser.js
+ zip -Xm omni.ja defaults/preferences/000-tor-browser.js
+ rm -rf defaults
+ popd
- # Recreate precomplete file (needs to be accurate for full MAR updates).
- pushd "Tor Browser"/Browser/
- rm -f precomplete
- python $MARTOOLS/createprecomplete.py
- popd
+ # Set the update.locale (it is used to replace %LOCALE% within
+ # app.update.url), remove the en-US spellchecking dictionary, and
+ # recreate precomplete file (needs to be accurate for full MAR updates).
+ pushd "Tor Browser"/Browser/
+ echo "$LANG" > update.locale
+ zip -Xm omni.ja update.locale
+ rm -rf dictionaries
+ rm -f precomplete
+ python $MARTOOLS/createprecomplete.py
+ popd
- # Create full MAR file and installer for this locale.
- # Strangely, mbsdiff is linked as mbsdiff.exe even though it is a host
- # (e.g., Linux) executable.
- MAR_FILE=tor-browser-win32-${TORBROWSER_VERSION}_$LANG.mar
- MAR=$MARTOOLS/mar MBSDIFF=$MARTOOLS/mbsdiff.exe $MARTOOLS/make_full_update.sh -q $OUTDIR/$MAR_FILE "Tor Browser"/Browser
- makensis torbrowser.nsi
- # Working around NSIS braindamage
- mv torbrowser-install.exe torbrowser-install-tmp.exe
- python ~/build/pe_checksum_fix.py
- mv torbrowser-install-tmp2.exe torbrowser-install.exe
- rm torbrowser-install-tmp.exe
- mv torbrowser-install.exe $OUTDIR/torbrowser-install-${TORBROWSER_VERSION}_$LANG.exe
- rm "Tor Browser"/Browser/TorBrowser/Data/Browser/profile.default/extensions/langpack-$LANG(a)firefox.mozilla.org.xpi
- cd win32-langpacks
- done
+ # Create full MAR file and installer for this locale.
+ # Strangely, mbsdiff is linked as mbsdiff.exe even though it is a host
+ # (e.g., Linux) executable.
+ MAR_FILE=tor-browser-win32-${TORBROWSER_VERSION}_$LANG.mar
+ MAR=$MARTOOLS/mar MBSDIFF=$MARTOOLS/mbsdiff.exe $MARTOOLS/make_full_update.sh -q $OUTDIR/$MAR_FILE "Tor Browser"/Browser
+ makensis torbrowser.nsi
+ # Working around NSIS braindamage
+ mv torbrowser-install.exe torbrowser-install-tmp.exe
+ python ~/build/pe_checksum_fix.py
+ mv torbrowser-install-tmp2.exe torbrowser-install.exe
+ rm torbrowser-install-tmp.exe
+ mv torbrowser-install.exe $OUTDIR/torbrowser-install-${TORBROWSER_VERSION}_$LANG.exe
+ rm "Tor Browser"/Browser/TorBrowser/Data/Browser/profile.default/extensions/langpack-$LANG(a)firefox.mozilla.org.xpi
+ done
+ fi
diff --git a/gitian/versions.nightly b/gitian/versions.nightly
index 04d2214..4e8cd42 100755
--- a/gitian/versions.nightly
+++ b/gitian/versions.nightly
@@ -8,6 +8,10 @@ BUNDLE_LOCALES_WIN32="ja"
BUNDLE_LOCALES_MAC="ja-JP-mac"
BUILD_PT_BUNDLES=1
+# If you remove MULTI_LINGUAL=1, be sure to use a version of Tor Launcher
+# that does not include the language prompt.
+MULTI_LINGUAL=1
+
VERIFY_TAGS=0
FIREFOX_VERSION=38.3.0esr
1
0

[tor-browser-bundle/master] Bug 17383: Fix rsync freeze in bundling steps
by gk@torproject.org 20 Oct '15
by gk@torproject.org 20 Oct '15
20 Oct '15
commit 246c96b8ed02b52f44fe2d5eaf0246038b12f3d4
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Oct 20 09:08:18 2015 +0000
Bug 17383: Fix rsync freeze in bundling steps
---
gitian/descriptors/linux/gitian-bundle.yml | 16 ++++++++++++----
gitian/descriptors/mac/gitian-bundle.yml | 16 ++++++++++++----
gitian/descriptors/windows/gitian-bundle.yml | 16 ++++++++++++----
gitian/mkbundle-linux.sh | 2 +-
gitian/mkbundle-mac.sh | 2 +-
gitian/mkbundle-windows.sh | 2 +-
6 files changed, 39 insertions(+), 15 deletions(-)
diff --git a/gitian/descriptors/linux/gitian-bundle.yml b/gitian/descriptors/linux/gitian-bundle.yml
index 8cd38b6..1a6776d 100644
--- a/gitian/descriptors/linux/gitian-bundle.yml
+++ b/gitian/descriptors/linux/gitian-bundle.yml
@@ -6,7 +6,6 @@ architectures:
- "i386"
- "amd64"
packages:
-- "faketime"
- "unzip"
- "zip"
# These three packages are needed for assembling the HTTPS-Everywhere rules
@@ -26,6 +25,8 @@ remotes:
"dir": "meek"
- "url": "https://github.com/googlei18n/noto-fonts.git"
"dir": "noto-fonts"
+- "url": "https://github.com/wolfcw/libfaketime"
+ "dir": "faketime"
files:
# TODO: Can we use an env for this file+version??
- "tor-browser-linux32-gbuilt.zip"
@@ -59,13 +60,20 @@ script: |
INSTDIR="$HOME/install"
source versions
export LIBRARY_PATH="$INSTDIR/lib"
- export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1
- export FAKETIME=$REFERENCE_DATETIME
export TZ=UTC
export LC_ALL=C
export TORBROWSER_VERSION=`cat bare-version`
umask 0022
- #
+
+ # Building libfaketime
+ cd faketime
+ make
+ DESTDIR="$INSTDIR/faketime" make install
+ export LD_PRELOAD="$INSTDIR/faketime/usr/local/lib/faketime/libfaketime.so.1"
+ export FAKETIME=$REFERENCE_DATETIME
+ export FAKETIME_SKIP_CMDS="rsync"
+ cd ..
+
mkdir -p $OUTDIR/
mkdir -p tor-browser/Browser/TorBrowser/Data/Browser/profile.default/extensions/https-everywhere-eff(a)eff.org
mkdir -p tor-browser/Browser/TorBrowser/Data/Browser/profile.meek-http-helper/extensions
diff --git a/gitian/descriptors/mac/gitian-bundle.yml b/gitian/descriptors/mac/gitian-bundle.yml
index c4477e2..f24e521 100644
--- a/gitian/descriptors/mac/gitian-bundle.yml
+++ b/gitian/descriptors/mac/gitian-bundle.yml
@@ -5,7 +5,6 @@ suites:
architectures:
- "amd64"
packages:
-- "faketime"
- "unzip"
- "zip"
# These three packages are needed for assembling the HTTPS-Everywhere rules
@@ -32,6 +31,8 @@ remotes:
"dir": "meek"
- "url": "https://github.com/googlei18n/noto-fonts.git"
"dir": "noto-fonts"
+- "url": "https://github.com/wolfcw/libfaketime"
+ "dir": "faketime"
files:
# TODO: Can we use an env for this file+version??
- "tor-browser-mac64-gbuilt.zip"
@@ -61,15 +62,22 @@ script: |
INSTDIR="$HOME/install"
source versions
export LIBRARY_PATH="$INSTDIR/lib"
- export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1
- export FAKETIME=$REFERENCE_DATETIME
export TZ=UTC
export TORBROWSER_VERSION=`cat bare-version`
export LC_ALL=C
umask 0022
export TORBROWSER_APP="TorBrowser"
export TORBROWSER_NAME="TorBrowserBundle"
- #
+
+ # Building libfaketime.
+ cd faketime
+ make
+ DESTDIR="$INSTDIR/faketime" make install
+ export LD_PRELOAD="$INSTDIR/faketime/usr/local/lib/faketime/libfaketime.so.1"
+ export FAKETIME=$REFERENCE_DATETIME
+ export FAKETIME_SKIP_CMDS="rsync"
+ cd ..
+
# Extract the MAR tools.
unzip -d ~/build ~/build/mar-tools-mac$GBUILD_BITS.zip
MARTOOLS=~/build/mar-tools
diff --git a/gitian/descriptors/windows/gitian-bundle.yml b/gitian/descriptors/windows/gitian-bundle.yml
index dc8ad05..b54d562 100644
--- a/gitian/descriptors/windows/gitian-bundle.yml
+++ b/gitian/descriptors/windows/gitian-bundle.yml
@@ -5,7 +5,6 @@ suites:
architectures:
- "i386"
packages:
-- "faketime"
- "unzip"
- "zip"
- "nsis"
@@ -31,6 +30,8 @@ remotes:
"dir": "meek"
- "url": "https://github.com/googlei18n/noto-fonts.git"
"dir": "noto-fonts"
+- "url": "https://github.com/wolfcw/libfaketime"
+ "dir": "faketime"
files:
# TODO: Can we use an env for this file+version??
- "tor-browser-win32-gbuilt.zip"
@@ -53,13 +54,20 @@ script: |
INSTDIR="$HOME/install"
source versions
export LIBRARY_PATH="$INSTDIR/lib"
- export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1
- export FAKETIME=$REFERENCE_DATETIME
export TZ=UTC
export TORBROWSER_VERSION=`cat bare-version`
export LC_ALL=C
umask 0022
- #
+
+ # Building libfaketime
+ cd faketime
+ make
+ DESTDIR="$INSTDIR/faketime" make install
+ export LD_PRELOAD="$INSTDIR/faketime/usr/local/lib/faketime/libfaketime.so.1"
+ export FAKETIME=$REFERENCE_DATETIME
+ export FAKETIME_SKIP_CMDS="rsync"
+ cd ..
+
# Extract the MAR tools.
unzip -d ~/build ~/build/mar-tools-win32.zip
MARTOOLS=~/build/mar-tools
diff --git a/gitian/mkbundle-linux.sh b/gitian/mkbundle-linux.sh
index 65af74e..7e84cb9 100755
--- a/gitian/mkbundle-linux.sh
+++ b/gitian/mkbundle-linux.sh
@@ -247,7 +247,7 @@ then
cd $WRAPPER_DIR && ./record-inputs.sh $VERSIONS_FILE && cd $GITIAN_DIR
- ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit https-everywhere=$HTTPSE_TAG,tor-launcher=$TORLAUNCHER_TAG,torbutton=$TORBUTTON_TAG,meek=$MEEK_TAG,noto-fonts=$NOTOFONTS_TAG $DESCRIPTOR_DIR/linux/gitian-bundle.yml
+ ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit https-everywhere=$HTTPSE_TAG,tor-launcher=$TORLAUNCHER_TAG,torbutton=$TORBUTTON_TAG,meek=$MEEK_TAG,noto-fonts=$NOTOFONTS_TAG,faketime=$FAKETIME_TAG $DESCRIPTOR_DIR/linux/gitian-bundle.yml
if [ $? -ne 0 ];
then
#mv var/build.log ./bundle-fail-linux.log.`date +%Y%m%d%H%M%S`
diff --git a/gitian/mkbundle-mac.sh b/gitian/mkbundle-mac.sh
index 4e458bd..670d152 100755
--- a/gitian/mkbundle-mac.sh
+++ b/gitian/mkbundle-mac.sh
@@ -217,7 +217,7 @@ then
cd $WRAPPER_DIR && ./record-inputs.sh $VERSIONS_FILE && cd $GITIAN_DIR
- ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit libdmg-hfsplus=$LIBDMG_TAG,https-everywhere=$HTTPSE_TAG,torbutton=$TORBUTTON_TAG,tor-launcher=$TORLAUNCHER_TAG,meek=$MEEK_TAG,noto-fonts=$NOTOFONTS_TAG $DESCRIPTOR_DIR/mac/gitian-bundle.yml
+ ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit libdmg-hfsplus=$LIBDMG_TAG,https-everywhere=$HTTPSE_TAG,torbutton=$TORBUTTON_TAG,tor-launcher=$TORLAUNCHER_TAG,meek=$MEEK_TAG,noto-fonts=$NOTOFONTS_TAG,faketime=$FAKETIME_TAG $DESCRIPTOR_DIR/mac/gitian-bundle.yml
if [ $? -ne 0 ];
then
#mv var/build.log ./bundle-fail-mac.log.`date +%Y%m%d%H%M%S`
diff --git a/gitian/mkbundle-windows.sh b/gitian/mkbundle-windows.sh
index 24f8f4e..8f89123 100755
--- a/gitian/mkbundle-windows.sh
+++ b/gitian/mkbundle-windows.sh
@@ -220,7 +220,7 @@ then
cd $WRAPPER_DIR && ./record-inputs.sh $VERSIONS_FILE && cd $GITIAN_DIR
- ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit https-everywhere=$HTTPSE_TAG,torbutton=$TORBUTTON_TAG,tor-launcher=$TORLAUNCHER_TAG,tbb-windows-installer=$NSIS_TAG,meek=$MEEK_TAG,noto-fonts=$NOTOFONTS_TAG $DESCRIPTOR_DIR/windows/gitian-bundle.yml
+ ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit https-everywhere=$HTTPSE_TAG,torbutton=$TORBUTTON_TAG,tor-launcher=$TORLAUNCHER_TAG,tbb-windows-installer=$NSIS_TAG,meek=$MEEK_TAG,noto-fonts=$NOTOFONTS_TAG,faketime=$FAKETIME_TAG $DESCRIPTOR_DIR/windows/gitian-bundle.yml
if [ $? -ne 0 ];
then
#mv var/build.log ./bundle-fail-win32.log.`date +%Y%m%d%H%M%S`
1
0

[torbutton/master] Bug 17351: Remove "fix_google_srch" code/entities (unused).
by gk@torproject.org 19 Oct '15
by gk@torproject.org 19 Oct '15
19 Oct '15
commit 508c0926d0b8f0f52e3c5360df4c865939634fc3
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Wed Oct 14 15:54:29 2015 -0400
Bug 17351: Remove "fix_google_srch" code/entities (unused).
Removed torbutton_wrap_search_service() function,
torbutton.prefs.fix_google_srch entities, and
extensions.torbutton.fix_google_srch default pref.
---
src/chrome/content/torbutton.js | 50 -------------------------------
src/chrome/locale/af/torbutton.dtd | 1 -
src/chrome/locale/ak/torbutton.dtd | 1 -
src/chrome/locale/am/torbutton.dtd | 1 -
src/chrome/locale/ar/torbutton.dtd | 1 -
src/chrome/locale/arn/torbutton.dtd | 1 -
src/chrome/locale/ast/torbutton.dtd | 1 -
src/chrome/locale/az/torbutton.dtd | 1 -
src/chrome/locale/be/torbutton.dtd | 1 -
src/chrome/locale/bg/torbutton.dtd | 1 -
src/chrome/locale/bms/torbutton.dtd | 1 -
src/chrome/locale/bn-IN/torbutton.dtd | 1 -
src/chrome/locale/bn/torbutton.dtd | 1 -
src/chrome/locale/bo/torbutton.dtd | 1 -
src/chrome/locale/br/torbutton.dtd | 1 -
src/chrome/locale/bs/torbutton.dtd | 1 -
src/chrome/locale/ca/torbutton.dtd | 1 -
src/chrome/locale/cs/torbutton.dtd | 1 -
src/chrome/locale/csb/torbutton.dtd | 1 -
src/chrome/locale/cy/torbutton.dtd | 1 -
src/chrome/locale/da/torbutton.dtd | 1 -
src/chrome/locale/de/torbutton.dtd | 1 -
src/chrome/locale/dz/torbutton.dtd | 1 -
src/chrome/locale/el/torbutton.dtd | 1 -
src/chrome/locale/en/torbutton.dtd | 1 -
src/chrome/locale/eo/torbutton.dtd | 1 -
src/chrome/locale/es/torbutton.dtd | 1 -
src/chrome/locale/et/torbutton.dtd | 1 -
src/chrome/locale/eu/torbutton.dtd | 1 -
src/chrome/locale/fa/torbutton.dtd | 1 -
src/chrome/locale/fi/torbutton.dtd | 1 -
src/chrome/locale/fil/torbutton.dtd | 1 -
src/chrome/locale/fo/torbutton.dtd | 1 -
src/chrome/locale/fr/torbutton.dtd | 1 -
src/chrome/locale/fur/torbutton.dtd | 1 -
src/chrome/locale/fy/torbutton.dtd | 1 -
src/chrome/locale/ga/torbutton.dtd | 1 -
src/chrome/locale/gl/torbutton.dtd | 1 -
src/chrome/locale/gu/torbutton.dtd | 1 -
src/chrome/locale/gun/torbutton.dtd | 1 -
src/chrome/locale/ha/torbutton.dtd | 1 -
src/chrome/locale/he/torbutton.dtd | 1 -
src/chrome/locale/hi/torbutton.dtd | 1 -
src/chrome/locale/hr/torbutton.dtd | 1 -
src/chrome/locale/ht/torbutton.dtd | 1 -
src/chrome/locale/hu/torbutton.dtd | 1 -
src/chrome/locale/hy/torbutton.dtd | 1 -
src/chrome/locale/id/torbutton.dtd | 1 -
src/chrome/locale/is/torbutton.dtd | 1 -
src/chrome/locale/it/torbutton.dtd | 1 -
src/chrome/locale/ja/torbutton.dtd | 1 -
src/chrome/locale/jv/torbutton.dtd | 1 -
src/chrome/locale/ka/torbutton.dtd | 1 -
src/chrome/locale/km/torbutton.dtd | 1 -
src/chrome/locale/kn/torbutton.dtd | 1 -
src/chrome/locale/ko/torbutton.dtd | 1 -
src/chrome/locale/ku/torbutton.dtd | 1 -
src/chrome/locale/kw/torbutton.dtd | 1 -
src/chrome/locale/ky/torbutton.dtd | 1 -
src/chrome/locale/lb/torbutton.dtd | 1 -
src/chrome/locale/lg/torbutton.dtd | 1 -
src/chrome/locale/ln/torbutton.dtd | 1 -
src/chrome/locale/lo/torbutton.dtd | 1 -
src/chrome/locale/lt/torbutton.dtd | 1 -
src/chrome/locale/lv/torbutton.dtd | 1 -
src/chrome/locale/mg/torbutton.dtd | 1 -
src/chrome/locale/mi/torbutton.dtd | 1 -
src/chrome/locale/mk/torbutton.dtd | 1 -
src/chrome/locale/ml/torbutton.dtd | 1 -
src/chrome/locale/mn/torbutton.dtd | 1 -
src/chrome/locale/mr/torbutton.dtd | 1 -
src/chrome/locale/ms/torbutton.dtd | 1 -
src/chrome/locale/mt/torbutton.dtd | 1 -
src/chrome/locale/my/torbutton.dtd | 1 -
src/chrome/locale/nah/torbutton.dtd | 1 -
src/chrome/locale/nap/torbutton.dtd | 1 -
src/chrome/locale/nb/torbutton.dtd | 1 -
src/chrome/locale/ne/torbutton.dtd | 1 -
src/chrome/locale/nl/torbutton.dtd | 1 -
src/chrome/locale/nn/torbutton.dtd | 1 -
src/chrome/locale/nso/torbutton.dtd | 1 -
src/chrome/locale/oc/torbutton.dtd | 1 -
src/chrome/locale/or/torbutton.dtd | 1 -
src/chrome/locale/pa/torbutton.dtd | 1 -
src/chrome/locale/pap/torbutton.dtd | 1 -
src/chrome/locale/pl/torbutton.dtd | 1 -
src/chrome/locale/pms/torbutton.dtd | 1 -
src/chrome/locale/ps/torbutton.dtd | 1 -
src/chrome/locale/pt-BR/torbutton.dtd | 1 -
src/chrome/locale/pt/torbutton.dtd | 1 -
src/chrome/locale/ro/torbutton.dtd | 1 -
src/chrome/locale/ru/torbutton.dtd | 1 -
src/chrome/locale/sco/torbutton.dtd | 1 -
src/chrome/locale/sk/torbutton.dtd | 1 -
src/chrome/locale/sl/torbutton.dtd | 1 -
src/chrome/locale/so/torbutton.dtd | 1 -
src/chrome/locale/son/torbutton.dtd | 1 -
src/chrome/locale/sq/torbutton.dtd | 1 -
src/chrome/locale/sr/torbutton.dtd | 1 -
src/chrome/locale/st/torbutton.dtd | 1 -
src/chrome/locale/su/torbutton.dtd | 1 -
src/chrome/locale/sv/torbutton.dtd | 1 -
src/chrome/locale/sw/torbutton.dtd | 1 -
src/chrome/locale/ta/torbutton.dtd | 1 -
src/chrome/locale/te/torbutton.dtd | 1 -
src/chrome/locale/tg/torbutton.dtd | 1 -
src/chrome/locale/th/torbutton.dtd | 1 -
src/chrome/locale/ti/torbutton.dtd | 1 -
src/chrome/locale/tk/torbutton.dtd | 1 -
src/chrome/locale/tr/torbutton.dtd | 1 -
src/chrome/locale/uk/torbutton.dtd | 1 -
src/chrome/locale/ur/torbutton.dtd | 1 -
src/chrome/locale/ve/torbutton.dtd | 1 -
src/chrome/locale/vi/torbutton.dtd | 1 -
src/chrome/locale/wa/torbutton.dtd | 1 -
src/chrome/locale/wo/torbutton.dtd | 1 -
src/chrome/locale/zh-CN/torbutton.dtd | 1 -
src/chrome/locale/zh-HK/torbutton.dtd | 1 -
src/chrome/locale/zh-TW/torbutton.dtd | 1 -
src/chrome/locale/zu/torbutton.dtd | 1 -
src/defaults/preferences/preferences.js | 1 -
website/design/design.xml | 21 -------------
website/design/index.html.en | 10 -------
123 files changed, 201 deletions(-)
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index 11591dc..fb9c8c3 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -2901,53 +2901,6 @@ function torbutton_fixup_old_prefs()
// ---------------------- Event handlers -----------------
-// Bug 1506 P1/P3: This removes any platform-specific junk
-// from the omnibox. In Tor Browser, it should not be needed.
-function torbutton_wrap_search_service()
-{
- var ss = Cc["@mozilla.org/browser/search-service;1"]
- .getService(Ci.nsIBrowserSearchService);
- var junk = {"value":0};
- var engines = ss.getEngines(junk);
-
- for(var i = 0; i < engines.length; ++i) {
- var origEngineObj = engines[i].wrappedJSObject;
- torbutton_log(2, "Got engine: "+origEngineObj._name);
- // hrmm.. could use
- // searchForm.match(/^www\.google\.(co\.\S\S|com|\S\S|com\.\S\S)$/);
- if(origEngineObj._name.indexOf("Google") != -1) {
- torbutton_log(3, "Found google search plugin to wrap.");
- if (typeof(origEngineObj.oldGetSubmission) == "undefined") {
- torbutton_log(3, "Original window for google search");
- origEngineObj.oldGetSubmission=origEngineObj.getSubmission;
- } else {
- torbutton_log(3, "Secondary window for google search");
- }
- origEngineObj.getSubmission = function lmbd(aData, respType) {
- var sub = this.oldGetSubmission(aData, respType);
- if(!m_tb_prefs.getBoolPref("extensions.torbutton.tor_enabled")
- || !m_tb_prefs.getBoolPref("extensions.torbutton.fix_google_srch")) {
- return sub;
- }
-
- var querymatch = sub.uri.path.match("[\?\&](q=[^&]+)(?:[\&]|$)")[1];
- var querypath = sub.uri.path.split("?")[0];
- torbutton_log(3, "Got submission call to Google search.");
-
- var newURI = Cc["@mozilla.org/network/standard-url;1"]
- .createInstance(Ci.nsIStandardURL);
- newURI.init(Ci.nsIStandardURL.URLTYPE_STANDARD, 80,
- sub.uri.scheme+"://"+sub.uri.host+querypath+"?"+querymatch,
- sub.uri.originCharset, null);
- newURI = newURI.QueryInterface(Components.interfaces.nsIURI);
- sub._uri = newURI;
- torbutton_log(3, "Returning new search url.");
- return sub;
- };
- }
- }
-}
-
// Bug 1506 P1-P3: Most of these observers aren't very important.
// See their comments for details
function torbutton_do_main_window_startup()
@@ -2963,9 +2916,6 @@ function torbutton_do_main_window_startup()
progress.addProgressListener(torbutton_weblistener,
Components.interfaces.nsIWebProgress.NOTIFY_LOCATION);
- // Wrap Google search service.
- //torbutton_wrap_search_service();
-
torbutton_unique_pref_observer.register();
}
diff --git a/src/chrome/locale/af/torbutton.dtd b/src/chrome/locale/af/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/af/torbutton.dtd
+++ b/src/chrome/locale/af/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ak/torbutton.dtd b/src/chrome/locale/ak/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ak/torbutton.dtd
+++ b/src/chrome/locale/ak/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/am/torbutton.dtd b/src/chrome/locale/am/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/am/torbutton.dtd
+++ b/src/chrome/locale/am/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ar/torbutton.dtd b/src/chrome/locale/ar/torbutton.dtd
index bf5e04f..b1cc509 100644
--- a/src/chrome/locale/ar/torbutton.dtd
+++ b/src/chrome/locale/ar/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "أزل المنصة واللغة من استفسارات محرك بحث غوغل">
<!ENTITY torbutton.prefs.transparentTor "شفافية توريفكيشن (تحتاج موجه تور أو ترانسبوكسي مخصص)">
<!ENTITY torbutton.prefs.priv_caption "إعدادات الخصوصية">
<!ENTITY torbutton.prefs.block_disk "لا تسجل سجل التصفح أو بيانات المواقع الألكترونية (تفعيل التصفح الخصوصي)">
diff --git a/src/chrome/locale/arn/torbutton.dtd b/src/chrome/locale/arn/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/arn/torbutton.dtd
+++ b/src/chrome/locale/arn/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ast/torbutton.dtd b/src/chrome/locale/ast/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ast/torbutton.dtd
+++ b/src/chrome/locale/ast/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/az/torbutton.dtd b/src/chrome/locale/az/torbutton.dtd
index 0f6aba3..2953324 100644
--- a/src/chrome/locale/az/torbutton.dtd
+++ b/src/chrome/locale/az/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Google axtarış qutusunun Strip platformu və qapalı dil sorğusu">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/be/torbutton.dtd b/src/chrome/locale/be/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/be/torbutton.dtd
+++ b/src/chrome/locale/be/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/bg/torbutton.dtd b/src/chrome/locale/bg/torbutton.dtd
index 2cc09d1..d0cd061 100644
--- a/src/chrome/locale/bg/torbutton.dtd
+++ b/src/chrome/locale/bg/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/bms/torbutton.dtd b/src/chrome/locale/bms/torbutton.dtd
index fe6a4fd..0bee3a1 100644
--- a/src/chrome/locale/bms/torbutton.dtd
+++ b/src/chrome/locale/bms/torbutton.dtd
@@ -128,5 +128,4 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "scroogle.org">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Google Search Box queries မွ platform ႏွင့္ language မ်ားေျပာင္းရန္">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
diff --git a/src/chrome/locale/bn-IN/torbutton.dtd b/src/chrome/locale/bn-IN/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/bn-IN/torbutton.dtd
+++ b/src/chrome/locale/bn-IN/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/bn/torbutton.dtd b/src/chrome/locale/bn/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/bn/torbutton.dtd
+++ b/src/chrome/locale/bn/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/bo/torbutton.dtd b/src/chrome/locale/bo/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/bo/torbutton.dtd
+++ b/src/chrome/locale/bo/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/br/torbutton.dtd b/src/chrome/locale/br/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/br/torbutton.dtd
+++ b/src/chrome/locale/br/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/bs/torbutton.dtd b/src/chrome/locale/bs/torbutton.dtd
index 5afe852..cc23948 100644
--- a/src/chrome/locale/bs/torbutton.dtd
+++ b/src/chrome/locale/bs/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ca/torbutton.dtd b/src/chrome/locale/ca/torbutton.dtd
index 9a298e2..38408ec 100644
--- a/src/chrome/locale/ca/torbutton.dtd
+++ b/src/chrome/locale/ca/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Desactiva les prioritats d'idioma dels suggeriments de la barra Google Search">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/cs/torbutton.dtd b/src/chrome/locale/cs/torbutton.dtd
index 55957a6..f02122e 100644
--- a/src/chrome/locale/cs/torbutton.dtd
+++ b/src/chrome/locale/cs/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/csb/torbutton.dtd b/src/chrome/locale/csb/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/csb/torbutton.dtd
+++ b/src/chrome/locale/csb/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/cy/torbutton.dtd b/src/chrome/locale/cy/torbutton.dtd
index 4fb31ab..550acef 100644
--- a/src/chrome/locale/cy/torbutton.dtd
+++ b/src/chrome/locale/cy/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/da/torbutton.dtd b/src/chrome/locale/da/torbutton.dtd
index acfc614..214f2aa 100644
--- a/src/chrome/locale/da/torbutton.dtd
+++ b/src/chrome/locale/da/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Fjern platform og sprog fra forespørgsler i Google-søgninger">
<!ENTITY torbutton.prefs.transparentTor "Gennemsigtig Torifikation (Kræver tilpasset transproxy eller Tor-router)">
<!ENTITY torbutton.prefs.block_disk "Undlad at registrere historik for browsing eller data for websteder (aktiverer tilstanden Privat browsing)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Begræns tredjeparts-cookies og andre registreringsdata">
diff --git a/src/chrome/locale/de/torbutton.dtd b/src/chrome/locale/de/torbutton.dtd
index dbf16ac..ebfdb3d 100644
--- a/src/chrome/locale/de/torbutton.dtd
+++ b/src/chrome/locale/de/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Betriebssystem und Sprache bei Google Suchabfragen nicht übermitteln">
<!ENTITY torbutton.prefs.transparentTor "Transparente-Torification (Erfordert eigenen Transproxy oder Tor-Router)">
<!ENTITY torbutton.prefs.priv_caption "Privatsphären-Einstellungen">
<!ENTITY torbutton.prefs.block_disk "Browser-Verlauf und Internetdaten nicht speichern (aktiviert den privaten Browser-Modus)">
diff --git a/src/chrome/locale/dz/torbutton.dtd b/src/chrome/locale/dz/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/dz/torbutton.dtd
+++ b/src/chrome/locale/dz/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/el/torbutton.dtd b/src/chrome/locale/el/torbutton.dtd
index 2886f59..f0fbbe6 100644
--- a/src/chrome/locale/el/torbutton.dtd
+++ b/src/chrome/locale/el/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Αφαίρεσε την πλατφόρμα και τη γλώσσα (του συστήματος) απο τα ερωτήματα στα κουτιά αναζήτησης">
<!ENTITY torbutton.prefs.transparentTor "Διαφανής Torification (Απαιτεί προσαρμοσμένο proxy ή Tor δρομολογητή)">
<!ENTITY torbutton.prefs.block_disk "Καμμια καταγραφη του ιστορικυυ περιήγησης ή δεδομένων ιστοσελίδας (ενεργοποιηση της κατάστασης ιδιωτικής περιήγησης) ">
<!ENTITY torbutton.prefs.restrict_thirdparty "Περιορισμος των cookies τριτων και αλλων δεδομενων παρακολουθησης">
diff --git a/src/chrome/locale/en/torbutton.dtd b/src/chrome/locale/en/torbutton.dtd
index 4a7bf7e..8ff33c5 100644
--- a/src/chrome/locale/en/torbutton.dtd
+++ b/src/chrome/locale/en/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.priv_caption "Privacy Settings">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
diff --git a/src/chrome/locale/eo/torbutton.dtd b/src/chrome/locale/eo/torbutton.dtd
index 6b4c927..07499c0 100644
--- a/src/chrome/locale/eo/torbutton.dtd
+++ b/src/chrome/locale/eo/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/es/torbutton.dtd b/src/chrome/locale/es/torbutton.dtd
index ac84de0..94a7219 100644
--- a/src/chrome/locale/es/torbutton.dtd
+++ b/src/chrome/locale/es/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Despojar de información de su plataforma e idioma a las consultas en los cuadros de búsqueda de Google">
<!ENTITY torbutton.prefs.transparentTor "Torificación transparente (requiere un transproxy personalizado o un router Tor)">
<!ENTITY torbutton.prefs.priv_caption "Parámetros de privacidad">
<!ENTITY torbutton.prefs.block_disk "No registrar historial de navegación o datos del sitio web (habilita Modo de Navegación Privada)">
diff --git a/src/chrome/locale/et/torbutton.dtd b/src/chrome/locale/et/torbutton.dtd
index 0fa119b..8240b08 100644
--- a/src/chrome/locale/et/torbutton.dtd
+++ b/src/chrome/locale/et/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/eu/torbutton.dtd b/src/chrome/locale/eu/torbutton.dtd
index 9bb8698..066fbc3 100644
--- a/src/chrome/locale/eu/torbutton.dtd
+++ b/src/chrome/locale/eu/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Kendu plataforma eta hizkuntza Google Searh Box eskaeretatik">
<!ENTITY torbutton.prefs.transparentTor "Torifikazio Gardena (transproxy pertsonalizatua edo Tor routerra behar du)">
<!ENTITY torbutton.prefs.priv_caption "Pribatutasun ezarpenak">
<!ENTITY torbutton.prefs.block_disk "Ez grabatu nabigatze historia edo webgune datuak (Nabigatze pribatu modua gaitzen du)">
diff --git a/src/chrome/locale/fa/torbutton.dtd b/src/chrome/locale/fa/torbutton.dtd
index 518a836..d860beb 100644
--- a/src/chrome/locale/fa/torbutton.dtd
+++ b/src/chrome/locale/fa/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "اطلاعات مربوط به نوع سيستم عامل و مرورگر و زبان مورد استفاده شما را از ورودیهای جستجوگر گوگل حذف کن">
<!ENTITY torbutton.prefs.transparentTor "سازگارسازی با تُر به صورت شفاف (نياز به رهياب تُر يا Tor router و يا transproxy سفارشی دارد)">
<!ENTITY torbutton.prefs.priv_caption "تنظیمات حریم خصوصی">
<!ENTITY torbutton.prefs.block_disk "ثبتنكردن تاريخچه يا دادههاى وبگاه (گشت و گذار خصوصى فعال مىكند)">
diff --git a/src/chrome/locale/fi/torbutton.dtd b/src/chrome/locale/fi/torbutton.dtd
index 1118dd9..db531b9 100644
--- a/src/chrome/locale/fi/torbutton.dtd
+++ b/src/chrome/locale/fi/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Poista yksilöintitiedot (laitteisto ja kieliasetukset) Google hakuja suoritettaessa ">
<!ENTITY torbutton.prefs.transparentTor "Käytä Toria läpinäkyvästi (edellyttää mukautetun transproxyn tai Tor-reitittimen käyttöä)">
<!ENTITY torbutton.prefs.block_disk "Älä säilytä selaushistoriaa tai verkkosivuston tietoa (käynnistää yksityisen selauksen)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Estä kolmannen osapuolen evästeet ja muut seurantatiedot">
diff --git a/src/chrome/locale/fil/torbutton.dtd b/src/chrome/locale/fil/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/fil/torbutton.dtd
+++ b/src/chrome/locale/fil/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/fo/torbutton.dtd b/src/chrome/locale/fo/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/fo/torbutton.dtd
+++ b/src/chrome/locale/fo/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/fr/torbutton.dtd b/src/chrome/locale/fr/torbutton.dtd
index c7976bc..64dcd96 100644
--- a/src/chrome/locale/fr/torbutton.dtd
+++ b/src/chrome/locale/fr/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Supprimer les informations relatives à la plateforme et à la langue des requêtes Google">
<!ENTITY torbutton.prefs.transparentTor "Torification transparente (requiert un transproxy personnalisé ou un routeur Tor)">
<!ENTITY torbutton.prefs.priv_caption "Paramètres de vie privé">
<!ENTITY torbutton.prefs.block_disk "Ne pas sauvegarder l'historique de navigation et les données des sites webs (active le Mode de Navigation Privée)">
diff --git a/src/chrome/locale/fur/torbutton.dtd b/src/chrome/locale/fur/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/fur/torbutton.dtd
+++ b/src/chrome/locale/fur/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/fy/torbutton.dtd b/src/chrome/locale/fy/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/fy/torbutton.dtd
+++ b/src/chrome/locale/fy/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ga/torbutton.dtd b/src/chrome/locale/ga/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ga/torbutton.dtd
+++ b/src/chrome/locale/ga/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/gl/torbutton.dtd b/src/chrome/locale/gl/torbutton.dtd
index 6cfbf8d..e71657a 100644
--- a/src/chrome/locale/gl/torbutton.dtd
+++ b/src/chrome/locale/gl/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/gu/torbutton.dtd b/src/chrome/locale/gu/torbutton.dtd
index 0aa8fce..ff1d104 100644
--- a/src/chrome/locale/gu/torbutton.dtd
+++ b/src/chrome/locale/gu/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/gun/torbutton.dtd b/src/chrome/locale/gun/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/gun/torbutton.dtd
+++ b/src/chrome/locale/gun/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ha/torbutton.dtd b/src/chrome/locale/ha/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ha/torbutton.dtd
+++ b/src/chrome/locale/ha/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/he/torbutton.dtd b/src/chrome/locale/he/torbutton.dtd
index 3f16cfa..aaf1ff2 100644
--- a/src/chrome/locale/he/torbutton.dtd
+++ b/src/chrome/locale/he/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "פלטפורמת רצועה ושפה משל שאילתות תיבת חיפוש של גוגל">
<!ENTITY torbutton.prefs.transparentTor "הפעלת טור בצורה בלתי נראית (דורש transproxy או Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/hi/torbutton.dtd b/src/chrome/locale/hi/torbutton.dtd
index 38c8171..081cbba 100644
--- a/src/chrome/locale/hi/torbutton.dtd
+++ b/src/chrome/locale/hi/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/hr/torbutton.dtd b/src/chrome/locale/hr/torbutton.dtd
index 695962e..83d400d 100644
--- a/src/chrome/locale/hr/torbutton.dtd
+++ b/src/chrome/locale/hr/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ht/torbutton.dtd b/src/chrome/locale/ht/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ht/torbutton.dtd
+++ b/src/chrome/locale/ht/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/hu/torbutton.dtd b/src/chrome/locale/hu/torbutton.dtd
index 2e07252..557f4a9 100644
--- a/src/chrome/locale/hu/torbutton.dtd
+++ b/src/chrome/locale/hu/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Szedje ki az operációs rendszert és a nyelvet a Google kereső ablakokból">
<!ENTITY torbutton.prefs.transparentTor "Átlátszó Tor-osítás (Egyedi transproxy-t vagy Tor routert igényel)">
<!ENTITY torbutton.prefs.block_disk "Ne rögzítsen böngésző előzményeket, vagy weboldal adatot (engedélyezi a Privát böngésző módot)">
<!ENTITY torbutton.prefs.restrict_thirdparty "A harmadik féltől származó sütik és nyomkövetési adatok korlátozása">
diff --git a/src/chrome/locale/hy/torbutton.dtd b/src/chrome/locale/hy/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/hy/torbutton.dtd
+++ b/src/chrome/locale/hy/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/id/torbutton.dtd b/src/chrome/locale/id/torbutton.dtd
index 8b0a7c4..cf2ecde 100644
--- a/src/chrome/locale/id/torbutton.dtd
+++ b/src/chrome/locale/id/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Lepaskan serambi dan bahasa dari Kotak Pencarian Google">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/is/torbutton.dtd b/src/chrome/locale/is/torbutton.dtd
index 35a7503..6893200 100644
--- a/src/chrome/locale/is/torbutton.dtd
+++ b/src/chrome/locale/is/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/it/torbutton.dtd b/src/chrome/locale/it/torbutton.dtd
index 418fa4c..c42fb54 100644
--- a/src/chrome/locale/it/torbutton.dtd
+++ b/src/chrome/locale/it/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Estrai sistema e idioma dalle interrogazioni di Google Search Box">
<!ENTITY torbutton.prefs.transparentTor "Torificazione trasparente (richiede un transproxy personalizzato o un tor router)">
<!ENTITY torbutton.prefs.priv_caption "Impostazioni Privacy">
<!ENTITY torbutton.prefs.block_disk "Non registrare la cronologia di navigazione o i dati dei siti (attiva la Navigazione Anonima)">
diff --git a/src/chrome/locale/ja/torbutton.dtd b/src/chrome/locale/ja/torbutton.dtd
index 0222021..4582b06 100644
--- a/src/chrome/locale/ja/torbutton.dtd
+++ b/src/chrome/locale/ja/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Google検索ボックスのクエリからプラットフォームと言語を外す">
<!ENTITY torbutton.prefs.transparentTor "透過型Tor化 (カスタム透過型プロキシかTorのルーターが必要)">
<!ENTITY torbutton.prefs.priv_caption "プライバシー設定">
<!ENTITY torbutton.prefs.block_disk "ブラウジング履歴やウェブサイトのデータを記録しない (プライベートブラウジングモードを有効化)">
diff --git a/src/chrome/locale/jv/torbutton.dtd b/src/chrome/locale/jv/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/jv/torbutton.dtd
+++ b/src/chrome/locale/jv/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ka/torbutton.dtd b/src/chrome/locale/ka/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ka/torbutton.dtd
+++ b/src/chrome/locale/ka/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/km/torbutton.dtd b/src/chrome/locale/km/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/km/torbutton.dtd
+++ b/src/chrome/locale/km/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/kn/torbutton.dtd b/src/chrome/locale/kn/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/kn/torbutton.dtd
+++ b/src/chrome/locale/kn/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ko/torbutton.dtd b/src/chrome/locale/ko/torbutton.dtd
index 46aede2..95b0852 100644
--- a/src/chrome/locale/ko/torbutton.dtd
+++ b/src/chrome/locale/ko/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "구글 검색 쿼리시 플랫폼과 언어 정보를 벗겨냄">
<!ENTITY torbutton.prefs.transparentTor "투명 Toritication (사용자 transproxy나 Tor 라우터 필요)">
<!ENTITY torbutton.prefs.priv_caption "개인 정보 설정">
<!ENTITY torbutton.prefs.block_disk "브라우징 히스토리나 웹사이트 데이터를 기록하지 마십시오 (Private Browsing 모드 활성화)">
diff --git a/src/chrome/locale/ku/torbutton.dtd b/src/chrome/locale/ku/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ku/torbutton.dtd
+++ b/src/chrome/locale/ku/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/kw/torbutton.dtd b/src/chrome/locale/kw/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/kw/torbutton.dtd
+++ b/src/chrome/locale/kw/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ky/torbutton.dtd b/src/chrome/locale/ky/torbutton.dtd
index b13f2bf..50a94d9 100644
--- a/src/chrome/locale/ky/torbutton.dtd
+++ b/src/chrome/locale/ky/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/lb/torbutton.dtd b/src/chrome/locale/lb/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/lb/torbutton.dtd
+++ b/src/chrome/locale/lb/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/lg/torbutton.dtd b/src/chrome/locale/lg/torbutton.dtd
index 056cc52..b3b9968 100644
--- a/src/chrome/locale/lg/torbutton.dtd
+++ b/src/chrome/locale/lg/torbutton.dtd
@@ -129,5 +129,4 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "scroogle.org">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
diff --git a/src/chrome/locale/ln/torbutton.dtd b/src/chrome/locale/ln/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ln/torbutton.dtd
+++ b/src/chrome/locale/ln/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/lo/torbutton.dtd b/src/chrome/locale/lo/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/lo/torbutton.dtd
+++ b/src/chrome/locale/lo/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/lt/torbutton.dtd b/src/chrome/locale/lt/torbutton.dtd
index 1d76f49..10c3b14 100644
--- a/src/chrome/locale/lt/torbutton.dtd
+++ b/src/chrome/locale/lt/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/lv/torbutton.dtd b/src/chrome/locale/lv/torbutton.dtd
index 146b036..aed59e9 100644
--- a/src/chrome/locale/lv/torbutton.dtd
+++ b/src/chrome/locale/lv/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Noņemt platformu un valodu no gūgļa meklēšanas lodziņu jeb Google Search Box vaicājumiem">
<!ENTITY torbutton.prefs.transparentTor "Pārredzama torifikācija (nepieciešams pielāgots pārstarpnieks jeb transproxy vai Tor'a maršrutētājs)">
<!ENTITY torbutton.prefs.block_disk "Nereģistrēt pārlūkošanas vēsturi vai tīmekļa vietņu datus (iespējo Privātas pārlūkošanas režīmu)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Ierobežot trešo personu sīkdatnes un citus izsekošanas datus">
diff --git a/src/chrome/locale/mg/torbutton.dtd b/src/chrome/locale/mg/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/mg/torbutton.dtd
+++ b/src/chrome/locale/mg/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/mi/torbutton.dtd b/src/chrome/locale/mi/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/mi/torbutton.dtd
+++ b/src/chrome/locale/mi/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/mk/torbutton.dtd b/src/chrome/locale/mk/torbutton.dtd
index 92fc727..34895dd 100644
--- a/src/chrome/locale/mk/torbutton.dtd
+++ b/src/chrome/locale/mk/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Скриј ја платформата и јазикот при барањата преку полето за пребарување со Google">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ml/torbutton.dtd b/src/chrome/locale/ml/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ml/torbutton.dtd
+++ b/src/chrome/locale/ml/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/mn/torbutton.dtd b/src/chrome/locale/mn/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/mn/torbutton.dtd
+++ b/src/chrome/locale/mn/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/mr/torbutton.dtd b/src/chrome/locale/mr/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/mr/torbutton.dtd
+++ b/src/chrome/locale/mr/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ms/torbutton.dtd b/src/chrome/locale/ms/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ms/torbutton.dtd
+++ b/src/chrome/locale/ms/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/mt/torbutton.dtd b/src/chrome/locale/mt/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/mt/torbutton.dtd
+++ b/src/chrome/locale/mt/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/my/torbutton.dtd b/src/chrome/locale/my/torbutton.dtd
index d2a6e73..1f31c3c 100644
--- a/src/chrome/locale/my/torbutton.dtd
+++ b/src/chrome/locale/my/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "ဂူဂဲ ရှာဖွေရေး အကွက်ရှိ မေးခွန်းများမှ ပလက်ဖောင်းနှင့် ဘာသာစကား တို့ကို ဖယ်ထုတ်ရန်">
<!ENTITY torbutton.prefs.transparentTor "ပွင့်လင်းမြင်သာသော Tor သုံးစွဲမှု (စိတ်ကြိုက် transproxy နှင့် Tor Router လိုအပ်သည်)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/nah/torbutton.dtd b/src/chrome/locale/nah/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/nah/torbutton.dtd
+++ b/src/chrome/locale/nah/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/nap/torbutton.dtd b/src/chrome/locale/nap/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/nap/torbutton.dtd
+++ b/src/chrome/locale/nap/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/nb/torbutton.dtd b/src/chrome/locale/nb/torbutton.dtd
index 120667c..92ff5d9 100644
--- a/src/chrome/locale/nb/torbutton.dtd
+++ b/src/chrome/locale/nb/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Fjern platform og språk fra Google Search Box søk.">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (krever egendefinert transproxy eller Tor-router)">
<!ENTITY torbutton.prefs.block_disk "Ikke lagre nettleserhistorikk eller nettsidedata (aktiverer privat nettleser økt)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Begrens tredjeparts informasjonskapsler og andre sporingsdata.">
diff --git a/src/chrome/locale/ne/torbutton.dtd b/src/chrome/locale/ne/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ne/torbutton.dtd
+++ b/src/chrome/locale/ne/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/nl/torbutton.dtd b/src/chrome/locale/nl/torbutton.dtd
index 17b5b8b..e92bb6d 100644
--- a/src/chrome/locale/nl/torbutton.dtd
+++ b/src/chrome/locale/nl/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Systeem- en taalgegevens verwijderen bij gebruik van de Google zoekbalk">
<!ENTITY torbutton.prefs.transparentTor "Transparante Torificatie (Heeft aangepaste transparente proxy of Tor router nodig)">
<!ENTITY torbutton.prefs.priv_caption "Privacyinstellingen">
<!ENTITY torbutton.prefs.block_disk "Bewaar geen surfgeschiedenis of websitegegevens. (Schakelt Privénavigatie in.)">
diff --git a/src/chrome/locale/nn/torbutton.dtd b/src/chrome/locale/nn/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/nn/torbutton.dtd
+++ b/src/chrome/locale/nn/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/nso/torbutton.dtd b/src/chrome/locale/nso/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/nso/torbutton.dtd
+++ b/src/chrome/locale/nso/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/oc/torbutton.dtd b/src/chrome/locale/oc/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/oc/torbutton.dtd
+++ b/src/chrome/locale/oc/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/or/torbutton.dtd b/src/chrome/locale/or/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/or/torbutton.dtd
+++ b/src/chrome/locale/or/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/pa/torbutton.dtd b/src/chrome/locale/pa/torbutton.dtd
index 515f81f..1058026 100644
--- a/src/chrome/locale/pa/torbutton.dtd
+++ b/src/chrome/locale/pa/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/pap/torbutton.dtd b/src/chrome/locale/pap/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/pap/torbutton.dtd
+++ b/src/chrome/locale/pap/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/pl/torbutton.dtd b/src/chrome/locale/pl/torbutton.dtd
index 78b5062..7ead4b6 100644
--- a/src/chrome/locale/pl/torbutton.dtd
+++ b/src/chrome/locale/pl/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Usuń nazwę systemu i język z zapytań Google">
<!ENTITY torbutton.prefs.transparentTor "Przezroczysta toryfikacja (wymaga własnego transproxy lub routera Tora)">
<!ENTITY torbutton.prefs.priv_caption "Ustawienia Prywatności">
<!ENTITY torbutton.prefs.block_disk "Nie zapisuj historii przeglądania i danych o stronach (włącza Tryb Prywatny)">
diff --git a/src/chrome/locale/pms/torbutton.dtd b/src/chrome/locale/pms/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/pms/torbutton.dtd
+++ b/src/chrome/locale/pms/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ps/torbutton.dtd b/src/chrome/locale/ps/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ps/torbutton.dtd
+++ b/src/chrome/locale/ps/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/pt-BR/torbutton.dtd b/src/chrome/locale/pt-BR/torbutton.dtd
index df466f4..97f4bc0 100644
--- a/src/chrome/locale/pt-BR/torbutton.dtd
+++ b/src/chrome/locale/pt-BR/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Remover plataforma e idioma das consultas da Caixa de Busca do Google">
<!ENTITY torbutton.prefs.transparentTor "Torificação Transparente (Requer transpoxy customizado ou roteador Tor)">
<!ENTITY torbutton.prefs.block_disk "Não gravar o histórico de navegação ou dados do site (permite Navegação em modo privado)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restringir os cookies de terceiros e outros dados de controle">
diff --git a/src/chrome/locale/pt/torbutton.dtd b/src/chrome/locale/pt/torbutton.dtd
index bb521a3..503b4fa 100644
--- a/src/chrome/locale/pt/torbutton.dtd
+++ b/src/chrome/locale/pt/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Retirar plataforma e língua dos pedidos da caixa de pesquisa do Google">
<!ENTITY torbutton.prefs.transparentTor "Torificação transparente (Necessita transpoxy customizado ou router Tor)">
<!ENTITY torbutton.prefs.priv_caption "Configurações de Privacidade">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
diff --git a/src/chrome/locale/ro/torbutton.dtd b/src/chrome/locale/ro/torbutton.dtd
index 35a3c49..eae1bc6 100644
--- a/src/chrome/locale/ro/torbutton.dtd
+++ b/src/chrome/locale/ro/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Eliminați informații despre platformă și limbă din cererile câmpurilor de căutare Google">
<!ENTITY torbutton.prefs.transparentTor "Torificare transparentă (Necesită transproy sau Tor modificat)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ru/torbutton.dtd b/src/chrome/locale/ru/torbutton.dtd
index 2b0156a..2c40381 100644
--- a/src/chrome/locale/ru/torbutton.dtd
+++ b/src/chrome/locale/ru/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Удалять сведения о платформе и языке из запросов строки поиска Google">
<!ENTITY torbutton.prefs.transparentTor "Прозрачная "торификация" (требует пользовательских transproxy или Tor-маршрутизатора)">
<!ENTITY torbutton.prefs.priv_caption "Настройки конфиденциальности">
<!ENTITY torbutton.prefs.block_disk "Не сохранять историю журнала посещений и данные с посещаемых сайтов (активирует функцию конфиденциального просмотра)">
diff --git a/src/chrome/locale/sco/torbutton.dtd b/src/chrome/locale/sco/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/sco/torbutton.dtd
+++ b/src/chrome/locale/sco/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/sk/torbutton.dtd b/src/chrome/locale/sk/torbutton.dtd
index 1ffcb5b..867764b 100644
--- a/src/chrome/locale/sk/torbutton.dtd
+++ b/src/chrome/locale/sk/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/sl/torbutton.dtd b/src/chrome/locale/sl/torbutton.dtd
index 6a6d25d..81140cd 100644
--- a/src/chrome/locale/sl/torbutton.dtd
+++ b/src/chrome/locale/sl/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/so/torbutton.dtd b/src/chrome/locale/so/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/so/torbutton.dtd
+++ b/src/chrome/locale/so/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/son/torbutton.dtd b/src/chrome/locale/son/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/son/torbutton.dtd
+++ b/src/chrome/locale/son/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/sq/torbutton.dtd b/src/chrome/locale/sq/torbutton.dtd
index bda0c2a..c7ce160 100644
--- a/src/chrome/locale/sq/torbutton.dtd
+++ b/src/chrome/locale/sq/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/sr/torbutton.dtd b/src/chrome/locale/sr/torbutton.dtd
index 1e36255..a639874 100644
--- a/src/chrome/locale/sr/torbutton.dtd
+++ b/src/chrome/locale/sr/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Скини платформу и језик са Google претраживача">
<!ENTITY torbutton.prefs.transparentTor "Транспарента Торификација (захтева посебан Tor прокси или Tor рутер)">
<!ENTITY torbutton.prefs.block_disk "Ne pamti moji istoriju pretrazivanja ili podatke sa web sajtova(Omogucava Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Ogranici cookies i druge podatke o pracenju">
diff --git a/src/chrome/locale/st/torbutton.dtd b/src/chrome/locale/st/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/st/torbutton.dtd
+++ b/src/chrome/locale/st/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/su/torbutton.dtd b/src/chrome/locale/su/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/su/torbutton.dtd
+++ b/src/chrome/locale/su/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/sv/torbutton.dtd b/src/chrome/locale/sv/torbutton.dtd
index 07e8fa5..c384b60 100644
--- a/src/chrome/locale/sv/torbutton.dtd
+++ b/src/chrome/locale/sv/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Ta bort plattform och språk från Google Sök Box förfrågningar">
<!ENTITY torbutton.prefs.transparentTor "Transparent torifikation (Kräver skräddarsydd transproxy eller Tor router)">
<!ENTITY torbutton.prefs.priv_caption "Sekretessinställningar">
<!ENTITY torbutton.prefs.block_disk "Spara ingen historik eller webbplatsdata (aktiverar privat surfning)">
diff --git a/src/chrome/locale/sw/torbutton.dtd b/src/chrome/locale/sw/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/sw/torbutton.dtd
+++ b/src/chrome/locale/sw/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ta/torbutton.dtd b/src/chrome/locale/ta/torbutton.dtd
index 887a018..d4307cb 100644
--- a/src/chrome/locale/ta/torbutton.dtd
+++ b/src/chrome/locale/ta/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/te/torbutton.dtd b/src/chrome/locale/te/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/te/torbutton.dtd
+++ b/src/chrome/locale/te/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/tg/torbutton.dtd b/src/chrome/locale/tg/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/tg/torbutton.dtd
+++ b/src/chrome/locale/tg/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/th/torbutton.dtd b/src/chrome/locale/th/torbutton.dtd
index e318725..c2d103c 100644
--- a/src/chrome/locale/th/torbutton.dtd
+++ b/src/chrome/locale/th/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ti/torbutton.dtd b/src/chrome/locale/ti/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ti/torbutton.dtd
+++ b/src/chrome/locale/ti/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/tk/torbutton.dtd b/src/chrome/locale/tk/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/tk/torbutton.dtd
+++ b/src/chrome/locale/tk/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/tr/torbutton.dtd b/src/chrome/locale/tr/torbutton.dtd
index 6039178..ae45b7b 100644
--- a/src/chrome/locale/tr/torbutton.dtd
+++ b/src/chrome/locale/tr/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Google Arama Kutusu sorgularında platform ve dil bilgileri ayıklansın">
<!ENTITY torbutton.prefs.transparentTor "Saydam Tor İletişimi (özel transproxy yada Tor yönelticisi gerekir)">
<!ENTITY torbutton.prefs.priv_caption "Gizlilik Ayarları">
<!ENTITY torbutton.prefs.block_disk "Tarama geçmişini ve web sitesi bilgileri kaydedilmesin (Gizli Tarama Kipi kullanılır)">
diff --git a/src/chrome/locale/uk/torbutton.dtd b/src/chrome/locale/uk/torbutton.dtd
index 720a83f..68bfa9b 100644
--- a/src/chrome/locale/uk/torbutton.dtd
+++ b/src/chrome/locale/uk/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Видаляти відомості про платформу і мову із запитів рядка пошуку Google">
<!ENTITY torbutton.prefs.transparentTor "Прозора Торіфікація (Вимагає користувацьких transproxy або Tor-маршрутизатора)">
<!ENTITY torbutton.prefs.block_disk "Не зберігати історію переглядів або дані з відвідуваних сайтів (активує функцію приватного перегляду)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Блокувати сторонні куки та інші дані відстеження">
diff --git a/src/chrome/locale/ur/torbutton.dtd b/src/chrome/locale/ur/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ur/torbutton.dtd
+++ b/src/chrome/locale/ur/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ve/torbutton.dtd b/src/chrome/locale/ve/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ve/torbutton.dtd
+++ b/src/chrome/locale/ve/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/vi/torbutton.dtd b/src/chrome/locale/vi/torbutton.dtd
index b310687..c99f72c 100644
--- a/src/chrome/locale/vi/torbutton.dtd
+++ b/src/chrome/locale/vi/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.priv_caption "Cài đặt Riêng tư">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
diff --git a/src/chrome/locale/wa/torbutton.dtd b/src/chrome/locale/wa/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/wa/torbutton.dtd
+++ b/src/chrome/locale/wa/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/wo/torbutton.dtd b/src/chrome/locale/wo/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/wo/torbutton.dtd
+++ b/src/chrome/locale/wo/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/zh-CN/torbutton.dtd b/src/chrome/locale/zh-CN/torbutton.dtd
index 76910e8..757c4da 100644
--- a/src/chrome/locale/zh-CN/torbutton.dtd
+++ b/src/chrome/locale/zh-CN/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "在 Google 搜索栏搜索时去掉平台和语言信息。">
<!ENTITY torbutton.prefs.transparentTor "Tor 强化透明代理(需要自设 TransProxy 或 Tor 路由)">
<!ENTITY torbutton.prefs.priv_caption "隐私设置">
<!ENTITY torbutton.prefs.block_disk "禁止记录浏览历史或网站数据(启用隐私浏览模式)">
diff --git a/src/chrome/locale/zh-HK/torbutton.dtd b/src/chrome/locale/zh-HK/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/zh-HK/torbutton.dtd
+++ b/src/chrome/locale/zh-HK/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/zh-TW/torbutton.dtd b/src/chrome/locale/zh-TW/torbutton.dtd
index 9f1b919..2df0e4d 100644
--- a/src/chrome/locale/zh-TW/torbutton.dtd
+++ b/src/chrome/locale/zh-TW/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/zu/torbutton.dtd b/src/chrome/locale/zu/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/zu/torbutton.dtd
+++ b/src/chrome/locale/zu/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/defaults/preferences/preferences.js b/src/defaults/preferences/preferences.js
index c481546..cae5fbd 100644
--- a/src/defaults/preferences/preferences.js
+++ b/src/defaults/preferences/preferences.js
@@ -206,7 +206,6 @@ pref("extensions.torbutton.redir_url.2", "http://www.bing.com/search?q=");
pref("extensions.torbutton.redir_url.3", "http://search.yahoo.com/search?p=");
pref("extensions.torbutton.redir_url.4", "https://www.startpage.com/rto/search?query=");
pref("extensions.torbutton.redir_url.5", "https://duckduckgo.com/?q=");
-pref("extensions.torbutton.fix_google_srch", true);
// User agent prefs:
pref("extensions.torbutton.appname_override","Netscape");
diff --git a/website/design/design.xml b/website/design/design.xml
index 588d6f4..bc0d5b8 100644
--- a/website/design/design.xml
+++ b/website/design/design.xml
@@ -2058,27 +2058,6 @@ some may desire to mask their referer for general privacy concerns.
</sect3>
<sect3>
- <title>Strip platform and language off of Google Search Box queries</title>
-
-<para>Option: <command>extensions.torbutton.fix_google_srch</command>
-</para>
-
-<para>
-
-This option causes Torbutton to use the <ulink
-url="https://wiki.mozilla.org/Search_Service:API">@mozilla.org/browser/search-service;1</ulink>
-component to wrap the Google search plugin. On many platforms, notably Debian
-and Ubuntu, the Google search plugin is set to reveal a lot of language and
-platform information. This setting strips off that info while Tor is enabled.
-
-</para>
-<para>
-This setting helps Torbutton to fulfill its <link
-linkend="setpreservation">Anonymity Set Preservation</link> requirement.
-</para>
-</sect3>
-
-<sect3>
<title>Automatically use an alternate search engine when presented with a
Google Captcha</title>
diff --git a/website/design/index.html.en b/website/design/index.html.en
index 1afe9e4..88f305d 100644
--- a/website/design/index.html.en
+++ b/website/design/index.html.en
@@ -1065,16 +1065,6 @@ sent. The default value is 1. The smart referer spoofing is implemented by the
</p><p>
This setting also does not directly satisfy any Torbutton requirement, but
some may desire to mask their referer for general privacy concerns.
-</p></div><div class="sect3" title="Strip platform and language off of Google Search Box queries"><div class="titlepage"><div><div><h4 class="title"><a id="id2706480"></a>Strip platform and language off of Google Search Box queries</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.fix_google_srch</strong></span>
-</p><p>
-
-This option causes Torbutton to use the <a class="ulink" href="https://wiki.mozilla.org/Search_Service:API" target="_top">@mozilla.org/browser/search-service;1</a>
-component to wrap the Google search plugin. On many platforms, notably Debian
-and Ubuntu, the Google search plugin is set to reveal a lot of language and
-platform information. This setting strips off that info while Tor is enabled.
-
-</p><p>
-This setting helps Torbutton to fulfill its <a class="link" href="#setpreservation">Anonymity Set Preservation</a> requirement.
</p></div><div class="sect3" title="Automatically use an alternate search engine when presented with a Google Captcha"><div class="titlepage"><div><div><h4 class="title"><a id="id2706521"></a>Automatically use an alternate search engine when presented with a
Google Captcha</h4></div></div></div><p>Options:
</p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.asked_google_captcha</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.dodge_google_captcha</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.google_redir_url</strong></span></td></tr></table><p>
1
0

[tor-launcher/master] Bug 12967: Prompt for language during first run.
by gk@torproject.org 16 Oct '15
by gk@torproject.org 16 Oct '15
16 Oct '15
commit 919ccb92304fe86bda1d11ad6758871ccd483185
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Thu Oct 15 15:59:59 2015 -0400
Bug 12967: Prompt for language during first run.
The intl.locale.matchOS pref is set to true by default so that the
lanuage prompt is presented in the OS/system language.
To skip the language prompt, set the TOR_SKIP_LOCALE_PROMPT env variable
to 1 or set the hidden pref extensions.torlauncher.prompt_for_locale
to false.
---
src/chrome/content/localePicker.xul | 62 +++++++++++
src/chrome/content/network-settings.js | 158 ++++++++++++++++++++++-------
src/chrome/locale/en/network-settings.dtd | 4 +
src/chrome/skin/network-settings.css | 5 +
src/components/tl-process.js | 59 ++++++++---
src/defaults/preferences/prefs.js | 4 +
src/modules/tl-util.jsm | 20 ++++
7 files changed, 260 insertions(+), 52 deletions(-)
diff --git a/src/chrome/content/localePicker.xul b/src/chrome/content/localePicker.xul
new file mode 100644
index 0000000..be82e14
--- /dev/null
+++ b/src/chrome/content/localePicker.xul
@@ -0,0 +1,62 @@
+<?xml version="1.0"?>
+<!--
+ - Copyright (c) 2015, The Tor Project, Inc.
+ - See LICENSE for licensing information.
+ - vim: set sw=2 sts=2 ts=8 et syntax=xml:
+ -->
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://torlauncher/skin/network-settings.css"
+ type="text/css"?>
+
+<!DOCTYPE overlay SYSTEM "chrome://torlauncher/locale/network-settings.dtd">
+
+<?xul-overlay href="chrome://torlauncher/content/network-settings-overlay.xul"?>
+
+<wizard id="TorLauncherLocalePicker"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ title="&torlauncher.localePicker.title;"
+ windowtype="TorLauncher:LocalePicker"
+ persist="screenX screenY"
+ onwizardfinish="return setLocale();"
+ onwizardcancel="return onCancel();"
+ onload="initLocaleDialog();">
+
+ <script type="application/x-javascript"
+ src="chrome://torlauncher/content/network-settings.js"/>
+
+ <wizardpage pageid="localePicker">
+ <hbox class="tbb-header">
+ <vbox class="tbb-logo-box" align="start">
+ <image class="tbb-logo" />
+ </vbox>
+ </hbox>
+ <separator />
+ <vbox>
+ <label class="question">&torlauncher.localePicker.prompt;</label>
+ <separator/>
+ <listbox id="localeList" ondblclick="onLocaleListDoubleClick()">
+ <listitem value="en-US" label="English" selected="true" />
+ <listitem value="ar" label="العربية" />
+ <listitem value="de" label="Deutsch" />
+ <listitem value="es-ES" label="Español" />
+ <listitem value="fa" label="فارسی" />
+ <listitem value="fr" label="Français" />
+ <listitem value="it" label="Italiano" />
+ <listitem value="ja" label="日本語" />
+ <listitem value="ko" label="한국어" />
+ <listitem value="nl" label="Nederlands" />
+ <listitem value="pl" label="Polski" />
+ <listitem value="pt-PT" label="Português (Europeu)" />
+ <listitem value="ru" label="Русский" />
+ <listitem value="tr" label="Türkçe" />
+ <listitem value="vi" label="Tiếng Việt" />
+ <listitem value="zh-CN" label="简体字" />
+ </listbox>
+ </vbox>
+ </wizardpage>
+
+ <hbox pack="start">
+ <label id="forAssistance" />
+ </hbox>
+</wizard>
diff --git a/src/chrome/content/network-settings.js b/src/chrome/content/network-settings.js
index e4ebeaa..2382ea6 100644
--- a/src/chrome/content/network-settings.js
+++ b/src/chrome/content/network-settings.js
@@ -15,6 +15,10 @@ XPCOMUtils.defineLazyModuleGetter(this, "TorLauncherUtil",
XPCOMUtils.defineLazyModuleGetter(this, "TorLauncherLogger",
"resource://torlauncher/modules/tl-logger.jsm");
+const kPrefPromptForLocale = "extensions.torlauncher.prompt_for_locale";
+const kPrefLocale = "general.useragent.locale";
+const kPrefMatchOSLocale = "intl.locale.matchOS";
+
const kPrefDefaultBridgeRecommendedType =
"extensions.torlauncher.default_bridge_recommended_type";
const kPrefDefaultBridgeType = "extensions.torlauncher.default_bridge_type";
@@ -31,6 +35,7 @@ const kTorLogHasWarnOrErrTopic = "TorLogHasWarnOrErr";
const kWizardProxyRadioGroup = "proxyRadioGroup";
const kWizardUseBridgesRadioGroup = "useBridgesRadioGroup";
+const kLocaleList = "localeList";
const kUseProxyCheckbox = "useProxy";
const kProxyTypeMenulist = "proxyType";
const kProxyAddr = "proxyAddr";
@@ -58,29 +63,78 @@ const kTorConfKeyBridgeList = "Bridge";
var gProtocolSvc = null;
var gTorProcessService = null;
var gObsService = null;
+var gHasQuitButton = false;
var gIsInitialBootstrap = false;
var gIsBootstrapComplete = false;
var gRestoreAfterHelpPanelID = null;
var gActiveTopics = []; // Topics for which an observer is currently installed.
-function initDialog()
+function initDialogCommon(aHasQuitButton)
{
- var isWindows = TorLauncherUtil.isWindows;
+ gHasQuitButton = aHasQuitButton;
+
+ gObsService = Cc["@mozilla.org/observer-service;1"]
+ .getService(Ci.nsIObserverService);
+
+ let isWindows = TorLauncherUtil.isWindows;
if (isWindows)
document.documentElement.setAttribute("class", "os-windows");
else if (TorLauncherUtil.isMac)
document.documentElement.setAttribute("class", "os-mac");
- var forAssistance = document.getElementById("forAssistance");
+ let forAssistance = document.getElementById("forAssistance");
if (forAssistance)
{
forAssistance.textContent = TorLauncherUtil.getFormattedLocalizedString(
"forAssistance", [kSupportAddr], 1);
}
- var cancelBtn = document.documentElement.getButton("cancel");
+ if (aHasQuitButton)
+ {
+ let cancelBtn = document.documentElement.getButton("cancel");
+ if (cancelBtn)
+ {
+ let quitKey = isWindows ? "quit_win" : "quit";
+ cancelBtn.label = TorLauncherUtil.getLocalizedString(quitKey);
+ }
+ }
+
+ let wizardElem = getWizard();
+ let haveWizard = (wizardElem != null);
+ if (haveWizard)
+ {
+ // Hide the Tor Browser logo and associated separator element if the
+ // TOR_HIDE_BROWSER_LOGO environment variable is set.
+ let env = Cc["@mozilla.org/process/environment;1"]
+ .getService(Ci.nsIEnvironment);
+ if (env.exists("TOR_HIDE_BROWSER_LOGO"))
+ wizardElem.setAttribute("tor_hide_browser_logo", true);
+ }
+}
+
+
+function resizeDialogToFitContent()
+{
+ // Resize this window to fit content. sizeToContent() alone will not do
+ // the job (it has many limitations and it is buggy).
+ sizeToContent();
+ let w = maxWidthOfContent();
+ if (w)
+ {
+ let windowFrameWidth = window.outerWidth - window.innerWidth;
+ w += windowFrameWidth;
+
+ if (w > window.outerWidth)
+ window.resizeTo(w, window.outerHeight);
+ }
+}
+
+
+function initDialog()
+{
gIsInitialBootstrap = window.arguments[0];
+ initDialogCommon(gIsInitialBootstrap);
var startAtPanel;
if (window.arguments.length > 1)
@@ -88,12 +142,6 @@ function initDialog()
if (gIsInitialBootstrap)
{
- if (cancelBtn)
- {
- var quitKey = isWindows ? "quit_win" : "quit";
- cancelBtn.label = TorLauncherUtil.getLocalizedString(quitKey);
- }
-
var okBtn = document.documentElement.getButton("accept");
if (okBtn)
okBtn.label = TorLauncherUtil.getLocalizedString("connect");
@@ -115,25 +163,16 @@ function initDialog()
}
catch (e) { dump(e + "\n"); }
- gObsService = Cc["@mozilla.org/observer-service;1"]
- .getService(Ci.nsIObserverService);
-
var wizardElem = getWizard();
var haveWizard = (wizardElem != null);
if (haveWizard)
{
- // Hide the Tor Browser logo and associated separator element if the
- // TOR_HIDE_BROWSER_LOGO environment variable is set.
- let env = Cc["@mozilla.org/process/environment;1"]
- .getService(Ci.nsIEnvironment);
- if (env.exists("TOR_HIDE_BROWSER_LOGO"))
- wizardElem.setAttribute("tor_hide_browser_logo", true);
-
// Set "Copy Tor Log" label and move it after the Quit (cancel) button.
var copyLogBtn = document.documentElement.getButton("extra2");
if (copyLogBtn)
{
copyLogBtn.label = wizardElem.getAttribute("buttonlabelextra2");
+ var cancelBtn = document.documentElement.getButton("cancel");
if (cancelBtn && TorLauncherUtil.isMac)
cancelBtn.parentNode.insertBefore(copyLogBtn, cancelBtn.nextSibling);
}
@@ -191,20 +230,44 @@ function initDialog()
showPanel();
}
- // Resize this window to fit content. sizeToContent() alone will not do
- // the job (it has many limitations and it is buggy).
- sizeToContent();
- let w = maxWidthOfContent();
- if (w)
+ resizeDialogToFitContent();
+
+ TorLauncherLogger.log(2, "initDialog done");
+}
+
+
+function initLocaleDialog()
+{
+ initDialogCommon(true);
+
+ // Replace the finish button's label ("Done") with the next button's
+ // label ("Next" or "Continue").
+ let nextBtn = document.documentElement.getButton("next");
+ let doneBtn = document.documentElement.getButton("finish");
+ if (nextBtn && doneBtn)
+ doneBtn.label = nextBtn.label;
+
+ // Select the current language by default.
+ try
{
- let windowFrameWidth = window.outerWidth - window.innerWidth;
- w += windowFrameWidth;
+ let chromeRegSvc = Cc["@mozilla.org/chrome/chrome-registry;1"]
+ .getService(Ci.nsIXULChromeRegistry);
+ let curLocale = chromeRegSvc.getSelectedLocale("global").toLowerCase();
+ let localeList = document.getElementById(kLocaleList);
+ for (let i = 0; i < localeList.itemCount; ++i)
+ {
+ let item = localeList.getItemAtIndex(i);
+ if (item.value.toLowerCase() == curLocale)
+ {
+ localeList.selectedIndex = i;
+ break;
+ }
+ }
+ } catch (e) {}
- if (w > window.outerWidth)
- window.resizeTo(w, window.outerHeight);
- }
+ resizeDialogToFitContent();
- TorLauncherLogger.log(2, "initDialog done");
+ TorLauncherLogger.log(2, "initLocaleDialog done");
}
@@ -243,7 +306,9 @@ function maxWidthOfContent()
function getWizard()
{
- var elem = document.getElementById("TorNetworkSettings");
+ let elem = document.getElementById("TorNetworkSettings");
+ if (!elem)
+ elem = document.getElementById("TorLauncherLocalePicker");
return (elem && (elem.tagName == "wizard")) ? elem : null;
}
@@ -677,6 +742,27 @@ function restoreButtonLabel(aID)
}
+function onLocaleListDoubleClick()
+{
+ getWizard().advance();
+}
+
+
+function setLocale()
+{
+ let locale = getElemValue(kLocaleList, "en-US");
+ if (TorLauncherUtil.isMac && ("ja" == locale))
+ locale = "ja-JP-mac";
+ TorLauncherUtil.setCharPref(kPrefLocale, locale);
+ TorLauncherUtil.setBoolPref(kPrefPromptForLocale, false);
+ TorLauncherUtil.setBoolPref(kPrefMatchOSLocale, false);
+
+ // Clear cached strings so the new locale takes effect.
+ TorLauncherUtil.flushLocalizedStringCache();
+ gObsService.notifyObservers(null, "chrome-flush-caches", null);
+}
+
+
function onProxyTypeChange()
{
var proxyType = getElemValue(kProxyTypeMenulist, null);
@@ -707,11 +793,9 @@ function onCancel()
return false;
}
- if (gIsInitialBootstrap) try
+ if (gHasQuitButton) try
{
- var obsSvc = Cc["@mozilla.org/observer-service;1"]
- .getService(Ci.nsIObserverService);
- obsSvc.notifyObservers(null, "TorUserRequestedQuit", null);
+ gObsService.notifyObservers(null, "TorUserRequestedQuit", null);
} catch (e) {}
return true;
@@ -1389,6 +1473,7 @@ function setElemValue(aID, aValue)
}
// fallthru
case "menulist":
+ case "listbox":
elem.value = (val) ? val : "";
break;
}
@@ -1435,6 +1520,7 @@ function getElemValue(aID, aDefaultValue)
break;
case "textbox":
case "menulist":
+ case "listbox":
rv = elem.value;
break;
}
diff --git a/src/chrome/locale/en/network-settings.dtd b/src/chrome/locale/en/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/en/network-settings.dtd
+++ b/src/chrome/locale/en/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/skin/network-settings.css b/src/chrome/skin/network-settings.css
index 6e173c3..610ab26 100644
--- a/src/chrome/skin/network-settings.css
+++ b/src/chrome/skin/network-settings.css
@@ -99,6 +99,11 @@ wizard[tor_hide_browser_logo="true"] .tbb-logo-separator {
display: none;
}
+wizard#TorLauncherLocalePicker button[dlgtype="back"],
+wizard#TorLauncherLocalePicker button[dlgtype="next"] {
+ display: none;
+}
+
.tbb-wizardpage-title {
font-size: 115%;
font-weight: bold;
diff --git a/src/components/tl-process.js b/src/components/tl-process.js
index 216c962..5113203 100644
--- a/src/components/tl-process.js
+++ b/src/components/tl-process.js
@@ -425,6 +425,17 @@ TorProcessService.prototype =
_controlTor: function()
{
+ // Optionally prompt for locale. Blocks until dialog is closed.
+ if (TorLauncherUtil.shouldPromptForLocale)
+ {
+ this._openLocalePicker();
+ if (this.mQuitSoon)
+ {
+ this._quitApp();
+ return;
+ }
+ }
+
try
{
this._monitorTorProcessStartup();
@@ -446,7 +457,7 @@ TorProcessService.prototype =
if (this.mObsSvc)
this.mObsSvc.notifyObservers(null, "TorOpenProgressDialog", null);
}
- else
+ else if (!this.TorIsBootstrapDone)
{
this._openProgressDialog();
@@ -457,21 +468,8 @@ TorProcessService.prototype =
}
// If the user pressed "Quit" within settings/progress, exit.
- if (this.mQuitSoon) try
- {
- this.mQuitSoon = false;
-
- var asSvc = Cc["@mozilla.org/toolkit/app-startup;1"]
- .getService(Ci.nsIAppStartup);
- var flags = asSvc.eAttemptQuit;
- if (this.mRestartWithQuit)
- flags |= asSvc.eRestart;
- asSvc.quit(flags);
- }
- catch (e)
- {
- TorLauncherLogger.safelog(4, "unable to quit browser", e);
- }
+ if (this.mQuitSoon)
+ this._quitApp();
}
catch (e)
{
@@ -482,6 +480,25 @@ TorProcessService.prototype =
}
}, // controlTor()
+ _quitApp: function()
+ {
+ try
+ {
+ this.mQuitSoon = false;
+
+ var asSvc = Cc["@mozilla.org/toolkit/app-startup;1"]
+ .getService(Ci.nsIAppStartup);
+ var flags = asSvc.eAttemptQuit;
+ if (this.mRestartWithQuit)
+ flags |= asSvc.eRestart;
+ asSvc.quit(flags);
+ }
+ catch (e)
+ {
+ TorLauncherLogger.safelog(4, "unable to quit", e);
+ }
+ },
+
_monitorTorProcessStartup: function()
{
this.mControlConnDelayMS = this.kInitialControlConnDelayMS;
@@ -579,6 +596,16 @@ TorProcessService.prototype =
TorLauncherUtil.showSaveSettingsAlert(null, errObj.details);
},
+ _openLocalePicker: function()
+ {
+ const kLocalePickerURL = "chrome://torlauncher/content/localePicker.xul";
+
+ var wwSvc = Cc["@mozilla.org/embedcomp/window-watcher;1"]
+ .getService(Ci.nsIWindowWatcher);
+ var winFeatures = "chrome,dialog=yes,modal,all";
+ wwSvc.openWindow(null, kLocalePickerURL, "_blank", winFeatures, undefined);
+ },
+
// If this window is already open, put up "starting tor" panel, focus it and return.
// Otherwise, open the network settings dialog and block until it is closed.
_openNetworkSettings: function(aIsInitialBootstrap, aStartAtWizardPanel)
diff --git a/src/defaults/preferences/prefs.js b/src/defaults/preferences/prefs.js
index 34bf1a7..3057f6a 100644
--- a/src/defaults/preferences/prefs.js
+++ b/src/defaults/preferences/prefs.js
@@ -1,3 +1,7 @@
+// When presenting the setup wizard, first prompt for locale.
+pref("intl.locale.matchOS", true);
+pref("extensions.torlauncher.prompt_for_locale", true);
+
pref("extensions.torlauncher.loglevel", 4); // 1=verbose, 2=debug, 3=info, 4=note, 5=warn
pref("extensions.torlauncher.logmethod", 1); // 0=stdout, 1=errorconsole, 2=debuglog
pref("extensions.torlauncher.max_tor_log_entries", 1000);
diff --git a/src/modules/tl-util.jsm b/src/modules/tl-util.jsm
index ac680a8..812b32b 100644
--- a/src/modules/tl-util.jsm
+++ b/src/modules/tl-util.jsm
@@ -112,6 +112,10 @@ let TorLauncherUtil = // Public
},
// Localized Strings
+ flushLocalizedStringCache: function()
+ {
+ TLUtilInternal.mStringBundle = undefined;
+ },
// "torlauncher." is prepended to aStringName.
getLocalizedString: function(aStringName)
@@ -258,6 +262,22 @@ let TorLauncherUtil = // Public
return this.getBoolPref(kPrefStartTor, true);
},
+ get shouldPromptForLocale()
+ {
+ const kPrefPromptForLocale = "extensions.torlauncher.prompt_for_locale";
+ try
+ {
+ const kEnvSkipLocalePrompt = "TOR_SKIP_LOCALE_PROMPT";
+
+ var env = Cc["@mozilla.org/process/environment;1"]
+ .getService(Ci.nsIEnvironment);
+ if (env.exists(kEnvSkipLocalePrompt))
+ return ("1" != env.get(kEnvSkipLocalePrompt));
+ } catch(e) {}
+
+ return this.getBoolPref(kPrefPromptForLocale, true);
+ },
+
get shouldShowNetworkSettings()
{
const kPrefPromptAtStartup = "extensions.torlauncher.prompt_at_startup";
1
0

[torbutton/maint-1.9.3] Revert "remove obsolete files, re Bug 1506 P0"
by gk@torproject.org 13 Oct '15
by gk@torproject.org 13 Oct '15
13 Oct '15
commit 9f37464b6f446feec96147b32b3e2f2537f93636
Author: Yan Zhu <yan(a)mit.edu>
Date: Tue Jul 29 17:08:36 2014 -0700
Revert "remove obsolete files, re Bug 1506 P0"
This reverts commit 80b06cdf422238f5eece38a1974d31e6e7be7a17.
---
src/chrome.manifest | 12 +++
src/components/tor-protocol.js | 103 ++++++++++++++++++++++
src/components/torRefSpoofer.js | 125 +++++++++++++++++++++++++++
src/components/tors-protocol.js | 103 ++++++++++++++++++++++
src/components/window-mapper.js | 180 +++++++++++++++++++++++++++++++++++++++
5 files changed, 523 insertions(+)
diff --git a/src/chrome.manifest b/src/chrome.manifest
index 8323e66..ddf582e 100644
--- a/src/chrome.manifest
+++ b/src/chrome.manifest
@@ -159,6 +159,18 @@ contract @torproject.org/torbutton-logger;1 {f36d72c9-9718-4134-b550-e109638331d
component {e33fd6d4-270f-475f-a96f-ff3140279f68} components/domain-isolator.js
contract @torproject.org/domain-isolator;1 {e33fd6d4-270f-475f-a96f-ff3140279f68}
+# component {b985e49c-12cb-4f29-9d14-b62603332ec4} components/window-mapper.js
+# contract @torproject.org/content-window-mapper;1 {b985e49c-12cb-4f29-9d14-b62603332ec4}
+
+# component {65be2be0-ceb4-44c2-91a5-9c75c53430bf} components/torRefSpoofer.js
+# contract @torproject.org/torRefSpoofer;1 {65be2be0-ceb4-44c2-91a5-9c75c53430bf}
+
+# component {52183e20-4d4b-11de-8a39-0800200c9a66} components/tor-protocol.js
+# contract @mozilla.org/network/protocol;1?name=tor {52183e20-4d4b-11de-8a39-0800200c9a66}
+
+# component {a5a4bc50-5e8d-11de-8a39-0800200c9a66} components/tors-protocol.js
+# contract @mozilla.org/network/protocol;1?name=tors {a5a4bc50-5e8d-11de-8a39-0800200c9a66}
+
category profile-after-change CookieJarSelector @torproject.org/cookie-jar-selector;1
category profile-after-change StartupObserver @torproject.org/startup-observer;1
category profile-after-change DomainIsolator @torproject.org/domain-isolator;1
diff --git a/src/components/tor-protocol.js b/src/components/tor-protocol.js
new file mode 100644
index 0000000..4ba5cf4
--- /dev/null
+++ b/src/components/tor-protocol.js
@@ -0,0 +1,103 @@
+// Bug 1506 P0: This code is toggle-mode code and is unused. Kill it.
+
+// Test protocol related
+const kSCHEME = "tor";
+const kPROTOCOL_NAME = "tor";
+const kPROTOCOL_CONTRACTID = "@mozilla.org/network/protocol;1?name=" + kSCHEME;
+const kPROTOCOL_CID = Components.ID("52183e20-4d4b-11de-8a39-0800200c9a66");
+
+// Mozilla defined
+const kSIMPLEURI_CONTRACTID = "@mozilla.org/network/simple-uri;1";
+const kIOSERVICE_CONTRACTID = "@mozilla.org/network/io-service;1";
+const nsISupports = Components.interfaces.nsISupports;
+const nsIIOService = Components.interfaces.nsIIOService;
+const nsIProtocolHandler = Components.interfaces.nsIProtocolHandler;
+const nsIURI = Components.interfaces.nsIURI;
+
+function Protocol()
+{
+}
+
+Protocol.prototype =
+{
+ QueryInterface: function(iid)
+ {
+ if (!iid.equals(nsIProtocolHandler) &&
+ !iid.equals(nsISupports))
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ return this;
+ },
+
+ scheme: kSCHEME,
+ defaultPort: -1,
+ protocolFlags: nsIProtocolHandler.URI_NORELATIVE |
+ nsIProtocolHandler.URI_NOAUTH,
+
+ allowPort: function(port, scheme)
+ {
+ return false;
+ },
+
+ newURI: function(spec, charset, baseURI)
+ {
+ const nsIStandardURL = Components.interfaces.nsIStandardURL;
+ var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(nsIStandardURL);
+ uri.init(nsIStandardURL.URLTYPE_STANDARD, 80, spec, charset, baseURI);
+
+ return uri.QueryInterface(Components.interfaces.nsIURI);
+
+ },
+
+ newChannel: function(aURI)
+ {
+ var prefs = Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Components.interfaces.nsIPrefBranch);
+ if (!prefs.getBoolPref("extensions.torbutton.tor_urls")) {
+ throw Components.results.NS_ERROR_UNKNOWN_PROTOCOL;
+ }
+
+ /*The protocol has been called, therefore we want to enable tor, wait for it to activate return the new channel with the scheme of http.*/
+ var ios = Components.classes[kIOSERVICE_CONTRACTID].getService(nsIIOService);
+ var prompt = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
+ .getService(Components.interfaces.nsIPromptService);
+ var tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
+ var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
+ .getService(Components.interfaces.nsIWindowMediator);
+ var chrome = wm.getMostRecentWindow("navigator:browser");
+ if (!ios.allowPort(aURI.port, aURI.scheme))
+ throw Components.results.NS_ERROR_FAILURE;
+
+ if (!tor_enabled)
+ {
+ var result = prompt.confirm(null, "Allow Tor toggle?", "Do you want to enable Tor and navigate to " + aURI.spec + "?");
+ if (!result)
+ throw Components.results.NS_ERROR_UNEXPECTED;
+ chrome.torbutton_enable_tor(true);
+ }
+
+ //if tor is turned on then, else we should throw exception of some sort.
+ tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
+ if (!tor_enabled)
+ throw Components.results.NS_ERROR_UNEXPECTED;
+ else
+ {
+ aURI.scheme = "http";
+ return ios.newChannelFromURI(aURI);
+ }
+ },
+
+ // method of nsIClassInfo
+ classDescription: "Tor protocol handler",
+ classID: kPROTOCOL_CID,
+ contractID: kPROTOCOL_CONTRACTID,
+}
+
+/**
+* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
+* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
+*/
+Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+if (XPCOMUtils.generateNSGetFactory)
+ var NSGetFactory = XPCOMUtils.generateNSGetFactory([Protocol]);
+else
+ var NSGetModule = XPCOMUtils.generateNSGetModule([Protocol]);
diff --git a/src/components/torRefSpoofer.js b/src/components/torRefSpoofer.js
new file mode 100644
index 0000000..8b50075
--- /dev/null
+++ b/src/components/torRefSpoofer.js
@@ -0,0 +1,125 @@
+// Bug 1506 P0: I don't really believe referers matter in the grand scheme.
+// Kill this code.
+
+const kMODULE_CID = Components.ID("65be2be0-ceb4-44c2-91a5-9c75c53430bf");
+const kMODULE_CONTRACTID = "@torproject.org/torRefSpoofer;1";
+
+function RefSpoofer() {
+ this.logger = Components.classes["@torproject.org/torbutton-logger;1"].getService(Components.interfaces.nsISupports).wrappedJSObject;
+ this.logger.log(3, "RefSpoof component created");
+ this.specials = /[-[\]{}()*+?.,\\^$|#\s]/g;
+}
+
+
+RefSpoofer.prototype = {
+ observe: function(subject, topic, data)
+ {
+ if (topic == "http-on-modify-request") {
+ var prefs = Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Components.interfaces.nsIPrefBranch);
+ var tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
+
+ if (!tor_enabled)
+ return;
+
+ subject.QueryInterface(Components.interfaces.nsIHttpChannel);
+ this.onModifyRequest(subject);
+ return;
+ }
+ if (topic == "profile-after-change") {
+ this.logger.log(3, "RefSpoof got profile-after-change");
+ var os = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
+ os.addObserver(this, "http-on-modify-request", false);
+ return;
+ }
+ },
+ onModifyRequest: function(oHttpChannel)
+ {
+ var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
+
+ var spoofmode = prefs.getIntPref("extensions.torbutton.refererspoof");
+
+ var ios = Components.classes["@mozilla.org/network/io-service;1"]
+ .getService(Components.interfaces.nsIIOService);
+
+ if (spoofmode == 0)
+ try {
+ oHttpChannel.QueryInterface(Components.interfaces.nsIChannel);
+ var referer;
+ try{
+ referer = oHttpChannel.getRequestHeader("Referer");
+ referer = ios.newURI(referer,null,null);//make a nsIURI object for referer
+ }catch(referr) {
+ return;//no referer available or invalid uri
+ }
+ var requestURI = oHttpChannel.URI; //request nsIURI object
+ var destHost = referer.host; //referer host w/o scheme
+ var srcHost = oHttpChannel.URI.host;//request host without scheme
+
+ // match is not what we want, unless we escape dots:
+ var destHostMatch = destHost.replace(this.specials, "\\$&");
+ var srcHostMatch = srcHost.replace(this.specials, "\\$&");
+
+ // FIXME: This isn't exactly bulletproof security here, but it still
+ // may need to be more lenient not to break sites...
+ //
+ // If we suspect issues, we can try doing the following first:
+ // 1. Strip off all TLD suffixes, up to but not including '.'
+ // 2. If more than one domain part is till left, strip off prefix
+
+ //if they're in the same domain(if we can tell) or have the same host, keep the referer
+ if (srcHost.split(".").length >= destHost.split(".").length
+ && srcHost.match(destHostMatch)) // dest is a substring of src
+ return;
+ else if (destHost.split(".").length >= srcHost.split(".").length
+ && destHost.match(srcHostMatch)) // src is a substring of dest
+ return;
+ //if they do not have the same host
+ this.adjustRef(oHttpChannel, requestURI.scheme + "://" + requestURI.host);
+ this.logger.safe_log(3, "Adjusting Referer, ",
+ "from " + destHost + " to " + requestURI.host);
+ }
+ catch (ex) {
+ this.logger.log(5, "RefSpoof onModifyRequest: " +ex);
+ }
+ else if (spoofmode == 2)
+ this.adjustRef(oHttpChannel, "");
+ },
+ adjustRef: function(oChannel, sRef)
+ {
+ try {
+ if (oChannel.referrer)
+ {
+ oChannel.referrer.spec = sRef;
+ oChannel.setRequestHeader("Referer", sRef, false);
+ }
+ return true;
+ }
+ catch (ex) {
+ this.logger.log(5, "RefSpoof adjustRef: " +ex);
+ }
+ return false;
+ },
+ QueryInterface: function(iid)
+ {
+ if (!iid.equals(Components.interfaces.nsISupports) &&
+ !iid.equals(Components.interfaces.nsIObserver) &&
+ !iid.equals(Components.interfaces.nsISupportsWeakReference))
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ return this;
+ },
+ _xpcom_categories: [{category:"profile-after-change"}],
+ classID: kMODULE_CID,
+ contractID: kMODULE_CONTRACTID,
+ classDescription: "Tor Ref Spoofer"
+};
+
+/**
+* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
+* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
+*/
+Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+if (XPCOMUtils.generateNSGetFactory)
+ var NSGetFactory = XPCOMUtils.generateNSGetFactory([RefSpoofer]);
+else
+ var NSGetModule = XPCOMUtils.generateNSGetModule([RefSpoofer]);
diff --git a/src/components/tors-protocol.js b/src/components/tors-protocol.js
new file mode 100644
index 0000000..f075e43
--- /dev/null
+++ b/src/components/tors-protocol.js
@@ -0,0 +1,103 @@
+// Bug 1506 P0: This code is toggle-mode code and is unused. Kill it.
+
+// Test protocol related
+const kSCHEME = "tors";
+const kPROTOCOL_NAME = "tors";
+const kPROTOCOL_CONTRACTID = "@mozilla.org/network/protocol;1?name=" + kSCHEME;
+const kPROTOCOL_CID = Components.ID("a5a4bc50-5e8d-11de-8a39-0800200c9a66");
+
+// Mozilla defined
+const kSIMPLEURI_CONTRACTID = "@mozilla.org/network/simple-uri;1";
+const kIOSERVICE_CONTRACTID = "@mozilla.org/network/io-service;1";
+const nsISupports = Components.interfaces.nsISupports;
+const nsIIOService = Components.interfaces.nsIIOService;
+const nsIProtocolHandler = Components.interfaces.nsIProtocolHandler;
+const nsIURI = Components.interfaces.nsIURI;
+
+function Protocol()
+{
+}
+
+Protocol.prototype =
+{
+ QueryInterface: function(iid)
+ {
+ if (!iid.equals(nsIProtocolHandler) &&
+ !iid.equals(nsISupports))
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ return this;
+ },
+
+ scheme: kSCHEME,
+ defaultPort: -1,
+ protocolFlags: nsIProtocolHandler.URI_NORELATIVE |
+ nsIProtocolHandler.URI_NOAUTH,
+
+ allowPort: function(port, scheme)
+ {
+ return false;
+ },
+
+ newURI: function(spec, charset, baseURI)
+ {
+ const nsIStandardURL = Components.interfaces.nsIStandardURL;
+ var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(nsIStandardURL);
+ uri.init(nsIStandardURL.URLTYPE_STANDARD, 433, spec, charset, baseURI);
+
+ return uri.QueryInterface(Components.interfaces.nsIURI);
+
+ },
+
+ newChannel: function(aURI)
+ {
+ var prefs = Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Components.interfaces.nsIPrefBranch);
+ if (!prefs.getBoolPref("extensions.torbutton.tor_urls")) {
+ throw Components.results.NS_ERROR_UNKNOWN_PROTOCOL;
+ }
+
+ /*The protocol has been called, therefore we want to enable tor, wait for it to activate return the new channel with the scheme of https.*/
+ var ios = Components.classes[kIOSERVICE_CONTRACTID].getService(nsIIOService);
+ var prompt = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
+ .getService(Components.interfaces.nsIPromptService);
+ var tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
+ var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
+ .getService(Components.interfaces.nsIWindowMediator);
+ var chrome = wm.getMostRecentWindow("navigator:browser");
+ if (!ios.allowPort(aURI.port, aURI.scheme))
+ throw Components.results.NS_ERROR_FAILURE;
+
+ if (!tor_enabled)
+ {
+ var result = prompt.confirm(null, "Allow Tor toggle?", "Do you want to enable Tor and navigate to " + aURI.spec + "?");
+ if (!result)
+ throw Components.results.NS_ERROR_UNEXPECTED;
+ chrome.torbutton_enable_tor(true);
+ }
+
+ //if tor is turned on then, else we should throw exception of some sort.
+ tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
+ if (!tor_enabled)
+ throw Components.results.NS_ERROR_UNEXPECTED;
+ else
+ {
+ aURI.scheme = "https";
+ return ios.newChannelFromURI(aURI);
+ }
+ },
+
+ // method of nsIClassInfo
+ classDescription: "Tor protocol handler",
+ classID: kPROTOCOL_CID,
+ contractID: kPROTOCOL_CONTRACTID
+}
+
+/**
+* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
+* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
+*/
+Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+if (XPCOMUtils.generateNSGetFactory)
+ var NSGetFactory = XPCOMUtils.generateNSGetFactory([Protocol]);
+else
+ var NSGetModule = XPCOMUtils.generateNSGetModule([Protocol]);
diff --git a/src/components/window-mapper.js b/src/components/window-mapper.js
new file mode 100644
index 0000000..a04f12b
--- /dev/null
+++ b/src/components/window-mapper.js
@@ -0,0 +1,180 @@
+// Bug 1506 P0: This code is toggle-mode code and is unused. Kill it.
+
+/*************************************************************************
+ * ContentWindowMapper (JavaScript XPCOM component)
+ *
+ * Allows you to find a tabbrowser tab for a top level content window.
+ *
+ *************************************************************************/
+
+// Module specific constants
+const kMODULE_NAME = "Content Window Mapper";
+const kMODULE_CONTRACTID = "@torproject.org/content-window-mapper;1";
+const kMODULE_CID = Components.ID("b985e49c-12cb-4f29-9d14-b62603332ec4");
+
+const Cr = Components.results;
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const EXPIRATION_TIME = 60000; // 60 seconds
+
+const nsISupports = Components.interfaces.nsISupports;
+const nsIClassInfo = Components.interfaces.nsIClassInfo;
+const nsIComponentRegistrar = Components.interfaces.nsIComponentRegistrar;
+const nsIObserverService = Components.interfaces.nsIObserverService;
+
+function ContentWindowMapper() {
+ this.cache = {};
+
+ this.logger = Components.classes["@torproject.org/torbutton-logger;1"]
+ .getService(Components.interfaces.nsISupports).wrappedJSObject;
+ this.logger.log(3, "Component Load 2: Content window mapper online: "+kMODULE_CONTRACTID);
+ this.last_expired = Date.now();
+ // This JSObject is exported directly to chrome
+ this.wrappedJSObject = this;
+}
+
+ContentWindowMapper.prototype =
+{
+ QueryInterface: function(iid)
+ {
+ if (!iid.equals(nsIClassInfo) &&
+ !iid.equals(nsISupports)) {
+ Components.returnCode = Cr.NS_ERROR_NO_INTERFACE;
+ return null;
+ }
+ return this;
+ },
+
+ wrappedJSObject: null, // Initialized by constructor
+
+ // make this an nsIClassInfo object
+ flags: nsIClassInfo.DOM_OBJECT,
+
+ // method of nsIClassInfo
+ classDescription: kMODULE_NAME,
+ classID: kMODULE_CID,
+ contractID: kMODULE_CONTRACTID,
+
+ // method of nsIClassInfo
+ getInterfaces: function(count) {
+ var interfaceList = [nsIClassInfo];
+ count.value = interfaceList.length;
+ return interfaceList;
+ },
+
+ // method of nsIClassInfo
+ getHelperForLanguage: function(count) { return null; },
+
+ checkCache: function(topContentWindow) {
+ if(typeof(topContentWindow.ghetto_guid) != "undefined"
+ && typeof(this.cache[topContentWindow.ghetto_guid]) != "undefined") {
+ return this.cache[topContentWindow.ghetto_guid].browser;
+ }
+
+ return null;
+ },
+
+ addCache: function(topContentWindow, browser) {
+ var insertion = new Object();
+ insertion.browser = browser;
+ insertion.time = Date.now();
+ topContentWindow.ghetto_guid = Math.random().toString()+Math.random().toString();
+ this.cache[topContentWindow.ghetto_guid] = insertion;
+ },
+
+ expireOldCache: function() {
+ var now = Date.now();
+
+ if((now - this.last_expired) < EXPIRATION_TIME) {
+ this.logger.log(3, "Early mapper check.");
+ return;
+ }
+
+ var delkeys = [];
+ for(var elem in this.cache) {
+ if((now - this.cache[elem].time) > EXPIRATION_TIME) {
+ this.logger.log(2, "Deleting cached element: "+elem.location);
+ delkeys.push(elem);
+ }
+ }
+
+ for(var k in delkeys) {
+ delete this.cache[k];
+ }
+
+ this.last_expired = now;
+ },
+
+ getBrowserForContentWindow: function(topContentWindow) {
+ if(topContentWindow instanceof Components.interfaces.nsIDOMChromeWindow) {
+ if(topContentWindow.browserDOMWindow) {
+ var browser = topContentWindow.getBrowser().selectedTab.linkedBrowser;
+ this.logger.log(3, "Chrome browser at "
+ +browser.contentWindow.location+" found for: "
+ +topContentWindow.location);
+ return browser;
+ }
+ // Allow strange chrome to go through..
+ this.logger.log(3, "Odd chome window"+topContentWindow.location);
+ return topContentWindow;
+ }
+
+ var cached = this.checkCache(topContentWindow);
+ if(cached != null) {
+ return cached;
+ }
+
+ try {
+ this.logger.log(3, "Cache failed for: "+topContentWindow.location);
+ } catch(e) {
+ this.logger.log(3, "Cache failed for unknown location?");
+ }
+
+ var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
+ .getService(Components.interfaces.nsIWindowMediator);
+ var enumerator = wm.getEnumerator("navigator:browser");
+ while(enumerator.hasMoreElements()) {
+ var win = enumerator.getNext();
+ var browser = win.getBrowser();
+ for (var i = 0; i < browser.browsers.length; ++i) {
+ var b = browser.browsers[i];
+ if (b && b.contentWindow == topContentWindow) {
+ this.addCache(topContentWindow, b);
+ return b;
+ }
+ }
+ }
+
+ // SpeedDial, google notebook and other extensions can create their
+ // own "<browser>" tag elements. AFAICT, there is no way to enumerate
+ // these... Just punt and return the most recently used browser
+ try {
+ if(topContentWindow.name != "speedDialLoaderBrowser") {
+ if(topContentWindow && topContentWindow.location)
+ this.logger.safe_log(4, "No browser found: ", topContentWindow.location);
+ else
+ this.logger.safe_log(4, "No browser found: ", topContentWindow.name);
+ } else {
+ this.logger.log(3, "SpeedDial browser found: "+topContentWindow.name);
+ }
+ } catch(e) {
+ this.logger.log(4, "No browser found.");
+ }
+
+ // Punt..
+ var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].
+ getService(Components.interfaces.nsIWindowMediator);
+ var recentWindow = wm.getMostRecentWindow("navigator:browser");
+ return recentWindow ? recentWindow.getBrowser().selectedTab.linkedBrowser : null;
+ }
+}
+
+/**
+* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
+* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
+*/
+Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+if (XPCOMUtils.generateNSGetFactory)
+ var NSGetFactory = XPCOMUtils.generateNSGetFactory([ContentWindowMapper]);
+else
+ var NSGetModule = XPCOMUtils.generateNSGetModule([ContentWindowMapper]);
1
0

[torbutton/maint-1.9.3] Bug 9263: Spoof referer when leaving a .onion domain
by gk@torproject.org 13 Oct '15
by gk@torproject.org 13 Oct '15
13 Oct '15
commit d5234a3e37fb717d5c2f65ef039cd7872cbd1de3
Author: Yan Zhu <yan(a)mit.edu>
Date: Tue Jul 29 17:36:27 2014 -0700
Bug 9263: Spoof referer when leaving a .onion domain
---
makexpi.sh | 2 +-
src/chrome.manifest | 15 +--
src/components/tor-protocol.js | 103 ------------------
src/components/torRefSpoofer.js | 103 ++++++------------
src/components/tors-protocol.js | 103 ------------------
src/components/window-mapper.js | 180 -------------------------------
src/defaults/preferences/preferences.js | 1 -
7 files changed, 39 insertions(+), 468 deletions(-)
diff --git a/makexpi.sh b/makexpi.sh
index 4d01e2c..243fbd6 100755
--- a/makexpi.sh
+++ b/makexpi.sh
@@ -21,7 +21,7 @@ echo ---------- create $APP_NAME.xpi ----------
mkdir -p pkg
cd src
echo zip -X -9r ../pkg/$XPI_NAME ./ -x "chrome/*" -x "*.diff" -x "*.svn/*"
-zip -X -9r ../pkg/$XPI_NAME ./ -x "*.svn/*" -x "*.diff" -x "components/torRefSpoofer.js" #-x "chrome/*"
+zip -X -9r ../pkg/$XPI_NAME ./ -x "*.svn/*" -x "*.diff" #-x "chrome/*"
#mv ../$APP_NAME.jar ./chrome
#zip -9m ../pkg/$XPI_NAME chrome/$APP_NAME.jar
cd ..
diff --git a/src/chrome.manifest b/src/chrome.manifest
index ddf582e..1d3efb4 100644
--- a/src/chrome.manifest
+++ b/src/chrome.manifest
@@ -159,18 +159,11 @@ contract @torproject.org/torbutton-logger;1 {f36d72c9-9718-4134-b550-e109638331d
component {e33fd6d4-270f-475f-a96f-ff3140279f68} components/domain-isolator.js
contract @torproject.org/domain-isolator;1 {e33fd6d4-270f-475f-a96f-ff3140279f68}
-# component {b985e49c-12cb-4f29-9d14-b62603332ec4} components/window-mapper.js
-# contract @torproject.org/content-window-mapper;1 {b985e49c-12cb-4f29-9d14-b62603332ec4}
-
-# component {65be2be0-ceb4-44c2-91a5-9c75c53430bf} components/torRefSpoofer.js
-# contract @torproject.org/torRefSpoofer;1 {65be2be0-ceb4-44c2-91a5-9c75c53430bf}
-
-# component {52183e20-4d4b-11de-8a39-0800200c9a66} components/tor-protocol.js
-# contract @mozilla.org/network/protocol;1?name=tor {52183e20-4d4b-11de-8a39-0800200c9a66}
+category profile-after-change CookieJarSelector @torproject.org/cookie-jar-selector;1
-# component {a5a4bc50-5e8d-11de-8a39-0800200c9a66} components/tors-protocol.js
-# contract @mozilla.org/network/protocol;1?name=tors {a5a4bc50-5e8d-11de-8a39-0800200c9a66}
+component {65be2be0-ceb4-44c2-91a5-9c75c53430bf} components/torRefSpoofer.js
+contract @torproject.org/torRefSpoofer;1 {65be2be0-ceb4-44c2-91a5-9c75c53430bf}
-category profile-after-change CookieJarSelector @torproject.org/cookie-jar-selector;1
+category profile-after-change RefSpoofer @torproject.org/torRefSpoofer;1
category profile-after-change StartupObserver @torproject.org/startup-observer;1
category profile-after-change DomainIsolator @torproject.org/domain-isolator;1
diff --git a/src/components/tor-protocol.js b/src/components/tor-protocol.js
deleted file mode 100644
index 4ba5cf4..0000000
--- a/src/components/tor-protocol.js
+++ /dev/null
@@ -1,103 +0,0 @@
-// Bug 1506 P0: This code is toggle-mode code and is unused. Kill it.
-
-// Test protocol related
-const kSCHEME = "tor";
-const kPROTOCOL_NAME = "tor";
-const kPROTOCOL_CONTRACTID = "@mozilla.org/network/protocol;1?name=" + kSCHEME;
-const kPROTOCOL_CID = Components.ID("52183e20-4d4b-11de-8a39-0800200c9a66");
-
-// Mozilla defined
-const kSIMPLEURI_CONTRACTID = "@mozilla.org/network/simple-uri;1";
-const kIOSERVICE_CONTRACTID = "@mozilla.org/network/io-service;1";
-const nsISupports = Components.interfaces.nsISupports;
-const nsIIOService = Components.interfaces.nsIIOService;
-const nsIProtocolHandler = Components.interfaces.nsIProtocolHandler;
-const nsIURI = Components.interfaces.nsIURI;
-
-function Protocol()
-{
-}
-
-Protocol.prototype =
-{
- QueryInterface: function(iid)
- {
- if (!iid.equals(nsIProtocolHandler) &&
- !iid.equals(nsISupports))
- throw Components.results.NS_ERROR_NO_INTERFACE;
- return this;
- },
-
- scheme: kSCHEME,
- defaultPort: -1,
- protocolFlags: nsIProtocolHandler.URI_NORELATIVE |
- nsIProtocolHandler.URI_NOAUTH,
-
- allowPort: function(port, scheme)
- {
- return false;
- },
-
- newURI: function(spec, charset, baseURI)
- {
- const nsIStandardURL = Components.interfaces.nsIStandardURL;
- var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(nsIStandardURL);
- uri.init(nsIStandardURL.URLTYPE_STANDARD, 80, spec, charset, baseURI);
-
- return uri.QueryInterface(Components.interfaces.nsIURI);
-
- },
-
- newChannel: function(aURI)
- {
- var prefs = Components.classes["@mozilla.org/preferences-service;1"]
- .getService(Components.interfaces.nsIPrefBranch);
- if (!prefs.getBoolPref("extensions.torbutton.tor_urls")) {
- throw Components.results.NS_ERROR_UNKNOWN_PROTOCOL;
- }
-
- /*The protocol has been called, therefore we want to enable tor, wait for it to activate return the new channel with the scheme of http.*/
- var ios = Components.classes[kIOSERVICE_CONTRACTID].getService(nsIIOService);
- var prompt = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
- .getService(Components.interfaces.nsIPromptService);
- var tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
- var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
- .getService(Components.interfaces.nsIWindowMediator);
- var chrome = wm.getMostRecentWindow("navigator:browser");
- if (!ios.allowPort(aURI.port, aURI.scheme))
- throw Components.results.NS_ERROR_FAILURE;
-
- if (!tor_enabled)
- {
- var result = prompt.confirm(null, "Allow Tor toggle?", "Do you want to enable Tor and navigate to " + aURI.spec + "?");
- if (!result)
- throw Components.results.NS_ERROR_UNEXPECTED;
- chrome.torbutton_enable_tor(true);
- }
-
- //if tor is turned on then, else we should throw exception of some sort.
- tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
- if (!tor_enabled)
- throw Components.results.NS_ERROR_UNEXPECTED;
- else
- {
- aURI.scheme = "http";
- return ios.newChannelFromURI(aURI);
- }
- },
-
- // method of nsIClassInfo
- classDescription: "Tor protocol handler",
- classID: kPROTOCOL_CID,
- contractID: kPROTOCOL_CONTRACTID,
-}
-
-/**
-* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
-* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
-*/
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-if (XPCOMUtils.generateNSGetFactory)
- var NSGetFactory = XPCOMUtils.generateNSGetFactory([Protocol]);
-else
- var NSGetModule = XPCOMUtils.generateNSGetModule([Protocol]);
diff --git a/src/components/torRefSpoofer.js b/src/components/torRefSpoofer.js
index 8b50075..b69f8e0 100644
--- a/src/components/torRefSpoofer.js
+++ b/src/components/torRefSpoofer.js
@@ -1,89 +1,60 @@
-// Bug 1506 P0: I don't really believe referers matter in the grand scheme.
-// Kill this code.
+// Clear referer on cross-domain requests to/from Tor Hidden Services: #9623
+// ("Smart referer" previously spoofed referer on all cross-domain requests.)
const kMODULE_CID = Components.ID("65be2be0-ceb4-44c2-91a5-9c75c53430bf");
const kMODULE_CONTRACTID = "@torproject.org/torRefSpoofer;1";
function RefSpoofer() {
- this.logger = Components.classes["@torproject.org/torbutton-logger;1"].getService(Components.interfaces.nsISupports).wrappedJSObject;
- this.logger.log(3, "RefSpoof component created");
- this.specials = /[-[\]{}()*+?.,\\^$|#\s]/g;
+ this.logger = Components.classes["@torproject.org/torbutton-logger;1"].
+ getService(Components.interfaces.nsISupports).wrappedJSObject;
+ this.logger.log(3, "RefSpoof component created");
+ this.onionDomainRegex = new RegExp("\\.onion$", "i"); // THS hosts
+ this.thirdPartyUtil = Components.classes["@mozilla.org/thirdpartyutil;1"].
+ getService(Components.interfaces.mozIThirdPartyUtil);
+ this.ios = Components.classes["@mozilla.org/network/io-service;1"].
+ getService(Components.interfaces.nsIIOService);
}
-RefSpoofer.prototype = {
+RefSpoofer.prototype = {
observe: function(subject, topic, data)
{
if (topic == "http-on-modify-request") {
- var prefs = Components.classes["@mozilla.org/preferences-service;1"]
- .getService(Components.interfaces.nsIPrefBranch);
- var tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
-
- if (!tor_enabled)
- return;
-
subject.QueryInterface(Components.interfaces.nsIHttpChannel);
this.onModifyRequest(subject);
return;
}
if (topic == "profile-after-change") {
this.logger.log(3, "RefSpoof got profile-after-change");
- var os = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
+ var os = Components.classes["@mozilla.org/observer-service;1"].
+ getService(Components.interfaces.nsIObserverService);
os.addObserver(this, "http-on-modify-request", false);
return;
}
},
onModifyRequest: function(oHttpChannel)
{
- var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
-
- var spoofmode = prefs.getIntPref("extensions.torbutton.refererspoof");
-
- var ios = Components.classes["@mozilla.org/network/io-service;1"]
- .getService(Components.interfaces.nsIIOService);
+ var referer;
- if (spoofmode == 0)
try {
oHttpChannel.QueryInterface(Components.interfaces.nsIChannel);
- var referer;
- try{
+ try {
referer = oHttpChannel.getRequestHeader("Referer");
- referer = ios.newURI(referer,null,null);//make a nsIURI object for referer
- }catch(referr) {
- return;//no referer available or invalid uri
+ referer = this.ios.newURI(referer, null, null); //make a nsIURI object for referer
+ } catch (referr) {
+ return; //no referer available or invalid uri
}
- var requestURI = oHttpChannel.URI; //request nsIURI object
- var destHost = referer.host; //referer host w/o scheme
- var srcHost = oHttpChannel.URI.host;//request host without scheme
-
- // match is not what we want, unless we escape dots:
- var destHostMatch = destHost.replace(this.specials, "\\$&");
- var srcHostMatch = srcHost.replace(this.specials, "\\$&");
-
- // FIXME: This isn't exactly bulletproof security here, but it still
- // may need to be more lenient not to break sites...
- //
- // If we suspect issues, we can try doing the following first:
- // 1. Strip off all TLD suffixes, up to but not including '.'
- // 2. If more than one domain part is till left, strip off prefix
-
- //if they're in the same domain(if we can tell) or have the same host, keep the referer
- if (srcHost.split(".").length >= destHost.split(".").length
- && srcHost.match(destHostMatch)) // dest is a substring of src
- return;
- else if (destHost.split(".").length >= srcHost.split(".").length
- && destHost.match(srcHostMatch)) // src is a substring of dest
- return;
- //if they do not have the same host
- this.adjustRef(oHttpChannel, requestURI.scheme + "://" + requestURI.host);
- this.logger.safe_log(3, "Adjusting Referer, ",
- "from " + destHost + " to " + requestURI.host);
- }
- catch (ex) {
- this.logger.log(5, "RefSpoof onModifyRequest: " +ex);
+ // Only spoof referer for cross-domain requests from .onions
+ if (this.onionDomainRegex.test(referer.host) &&
+ this.thirdPartyUtil.isThirdPartyURI(referer, oHttpChannel.URI)) {
+ // Set the referer to the domain being requested. This makes it harder
+ // to tell that we are referer-spoofing.
+ this.adjustRef(oHttpChannel,
+ [oHttpChannel.URI.scheme, oHttpChannel.URI.host].join("://"));
+ }
+ } catch (ex) {
+ this.logger.log(5, "RefSpoof onModifyRequest: " + ex);
}
- else if (spoofmode == 2)
- this.adjustRef(oHttpChannel, "");
},
adjustRef: function(oChannel, sRef)
{
@@ -94,7 +65,7 @@ RefSpoofer.prototype = {
oChannel.setRequestHeader("Referer", sRef, false);
}
return true;
- }
+ }
catch (ex) {
this.logger.log(5, "RefSpoof adjustRef: " +ex);
}
@@ -103,9 +74,10 @@ RefSpoofer.prototype = {
QueryInterface: function(iid)
{
if (!iid.equals(Components.interfaces.nsISupports) &&
- !iid.equals(Components.interfaces.nsIObserver) &&
- !iid.equals(Components.interfaces.nsISupportsWeakReference))
- throw Components.results.NS_ERROR_NO_INTERFACE;
+ !iid.equals(Components.interfaces.nsIObserver) &&
+ !iid.equals(Components.interfaces.nsISupportsWeakReference)) {
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ }
return this;
},
_xpcom_categories: [{category:"profile-after-change"}],
@@ -114,12 +86,5 @@ RefSpoofer.prototype = {
classDescription: "Tor Ref Spoofer"
};
-/**
-* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
-* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
-*/
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-if (XPCOMUtils.generateNSGetFactory)
- var NSGetFactory = XPCOMUtils.generateNSGetFactory([RefSpoofer]);
-else
- var NSGetModule = XPCOMUtils.generateNSGetModule([RefSpoofer]);
+var NSGetFactory = XPCOMUtils.generateNSGetFactory([RefSpoofer]);
diff --git a/src/components/tors-protocol.js b/src/components/tors-protocol.js
deleted file mode 100644
index f075e43..0000000
--- a/src/components/tors-protocol.js
+++ /dev/null
@@ -1,103 +0,0 @@
-// Bug 1506 P0: This code is toggle-mode code and is unused. Kill it.
-
-// Test protocol related
-const kSCHEME = "tors";
-const kPROTOCOL_NAME = "tors";
-const kPROTOCOL_CONTRACTID = "@mozilla.org/network/protocol;1?name=" + kSCHEME;
-const kPROTOCOL_CID = Components.ID("a5a4bc50-5e8d-11de-8a39-0800200c9a66");
-
-// Mozilla defined
-const kSIMPLEURI_CONTRACTID = "@mozilla.org/network/simple-uri;1";
-const kIOSERVICE_CONTRACTID = "@mozilla.org/network/io-service;1";
-const nsISupports = Components.interfaces.nsISupports;
-const nsIIOService = Components.interfaces.nsIIOService;
-const nsIProtocolHandler = Components.interfaces.nsIProtocolHandler;
-const nsIURI = Components.interfaces.nsIURI;
-
-function Protocol()
-{
-}
-
-Protocol.prototype =
-{
- QueryInterface: function(iid)
- {
- if (!iid.equals(nsIProtocolHandler) &&
- !iid.equals(nsISupports))
- throw Components.results.NS_ERROR_NO_INTERFACE;
- return this;
- },
-
- scheme: kSCHEME,
- defaultPort: -1,
- protocolFlags: nsIProtocolHandler.URI_NORELATIVE |
- nsIProtocolHandler.URI_NOAUTH,
-
- allowPort: function(port, scheme)
- {
- return false;
- },
-
- newURI: function(spec, charset, baseURI)
- {
- const nsIStandardURL = Components.interfaces.nsIStandardURL;
- var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(nsIStandardURL);
- uri.init(nsIStandardURL.URLTYPE_STANDARD, 433, spec, charset, baseURI);
-
- return uri.QueryInterface(Components.interfaces.nsIURI);
-
- },
-
- newChannel: function(aURI)
- {
- var prefs = Components.classes["@mozilla.org/preferences-service;1"]
- .getService(Components.interfaces.nsIPrefBranch);
- if (!prefs.getBoolPref("extensions.torbutton.tor_urls")) {
- throw Components.results.NS_ERROR_UNKNOWN_PROTOCOL;
- }
-
- /*The protocol has been called, therefore we want to enable tor, wait for it to activate return the new channel with the scheme of https.*/
- var ios = Components.classes[kIOSERVICE_CONTRACTID].getService(nsIIOService);
- var prompt = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
- .getService(Components.interfaces.nsIPromptService);
- var tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
- var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
- .getService(Components.interfaces.nsIWindowMediator);
- var chrome = wm.getMostRecentWindow("navigator:browser");
- if (!ios.allowPort(aURI.port, aURI.scheme))
- throw Components.results.NS_ERROR_FAILURE;
-
- if (!tor_enabled)
- {
- var result = prompt.confirm(null, "Allow Tor toggle?", "Do you want to enable Tor and navigate to " + aURI.spec + "?");
- if (!result)
- throw Components.results.NS_ERROR_UNEXPECTED;
- chrome.torbutton_enable_tor(true);
- }
-
- //if tor is turned on then, else we should throw exception of some sort.
- tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
- if (!tor_enabled)
- throw Components.results.NS_ERROR_UNEXPECTED;
- else
- {
- aURI.scheme = "https";
- return ios.newChannelFromURI(aURI);
- }
- },
-
- // method of nsIClassInfo
- classDescription: "Tor protocol handler",
- classID: kPROTOCOL_CID,
- contractID: kPROTOCOL_CONTRACTID
-}
-
-/**
-* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
-* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
-*/
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-if (XPCOMUtils.generateNSGetFactory)
- var NSGetFactory = XPCOMUtils.generateNSGetFactory([Protocol]);
-else
- var NSGetModule = XPCOMUtils.generateNSGetModule([Protocol]);
diff --git a/src/components/window-mapper.js b/src/components/window-mapper.js
deleted file mode 100644
index a04f12b..0000000
--- a/src/components/window-mapper.js
+++ /dev/null
@@ -1,180 +0,0 @@
-// Bug 1506 P0: This code is toggle-mode code and is unused. Kill it.
-
-/*************************************************************************
- * ContentWindowMapper (JavaScript XPCOM component)
- *
- * Allows you to find a tabbrowser tab for a top level content window.
- *
- *************************************************************************/
-
-// Module specific constants
-const kMODULE_NAME = "Content Window Mapper";
-const kMODULE_CONTRACTID = "@torproject.org/content-window-mapper;1";
-const kMODULE_CID = Components.ID("b985e49c-12cb-4f29-9d14-b62603332ec4");
-
-const Cr = Components.results;
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const EXPIRATION_TIME = 60000; // 60 seconds
-
-const nsISupports = Components.interfaces.nsISupports;
-const nsIClassInfo = Components.interfaces.nsIClassInfo;
-const nsIComponentRegistrar = Components.interfaces.nsIComponentRegistrar;
-const nsIObserverService = Components.interfaces.nsIObserverService;
-
-function ContentWindowMapper() {
- this.cache = {};
-
- this.logger = Components.classes["@torproject.org/torbutton-logger;1"]
- .getService(Components.interfaces.nsISupports).wrappedJSObject;
- this.logger.log(3, "Component Load 2: Content window mapper online: "+kMODULE_CONTRACTID);
- this.last_expired = Date.now();
- // This JSObject is exported directly to chrome
- this.wrappedJSObject = this;
-}
-
-ContentWindowMapper.prototype =
-{
- QueryInterface: function(iid)
- {
- if (!iid.equals(nsIClassInfo) &&
- !iid.equals(nsISupports)) {
- Components.returnCode = Cr.NS_ERROR_NO_INTERFACE;
- return null;
- }
- return this;
- },
-
- wrappedJSObject: null, // Initialized by constructor
-
- // make this an nsIClassInfo object
- flags: nsIClassInfo.DOM_OBJECT,
-
- // method of nsIClassInfo
- classDescription: kMODULE_NAME,
- classID: kMODULE_CID,
- contractID: kMODULE_CONTRACTID,
-
- // method of nsIClassInfo
- getInterfaces: function(count) {
- var interfaceList = [nsIClassInfo];
- count.value = interfaceList.length;
- return interfaceList;
- },
-
- // method of nsIClassInfo
- getHelperForLanguage: function(count) { return null; },
-
- checkCache: function(topContentWindow) {
- if(typeof(topContentWindow.ghetto_guid) != "undefined"
- && typeof(this.cache[topContentWindow.ghetto_guid]) != "undefined") {
- return this.cache[topContentWindow.ghetto_guid].browser;
- }
-
- return null;
- },
-
- addCache: function(topContentWindow, browser) {
- var insertion = new Object();
- insertion.browser = browser;
- insertion.time = Date.now();
- topContentWindow.ghetto_guid = Math.random().toString()+Math.random().toString();
- this.cache[topContentWindow.ghetto_guid] = insertion;
- },
-
- expireOldCache: function() {
- var now = Date.now();
-
- if((now - this.last_expired) < EXPIRATION_TIME) {
- this.logger.log(3, "Early mapper check.");
- return;
- }
-
- var delkeys = [];
- for(var elem in this.cache) {
- if((now - this.cache[elem].time) > EXPIRATION_TIME) {
- this.logger.log(2, "Deleting cached element: "+elem.location);
- delkeys.push(elem);
- }
- }
-
- for(var k in delkeys) {
- delete this.cache[k];
- }
-
- this.last_expired = now;
- },
-
- getBrowserForContentWindow: function(topContentWindow) {
- if(topContentWindow instanceof Components.interfaces.nsIDOMChromeWindow) {
- if(topContentWindow.browserDOMWindow) {
- var browser = topContentWindow.getBrowser().selectedTab.linkedBrowser;
- this.logger.log(3, "Chrome browser at "
- +browser.contentWindow.location+" found for: "
- +topContentWindow.location);
- return browser;
- }
- // Allow strange chrome to go through..
- this.logger.log(3, "Odd chome window"+topContentWindow.location);
- return topContentWindow;
- }
-
- var cached = this.checkCache(topContentWindow);
- if(cached != null) {
- return cached;
- }
-
- try {
- this.logger.log(3, "Cache failed for: "+topContentWindow.location);
- } catch(e) {
- this.logger.log(3, "Cache failed for unknown location?");
- }
-
- var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
- .getService(Components.interfaces.nsIWindowMediator);
- var enumerator = wm.getEnumerator("navigator:browser");
- while(enumerator.hasMoreElements()) {
- var win = enumerator.getNext();
- var browser = win.getBrowser();
- for (var i = 0; i < browser.browsers.length; ++i) {
- var b = browser.browsers[i];
- if (b && b.contentWindow == topContentWindow) {
- this.addCache(topContentWindow, b);
- return b;
- }
- }
- }
-
- // SpeedDial, google notebook and other extensions can create their
- // own "<browser>" tag elements. AFAICT, there is no way to enumerate
- // these... Just punt and return the most recently used browser
- try {
- if(topContentWindow.name != "speedDialLoaderBrowser") {
- if(topContentWindow && topContentWindow.location)
- this.logger.safe_log(4, "No browser found: ", topContentWindow.location);
- else
- this.logger.safe_log(4, "No browser found: ", topContentWindow.name);
- } else {
- this.logger.log(3, "SpeedDial browser found: "+topContentWindow.name);
- }
- } catch(e) {
- this.logger.log(4, "No browser found.");
- }
-
- // Punt..
- var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].
- getService(Components.interfaces.nsIWindowMediator);
- var recentWindow = wm.getMostRecentWindow("navigator:browser");
- return recentWindow ? recentWindow.getBrowser().selectedTab.linkedBrowser : null;
- }
-}
-
-/**
-* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
-* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
-*/
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-if (XPCOMUtils.generateNSGetFactory)
- var NSGetFactory = XPCOMUtils.generateNSGetFactory([ContentWindowMapper]);
-else
- var NSGetModule = XPCOMUtils.generateNSGetModule([ContentWindowMapper]);
diff --git a/src/defaults/preferences/preferences.js b/src/defaults/preferences/preferences.js
index 83706ef..7985b21 100644
--- a/src/defaults/preferences/preferences.js
+++ b/src/defaults/preferences/preferences.js
@@ -165,7 +165,6 @@ pref("extensions.torbutton.tor_memory_jar",false);
pref("extensions.torbutton.nontor_memory_jar",false);
pref("extensions.torbutton.tz_string","");
pref("extensions.torbutton.launch_warning",true);
-pref("extensions.torbutton.refererspoof", 0); //0=no spoof, 1=root spoof, 2=domain spoof, 3=blank spoof, 4=custom spoof
pref("extensions.torbutton.fakerefresh", false);
pref("extensions.torbutton.customeref","");
pref("extensions.torbutton.disable_livemarks",true);
1
0

[torbutton/master] Bug 9263: Spoof referer when leaving a .onion domain
by gk@torproject.org 13 Oct '15
by gk@torproject.org 13 Oct '15
13 Oct '15
commit f98243cfed952d1a1375fb1f486d728e6ca1bd44
Author: Yan Zhu <yan(a)mit.edu>
Date: Tue Jul 29 17:36:27 2014 -0700
Bug 9263: Spoof referer when leaving a .onion domain
---
makexpi.sh | 2 +-
src/chrome.manifest | 15 +--
src/components/tor-protocol.js | 103 ------------------
src/components/torRefSpoofer.js | 103 ++++++------------
src/components/tors-protocol.js | 103 ------------------
src/components/window-mapper.js | 180 -------------------------------
src/defaults/preferences/preferences.js | 1 -
7 files changed, 39 insertions(+), 468 deletions(-)
diff --git a/makexpi.sh b/makexpi.sh
index 4d01e2c..243fbd6 100755
--- a/makexpi.sh
+++ b/makexpi.sh
@@ -21,7 +21,7 @@ echo ---------- create $APP_NAME.xpi ----------
mkdir -p pkg
cd src
echo zip -X -9r ../pkg/$XPI_NAME ./ -x "chrome/*" -x "*.diff" -x "*.svn/*"
-zip -X -9r ../pkg/$XPI_NAME ./ -x "*.svn/*" -x "*.diff" -x "components/torRefSpoofer.js" #-x "chrome/*"
+zip -X -9r ../pkg/$XPI_NAME ./ -x "*.svn/*" -x "*.diff" #-x "chrome/*"
#mv ../$APP_NAME.jar ./chrome
#zip -9m ../pkg/$XPI_NAME chrome/$APP_NAME.jar
cd ..
diff --git a/src/chrome.manifest b/src/chrome.manifest
index ddf582e..1d3efb4 100644
--- a/src/chrome.manifest
+++ b/src/chrome.manifest
@@ -159,18 +159,11 @@ contract @torproject.org/torbutton-logger;1 {f36d72c9-9718-4134-b550-e109638331d
component {e33fd6d4-270f-475f-a96f-ff3140279f68} components/domain-isolator.js
contract @torproject.org/domain-isolator;1 {e33fd6d4-270f-475f-a96f-ff3140279f68}
-# component {b985e49c-12cb-4f29-9d14-b62603332ec4} components/window-mapper.js
-# contract @torproject.org/content-window-mapper;1 {b985e49c-12cb-4f29-9d14-b62603332ec4}
-
-# component {65be2be0-ceb4-44c2-91a5-9c75c53430bf} components/torRefSpoofer.js
-# contract @torproject.org/torRefSpoofer;1 {65be2be0-ceb4-44c2-91a5-9c75c53430bf}
-
-# component {52183e20-4d4b-11de-8a39-0800200c9a66} components/tor-protocol.js
-# contract @mozilla.org/network/protocol;1?name=tor {52183e20-4d4b-11de-8a39-0800200c9a66}
+category profile-after-change CookieJarSelector @torproject.org/cookie-jar-selector;1
-# component {a5a4bc50-5e8d-11de-8a39-0800200c9a66} components/tors-protocol.js
-# contract @mozilla.org/network/protocol;1?name=tors {a5a4bc50-5e8d-11de-8a39-0800200c9a66}
+component {65be2be0-ceb4-44c2-91a5-9c75c53430bf} components/torRefSpoofer.js
+contract @torproject.org/torRefSpoofer;1 {65be2be0-ceb4-44c2-91a5-9c75c53430bf}
-category profile-after-change CookieJarSelector @torproject.org/cookie-jar-selector;1
+category profile-after-change RefSpoofer @torproject.org/torRefSpoofer;1
category profile-after-change StartupObserver @torproject.org/startup-observer;1
category profile-after-change DomainIsolator @torproject.org/domain-isolator;1
diff --git a/src/components/tor-protocol.js b/src/components/tor-protocol.js
deleted file mode 100644
index 4ba5cf4..0000000
--- a/src/components/tor-protocol.js
+++ /dev/null
@@ -1,103 +0,0 @@
-// Bug 1506 P0: This code is toggle-mode code and is unused. Kill it.
-
-// Test protocol related
-const kSCHEME = "tor";
-const kPROTOCOL_NAME = "tor";
-const kPROTOCOL_CONTRACTID = "@mozilla.org/network/protocol;1?name=" + kSCHEME;
-const kPROTOCOL_CID = Components.ID("52183e20-4d4b-11de-8a39-0800200c9a66");
-
-// Mozilla defined
-const kSIMPLEURI_CONTRACTID = "@mozilla.org/network/simple-uri;1";
-const kIOSERVICE_CONTRACTID = "@mozilla.org/network/io-service;1";
-const nsISupports = Components.interfaces.nsISupports;
-const nsIIOService = Components.interfaces.nsIIOService;
-const nsIProtocolHandler = Components.interfaces.nsIProtocolHandler;
-const nsIURI = Components.interfaces.nsIURI;
-
-function Protocol()
-{
-}
-
-Protocol.prototype =
-{
- QueryInterface: function(iid)
- {
- if (!iid.equals(nsIProtocolHandler) &&
- !iid.equals(nsISupports))
- throw Components.results.NS_ERROR_NO_INTERFACE;
- return this;
- },
-
- scheme: kSCHEME,
- defaultPort: -1,
- protocolFlags: nsIProtocolHandler.URI_NORELATIVE |
- nsIProtocolHandler.URI_NOAUTH,
-
- allowPort: function(port, scheme)
- {
- return false;
- },
-
- newURI: function(spec, charset, baseURI)
- {
- const nsIStandardURL = Components.interfaces.nsIStandardURL;
- var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(nsIStandardURL);
- uri.init(nsIStandardURL.URLTYPE_STANDARD, 80, spec, charset, baseURI);
-
- return uri.QueryInterface(Components.interfaces.nsIURI);
-
- },
-
- newChannel: function(aURI)
- {
- var prefs = Components.classes["@mozilla.org/preferences-service;1"]
- .getService(Components.interfaces.nsIPrefBranch);
- if (!prefs.getBoolPref("extensions.torbutton.tor_urls")) {
- throw Components.results.NS_ERROR_UNKNOWN_PROTOCOL;
- }
-
- /*The protocol has been called, therefore we want to enable tor, wait for it to activate return the new channel with the scheme of http.*/
- var ios = Components.classes[kIOSERVICE_CONTRACTID].getService(nsIIOService);
- var prompt = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
- .getService(Components.interfaces.nsIPromptService);
- var tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
- var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
- .getService(Components.interfaces.nsIWindowMediator);
- var chrome = wm.getMostRecentWindow("navigator:browser");
- if (!ios.allowPort(aURI.port, aURI.scheme))
- throw Components.results.NS_ERROR_FAILURE;
-
- if (!tor_enabled)
- {
- var result = prompt.confirm(null, "Allow Tor toggle?", "Do you want to enable Tor and navigate to " + aURI.spec + "?");
- if (!result)
- throw Components.results.NS_ERROR_UNEXPECTED;
- chrome.torbutton_enable_tor(true);
- }
-
- //if tor is turned on then, else we should throw exception of some sort.
- tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
- if (!tor_enabled)
- throw Components.results.NS_ERROR_UNEXPECTED;
- else
- {
- aURI.scheme = "http";
- return ios.newChannelFromURI(aURI);
- }
- },
-
- // method of nsIClassInfo
- classDescription: "Tor protocol handler",
- classID: kPROTOCOL_CID,
- contractID: kPROTOCOL_CONTRACTID,
-}
-
-/**
-* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
-* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
-*/
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-if (XPCOMUtils.generateNSGetFactory)
- var NSGetFactory = XPCOMUtils.generateNSGetFactory([Protocol]);
-else
- var NSGetModule = XPCOMUtils.generateNSGetModule([Protocol]);
diff --git a/src/components/torRefSpoofer.js b/src/components/torRefSpoofer.js
index 8b50075..b69f8e0 100644
--- a/src/components/torRefSpoofer.js
+++ b/src/components/torRefSpoofer.js
@@ -1,89 +1,60 @@
-// Bug 1506 P0: I don't really believe referers matter in the grand scheme.
-// Kill this code.
+// Clear referer on cross-domain requests to/from Tor Hidden Services: #9623
+// ("Smart referer" previously spoofed referer on all cross-domain requests.)
const kMODULE_CID = Components.ID("65be2be0-ceb4-44c2-91a5-9c75c53430bf");
const kMODULE_CONTRACTID = "@torproject.org/torRefSpoofer;1";
function RefSpoofer() {
- this.logger = Components.classes["@torproject.org/torbutton-logger;1"].getService(Components.interfaces.nsISupports).wrappedJSObject;
- this.logger.log(3, "RefSpoof component created");
- this.specials = /[-[\]{}()*+?.,\\^$|#\s]/g;
+ this.logger = Components.classes["@torproject.org/torbutton-logger;1"].
+ getService(Components.interfaces.nsISupports).wrappedJSObject;
+ this.logger.log(3, "RefSpoof component created");
+ this.onionDomainRegex = new RegExp("\\.onion$", "i"); // THS hosts
+ this.thirdPartyUtil = Components.classes["@mozilla.org/thirdpartyutil;1"].
+ getService(Components.interfaces.mozIThirdPartyUtil);
+ this.ios = Components.classes["@mozilla.org/network/io-service;1"].
+ getService(Components.interfaces.nsIIOService);
}
-RefSpoofer.prototype = {
+RefSpoofer.prototype = {
observe: function(subject, topic, data)
{
if (topic == "http-on-modify-request") {
- var prefs = Components.classes["@mozilla.org/preferences-service;1"]
- .getService(Components.interfaces.nsIPrefBranch);
- var tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
-
- if (!tor_enabled)
- return;
-
subject.QueryInterface(Components.interfaces.nsIHttpChannel);
this.onModifyRequest(subject);
return;
}
if (topic == "profile-after-change") {
this.logger.log(3, "RefSpoof got profile-after-change");
- var os = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
+ var os = Components.classes["@mozilla.org/observer-service;1"].
+ getService(Components.interfaces.nsIObserverService);
os.addObserver(this, "http-on-modify-request", false);
return;
}
},
onModifyRequest: function(oHttpChannel)
{
- var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
-
- var spoofmode = prefs.getIntPref("extensions.torbutton.refererspoof");
-
- var ios = Components.classes["@mozilla.org/network/io-service;1"]
- .getService(Components.interfaces.nsIIOService);
+ var referer;
- if (spoofmode == 0)
try {
oHttpChannel.QueryInterface(Components.interfaces.nsIChannel);
- var referer;
- try{
+ try {
referer = oHttpChannel.getRequestHeader("Referer");
- referer = ios.newURI(referer,null,null);//make a nsIURI object for referer
- }catch(referr) {
- return;//no referer available or invalid uri
+ referer = this.ios.newURI(referer, null, null); //make a nsIURI object for referer
+ } catch (referr) {
+ return; //no referer available or invalid uri
}
- var requestURI = oHttpChannel.URI; //request nsIURI object
- var destHost = referer.host; //referer host w/o scheme
- var srcHost = oHttpChannel.URI.host;//request host without scheme
-
- // match is not what we want, unless we escape dots:
- var destHostMatch = destHost.replace(this.specials, "\\$&");
- var srcHostMatch = srcHost.replace(this.specials, "\\$&");
-
- // FIXME: This isn't exactly bulletproof security here, but it still
- // may need to be more lenient not to break sites...
- //
- // If we suspect issues, we can try doing the following first:
- // 1. Strip off all TLD suffixes, up to but not including '.'
- // 2. If more than one domain part is till left, strip off prefix
-
- //if they're in the same domain(if we can tell) or have the same host, keep the referer
- if (srcHost.split(".").length >= destHost.split(".").length
- && srcHost.match(destHostMatch)) // dest is a substring of src
- return;
- else if (destHost.split(".").length >= srcHost.split(".").length
- && destHost.match(srcHostMatch)) // src is a substring of dest
- return;
- //if they do not have the same host
- this.adjustRef(oHttpChannel, requestURI.scheme + "://" + requestURI.host);
- this.logger.safe_log(3, "Adjusting Referer, ",
- "from " + destHost + " to " + requestURI.host);
- }
- catch (ex) {
- this.logger.log(5, "RefSpoof onModifyRequest: " +ex);
+ // Only spoof referer for cross-domain requests from .onions
+ if (this.onionDomainRegex.test(referer.host) &&
+ this.thirdPartyUtil.isThirdPartyURI(referer, oHttpChannel.URI)) {
+ // Set the referer to the domain being requested. This makes it harder
+ // to tell that we are referer-spoofing.
+ this.adjustRef(oHttpChannel,
+ [oHttpChannel.URI.scheme, oHttpChannel.URI.host].join("://"));
+ }
+ } catch (ex) {
+ this.logger.log(5, "RefSpoof onModifyRequest: " + ex);
}
- else if (spoofmode == 2)
- this.adjustRef(oHttpChannel, "");
},
adjustRef: function(oChannel, sRef)
{
@@ -94,7 +65,7 @@ RefSpoofer.prototype = {
oChannel.setRequestHeader("Referer", sRef, false);
}
return true;
- }
+ }
catch (ex) {
this.logger.log(5, "RefSpoof adjustRef: " +ex);
}
@@ -103,9 +74,10 @@ RefSpoofer.prototype = {
QueryInterface: function(iid)
{
if (!iid.equals(Components.interfaces.nsISupports) &&
- !iid.equals(Components.interfaces.nsIObserver) &&
- !iid.equals(Components.interfaces.nsISupportsWeakReference))
- throw Components.results.NS_ERROR_NO_INTERFACE;
+ !iid.equals(Components.interfaces.nsIObserver) &&
+ !iid.equals(Components.interfaces.nsISupportsWeakReference)) {
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ }
return this;
},
_xpcom_categories: [{category:"profile-after-change"}],
@@ -114,12 +86,5 @@ RefSpoofer.prototype = {
classDescription: "Tor Ref Spoofer"
};
-/**
-* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
-* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
-*/
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-if (XPCOMUtils.generateNSGetFactory)
- var NSGetFactory = XPCOMUtils.generateNSGetFactory([RefSpoofer]);
-else
- var NSGetModule = XPCOMUtils.generateNSGetModule([RefSpoofer]);
+var NSGetFactory = XPCOMUtils.generateNSGetFactory([RefSpoofer]);
diff --git a/src/components/tors-protocol.js b/src/components/tors-protocol.js
deleted file mode 100644
index f075e43..0000000
--- a/src/components/tors-protocol.js
+++ /dev/null
@@ -1,103 +0,0 @@
-// Bug 1506 P0: This code is toggle-mode code and is unused. Kill it.
-
-// Test protocol related
-const kSCHEME = "tors";
-const kPROTOCOL_NAME = "tors";
-const kPROTOCOL_CONTRACTID = "@mozilla.org/network/protocol;1?name=" + kSCHEME;
-const kPROTOCOL_CID = Components.ID("a5a4bc50-5e8d-11de-8a39-0800200c9a66");
-
-// Mozilla defined
-const kSIMPLEURI_CONTRACTID = "@mozilla.org/network/simple-uri;1";
-const kIOSERVICE_CONTRACTID = "@mozilla.org/network/io-service;1";
-const nsISupports = Components.interfaces.nsISupports;
-const nsIIOService = Components.interfaces.nsIIOService;
-const nsIProtocolHandler = Components.interfaces.nsIProtocolHandler;
-const nsIURI = Components.interfaces.nsIURI;
-
-function Protocol()
-{
-}
-
-Protocol.prototype =
-{
- QueryInterface: function(iid)
- {
- if (!iid.equals(nsIProtocolHandler) &&
- !iid.equals(nsISupports))
- throw Components.results.NS_ERROR_NO_INTERFACE;
- return this;
- },
-
- scheme: kSCHEME,
- defaultPort: -1,
- protocolFlags: nsIProtocolHandler.URI_NORELATIVE |
- nsIProtocolHandler.URI_NOAUTH,
-
- allowPort: function(port, scheme)
- {
- return false;
- },
-
- newURI: function(spec, charset, baseURI)
- {
- const nsIStandardURL = Components.interfaces.nsIStandardURL;
- var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(nsIStandardURL);
- uri.init(nsIStandardURL.URLTYPE_STANDARD, 433, spec, charset, baseURI);
-
- return uri.QueryInterface(Components.interfaces.nsIURI);
-
- },
-
- newChannel: function(aURI)
- {
- var prefs = Components.classes["@mozilla.org/preferences-service;1"]
- .getService(Components.interfaces.nsIPrefBranch);
- if (!prefs.getBoolPref("extensions.torbutton.tor_urls")) {
- throw Components.results.NS_ERROR_UNKNOWN_PROTOCOL;
- }
-
- /*The protocol has been called, therefore we want to enable tor, wait for it to activate return the new channel with the scheme of https.*/
- var ios = Components.classes[kIOSERVICE_CONTRACTID].getService(nsIIOService);
- var prompt = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
- .getService(Components.interfaces.nsIPromptService);
- var tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
- var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
- .getService(Components.interfaces.nsIWindowMediator);
- var chrome = wm.getMostRecentWindow("navigator:browser");
- if (!ios.allowPort(aURI.port, aURI.scheme))
- throw Components.results.NS_ERROR_FAILURE;
-
- if (!tor_enabled)
- {
- var result = prompt.confirm(null, "Allow Tor toggle?", "Do you want to enable Tor and navigate to " + aURI.spec + "?");
- if (!result)
- throw Components.results.NS_ERROR_UNEXPECTED;
- chrome.torbutton_enable_tor(true);
- }
-
- //if tor is turned on then, else we should throw exception of some sort.
- tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
- if (!tor_enabled)
- throw Components.results.NS_ERROR_UNEXPECTED;
- else
- {
- aURI.scheme = "https";
- return ios.newChannelFromURI(aURI);
- }
- },
-
- // method of nsIClassInfo
- classDescription: "Tor protocol handler",
- classID: kPROTOCOL_CID,
- contractID: kPROTOCOL_CONTRACTID
-}
-
-/**
-* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
-* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
-*/
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-if (XPCOMUtils.generateNSGetFactory)
- var NSGetFactory = XPCOMUtils.generateNSGetFactory([Protocol]);
-else
- var NSGetModule = XPCOMUtils.generateNSGetModule([Protocol]);
diff --git a/src/components/window-mapper.js b/src/components/window-mapper.js
deleted file mode 100644
index a04f12b..0000000
--- a/src/components/window-mapper.js
+++ /dev/null
@@ -1,180 +0,0 @@
-// Bug 1506 P0: This code is toggle-mode code and is unused. Kill it.
-
-/*************************************************************************
- * ContentWindowMapper (JavaScript XPCOM component)
- *
- * Allows you to find a tabbrowser tab for a top level content window.
- *
- *************************************************************************/
-
-// Module specific constants
-const kMODULE_NAME = "Content Window Mapper";
-const kMODULE_CONTRACTID = "@torproject.org/content-window-mapper;1";
-const kMODULE_CID = Components.ID("b985e49c-12cb-4f29-9d14-b62603332ec4");
-
-const Cr = Components.results;
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const EXPIRATION_TIME = 60000; // 60 seconds
-
-const nsISupports = Components.interfaces.nsISupports;
-const nsIClassInfo = Components.interfaces.nsIClassInfo;
-const nsIComponentRegistrar = Components.interfaces.nsIComponentRegistrar;
-const nsIObserverService = Components.interfaces.nsIObserverService;
-
-function ContentWindowMapper() {
- this.cache = {};
-
- this.logger = Components.classes["@torproject.org/torbutton-logger;1"]
- .getService(Components.interfaces.nsISupports).wrappedJSObject;
- this.logger.log(3, "Component Load 2: Content window mapper online: "+kMODULE_CONTRACTID);
- this.last_expired = Date.now();
- // This JSObject is exported directly to chrome
- this.wrappedJSObject = this;
-}
-
-ContentWindowMapper.prototype =
-{
- QueryInterface: function(iid)
- {
- if (!iid.equals(nsIClassInfo) &&
- !iid.equals(nsISupports)) {
- Components.returnCode = Cr.NS_ERROR_NO_INTERFACE;
- return null;
- }
- return this;
- },
-
- wrappedJSObject: null, // Initialized by constructor
-
- // make this an nsIClassInfo object
- flags: nsIClassInfo.DOM_OBJECT,
-
- // method of nsIClassInfo
- classDescription: kMODULE_NAME,
- classID: kMODULE_CID,
- contractID: kMODULE_CONTRACTID,
-
- // method of nsIClassInfo
- getInterfaces: function(count) {
- var interfaceList = [nsIClassInfo];
- count.value = interfaceList.length;
- return interfaceList;
- },
-
- // method of nsIClassInfo
- getHelperForLanguage: function(count) { return null; },
-
- checkCache: function(topContentWindow) {
- if(typeof(topContentWindow.ghetto_guid) != "undefined"
- && typeof(this.cache[topContentWindow.ghetto_guid]) != "undefined") {
- return this.cache[topContentWindow.ghetto_guid].browser;
- }
-
- return null;
- },
-
- addCache: function(topContentWindow, browser) {
- var insertion = new Object();
- insertion.browser = browser;
- insertion.time = Date.now();
- topContentWindow.ghetto_guid = Math.random().toString()+Math.random().toString();
- this.cache[topContentWindow.ghetto_guid] = insertion;
- },
-
- expireOldCache: function() {
- var now = Date.now();
-
- if((now - this.last_expired) < EXPIRATION_TIME) {
- this.logger.log(3, "Early mapper check.");
- return;
- }
-
- var delkeys = [];
- for(var elem in this.cache) {
- if((now - this.cache[elem].time) > EXPIRATION_TIME) {
- this.logger.log(2, "Deleting cached element: "+elem.location);
- delkeys.push(elem);
- }
- }
-
- for(var k in delkeys) {
- delete this.cache[k];
- }
-
- this.last_expired = now;
- },
-
- getBrowserForContentWindow: function(topContentWindow) {
- if(topContentWindow instanceof Components.interfaces.nsIDOMChromeWindow) {
- if(topContentWindow.browserDOMWindow) {
- var browser = topContentWindow.getBrowser().selectedTab.linkedBrowser;
- this.logger.log(3, "Chrome browser at "
- +browser.contentWindow.location+" found for: "
- +topContentWindow.location);
- return browser;
- }
- // Allow strange chrome to go through..
- this.logger.log(3, "Odd chome window"+topContentWindow.location);
- return topContentWindow;
- }
-
- var cached = this.checkCache(topContentWindow);
- if(cached != null) {
- return cached;
- }
-
- try {
- this.logger.log(3, "Cache failed for: "+topContentWindow.location);
- } catch(e) {
- this.logger.log(3, "Cache failed for unknown location?");
- }
-
- var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
- .getService(Components.interfaces.nsIWindowMediator);
- var enumerator = wm.getEnumerator("navigator:browser");
- while(enumerator.hasMoreElements()) {
- var win = enumerator.getNext();
- var browser = win.getBrowser();
- for (var i = 0; i < browser.browsers.length; ++i) {
- var b = browser.browsers[i];
- if (b && b.contentWindow == topContentWindow) {
- this.addCache(topContentWindow, b);
- return b;
- }
- }
- }
-
- // SpeedDial, google notebook and other extensions can create their
- // own "<browser>" tag elements. AFAICT, there is no way to enumerate
- // these... Just punt and return the most recently used browser
- try {
- if(topContentWindow.name != "speedDialLoaderBrowser") {
- if(topContentWindow && topContentWindow.location)
- this.logger.safe_log(4, "No browser found: ", topContentWindow.location);
- else
- this.logger.safe_log(4, "No browser found: ", topContentWindow.name);
- } else {
- this.logger.log(3, "SpeedDial browser found: "+topContentWindow.name);
- }
- } catch(e) {
- this.logger.log(4, "No browser found.");
- }
-
- // Punt..
- var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].
- getService(Components.interfaces.nsIWindowMediator);
- var recentWindow = wm.getMostRecentWindow("navigator:browser");
- return recentWindow ? recentWindow.getBrowser().selectedTab.linkedBrowser : null;
- }
-}
-
-/**
-* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
-* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
-*/
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-if (XPCOMUtils.generateNSGetFactory)
- var NSGetFactory = XPCOMUtils.generateNSGetFactory([ContentWindowMapper]);
-else
- var NSGetModule = XPCOMUtils.generateNSGetModule([ContentWindowMapper]);
diff --git a/src/defaults/preferences/preferences.js b/src/defaults/preferences/preferences.js
index 164abbf..c481546 100644
--- a/src/defaults/preferences/preferences.js
+++ b/src/defaults/preferences/preferences.js
@@ -165,7 +165,6 @@ pref("extensions.torbutton.tor_memory_jar",false);
pref("extensions.torbutton.nontor_memory_jar",false);
pref("extensions.torbutton.tz_string","");
pref("extensions.torbutton.launch_warning",true);
-pref("extensions.torbutton.refererspoof", 0); //0=no spoof, 1=root spoof, 2=domain spoof, 3=blank spoof, 4=custom spoof
pref("extensions.torbutton.fakerefresh", false);
pref("extensions.torbutton.customeref","");
pref("extensions.torbutton.disable_livemarks",true);
1
0

13 Oct '15
commit 9fe9cdfe816ed030e615643e35b9e0dcaa5a8635
Author: Yan Zhu <yan(a)mit.edu>
Date: Tue Jul 29 17:08:36 2014 -0700
Revert "remove obsolete files, re Bug 1506 P0"
This reverts commit 80b06cdf422238f5eece38a1974d31e6e7be7a17.
---
src/chrome.manifest | 12 +++
src/components/tor-protocol.js | 103 ++++++++++++++++++++++
src/components/torRefSpoofer.js | 125 +++++++++++++++++++++++++++
src/components/tors-protocol.js | 103 ++++++++++++++++++++++
src/components/window-mapper.js | 180 +++++++++++++++++++++++++++++++++++++++
5 files changed, 523 insertions(+)
diff --git a/src/chrome.manifest b/src/chrome.manifest
index 8323e66..ddf582e 100644
--- a/src/chrome.manifest
+++ b/src/chrome.manifest
@@ -159,6 +159,18 @@ contract @torproject.org/torbutton-logger;1 {f36d72c9-9718-4134-b550-e109638331d
component {e33fd6d4-270f-475f-a96f-ff3140279f68} components/domain-isolator.js
contract @torproject.org/domain-isolator;1 {e33fd6d4-270f-475f-a96f-ff3140279f68}
+# component {b985e49c-12cb-4f29-9d14-b62603332ec4} components/window-mapper.js
+# contract @torproject.org/content-window-mapper;1 {b985e49c-12cb-4f29-9d14-b62603332ec4}
+
+# component {65be2be0-ceb4-44c2-91a5-9c75c53430bf} components/torRefSpoofer.js
+# contract @torproject.org/torRefSpoofer;1 {65be2be0-ceb4-44c2-91a5-9c75c53430bf}
+
+# component {52183e20-4d4b-11de-8a39-0800200c9a66} components/tor-protocol.js
+# contract @mozilla.org/network/protocol;1?name=tor {52183e20-4d4b-11de-8a39-0800200c9a66}
+
+# component {a5a4bc50-5e8d-11de-8a39-0800200c9a66} components/tors-protocol.js
+# contract @mozilla.org/network/protocol;1?name=tors {a5a4bc50-5e8d-11de-8a39-0800200c9a66}
+
category profile-after-change CookieJarSelector @torproject.org/cookie-jar-selector;1
category profile-after-change StartupObserver @torproject.org/startup-observer;1
category profile-after-change DomainIsolator @torproject.org/domain-isolator;1
diff --git a/src/components/tor-protocol.js b/src/components/tor-protocol.js
new file mode 100644
index 0000000..4ba5cf4
--- /dev/null
+++ b/src/components/tor-protocol.js
@@ -0,0 +1,103 @@
+// Bug 1506 P0: This code is toggle-mode code and is unused. Kill it.
+
+// Test protocol related
+const kSCHEME = "tor";
+const kPROTOCOL_NAME = "tor";
+const kPROTOCOL_CONTRACTID = "@mozilla.org/network/protocol;1?name=" + kSCHEME;
+const kPROTOCOL_CID = Components.ID("52183e20-4d4b-11de-8a39-0800200c9a66");
+
+// Mozilla defined
+const kSIMPLEURI_CONTRACTID = "@mozilla.org/network/simple-uri;1";
+const kIOSERVICE_CONTRACTID = "@mozilla.org/network/io-service;1";
+const nsISupports = Components.interfaces.nsISupports;
+const nsIIOService = Components.interfaces.nsIIOService;
+const nsIProtocolHandler = Components.interfaces.nsIProtocolHandler;
+const nsIURI = Components.interfaces.nsIURI;
+
+function Protocol()
+{
+}
+
+Protocol.prototype =
+{
+ QueryInterface: function(iid)
+ {
+ if (!iid.equals(nsIProtocolHandler) &&
+ !iid.equals(nsISupports))
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ return this;
+ },
+
+ scheme: kSCHEME,
+ defaultPort: -1,
+ protocolFlags: nsIProtocolHandler.URI_NORELATIVE |
+ nsIProtocolHandler.URI_NOAUTH,
+
+ allowPort: function(port, scheme)
+ {
+ return false;
+ },
+
+ newURI: function(spec, charset, baseURI)
+ {
+ const nsIStandardURL = Components.interfaces.nsIStandardURL;
+ var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(nsIStandardURL);
+ uri.init(nsIStandardURL.URLTYPE_STANDARD, 80, spec, charset, baseURI);
+
+ return uri.QueryInterface(Components.interfaces.nsIURI);
+
+ },
+
+ newChannel: function(aURI)
+ {
+ var prefs = Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Components.interfaces.nsIPrefBranch);
+ if (!prefs.getBoolPref("extensions.torbutton.tor_urls")) {
+ throw Components.results.NS_ERROR_UNKNOWN_PROTOCOL;
+ }
+
+ /*The protocol has been called, therefore we want to enable tor, wait for it to activate return the new channel with the scheme of http.*/
+ var ios = Components.classes[kIOSERVICE_CONTRACTID].getService(nsIIOService);
+ var prompt = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
+ .getService(Components.interfaces.nsIPromptService);
+ var tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
+ var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
+ .getService(Components.interfaces.nsIWindowMediator);
+ var chrome = wm.getMostRecentWindow("navigator:browser");
+ if (!ios.allowPort(aURI.port, aURI.scheme))
+ throw Components.results.NS_ERROR_FAILURE;
+
+ if (!tor_enabled)
+ {
+ var result = prompt.confirm(null, "Allow Tor toggle?", "Do you want to enable Tor and navigate to " + aURI.spec + "?");
+ if (!result)
+ throw Components.results.NS_ERROR_UNEXPECTED;
+ chrome.torbutton_enable_tor(true);
+ }
+
+ //if tor is turned on then, else we should throw exception of some sort.
+ tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
+ if (!tor_enabled)
+ throw Components.results.NS_ERROR_UNEXPECTED;
+ else
+ {
+ aURI.scheme = "http";
+ return ios.newChannelFromURI(aURI);
+ }
+ },
+
+ // method of nsIClassInfo
+ classDescription: "Tor protocol handler",
+ classID: kPROTOCOL_CID,
+ contractID: kPROTOCOL_CONTRACTID,
+}
+
+/**
+* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
+* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
+*/
+Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+if (XPCOMUtils.generateNSGetFactory)
+ var NSGetFactory = XPCOMUtils.generateNSGetFactory([Protocol]);
+else
+ var NSGetModule = XPCOMUtils.generateNSGetModule([Protocol]);
diff --git a/src/components/torRefSpoofer.js b/src/components/torRefSpoofer.js
new file mode 100644
index 0000000..8b50075
--- /dev/null
+++ b/src/components/torRefSpoofer.js
@@ -0,0 +1,125 @@
+// Bug 1506 P0: I don't really believe referers matter in the grand scheme.
+// Kill this code.
+
+const kMODULE_CID = Components.ID("65be2be0-ceb4-44c2-91a5-9c75c53430bf");
+const kMODULE_CONTRACTID = "@torproject.org/torRefSpoofer;1";
+
+function RefSpoofer() {
+ this.logger = Components.classes["@torproject.org/torbutton-logger;1"].getService(Components.interfaces.nsISupports).wrappedJSObject;
+ this.logger.log(3, "RefSpoof component created");
+ this.specials = /[-[\]{}()*+?.,\\^$|#\s]/g;
+}
+
+
+RefSpoofer.prototype = {
+ observe: function(subject, topic, data)
+ {
+ if (topic == "http-on-modify-request") {
+ var prefs = Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Components.interfaces.nsIPrefBranch);
+ var tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
+
+ if (!tor_enabled)
+ return;
+
+ subject.QueryInterface(Components.interfaces.nsIHttpChannel);
+ this.onModifyRequest(subject);
+ return;
+ }
+ if (topic == "profile-after-change") {
+ this.logger.log(3, "RefSpoof got profile-after-change");
+ var os = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
+ os.addObserver(this, "http-on-modify-request", false);
+ return;
+ }
+ },
+ onModifyRequest: function(oHttpChannel)
+ {
+ var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
+
+ var spoofmode = prefs.getIntPref("extensions.torbutton.refererspoof");
+
+ var ios = Components.classes["@mozilla.org/network/io-service;1"]
+ .getService(Components.interfaces.nsIIOService);
+
+ if (spoofmode == 0)
+ try {
+ oHttpChannel.QueryInterface(Components.interfaces.nsIChannel);
+ var referer;
+ try{
+ referer = oHttpChannel.getRequestHeader("Referer");
+ referer = ios.newURI(referer,null,null);//make a nsIURI object for referer
+ }catch(referr) {
+ return;//no referer available or invalid uri
+ }
+ var requestURI = oHttpChannel.URI; //request nsIURI object
+ var destHost = referer.host; //referer host w/o scheme
+ var srcHost = oHttpChannel.URI.host;//request host without scheme
+
+ // match is not what we want, unless we escape dots:
+ var destHostMatch = destHost.replace(this.specials, "\\$&");
+ var srcHostMatch = srcHost.replace(this.specials, "\\$&");
+
+ // FIXME: This isn't exactly bulletproof security here, but it still
+ // may need to be more lenient not to break sites...
+ //
+ // If we suspect issues, we can try doing the following first:
+ // 1. Strip off all TLD suffixes, up to but not including '.'
+ // 2. If more than one domain part is till left, strip off prefix
+
+ //if they're in the same domain(if we can tell) or have the same host, keep the referer
+ if (srcHost.split(".").length >= destHost.split(".").length
+ && srcHost.match(destHostMatch)) // dest is a substring of src
+ return;
+ else if (destHost.split(".").length >= srcHost.split(".").length
+ && destHost.match(srcHostMatch)) // src is a substring of dest
+ return;
+ //if they do not have the same host
+ this.adjustRef(oHttpChannel, requestURI.scheme + "://" + requestURI.host);
+ this.logger.safe_log(3, "Adjusting Referer, ",
+ "from " + destHost + " to " + requestURI.host);
+ }
+ catch (ex) {
+ this.logger.log(5, "RefSpoof onModifyRequest: " +ex);
+ }
+ else if (spoofmode == 2)
+ this.adjustRef(oHttpChannel, "");
+ },
+ adjustRef: function(oChannel, sRef)
+ {
+ try {
+ if (oChannel.referrer)
+ {
+ oChannel.referrer.spec = sRef;
+ oChannel.setRequestHeader("Referer", sRef, false);
+ }
+ return true;
+ }
+ catch (ex) {
+ this.logger.log(5, "RefSpoof adjustRef: " +ex);
+ }
+ return false;
+ },
+ QueryInterface: function(iid)
+ {
+ if (!iid.equals(Components.interfaces.nsISupports) &&
+ !iid.equals(Components.interfaces.nsIObserver) &&
+ !iid.equals(Components.interfaces.nsISupportsWeakReference))
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ return this;
+ },
+ _xpcom_categories: [{category:"profile-after-change"}],
+ classID: kMODULE_CID,
+ contractID: kMODULE_CONTRACTID,
+ classDescription: "Tor Ref Spoofer"
+};
+
+/**
+* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
+* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
+*/
+Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+if (XPCOMUtils.generateNSGetFactory)
+ var NSGetFactory = XPCOMUtils.generateNSGetFactory([RefSpoofer]);
+else
+ var NSGetModule = XPCOMUtils.generateNSGetModule([RefSpoofer]);
diff --git a/src/components/tors-protocol.js b/src/components/tors-protocol.js
new file mode 100644
index 0000000..f075e43
--- /dev/null
+++ b/src/components/tors-protocol.js
@@ -0,0 +1,103 @@
+// Bug 1506 P0: This code is toggle-mode code and is unused. Kill it.
+
+// Test protocol related
+const kSCHEME = "tors";
+const kPROTOCOL_NAME = "tors";
+const kPROTOCOL_CONTRACTID = "@mozilla.org/network/protocol;1?name=" + kSCHEME;
+const kPROTOCOL_CID = Components.ID("a5a4bc50-5e8d-11de-8a39-0800200c9a66");
+
+// Mozilla defined
+const kSIMPLEURI_CONTRACTID = "@mozilla.org/network/simple-uri;1";
+const kIOSERVICE_CONTRACTID = "@mozilla.org/network/io-service;1";
+const nsISupports = Components.interfaces.nsISupports;
+const nsIIOService = Components.interfaces.nsIIOService;
+const nsIProtocolHandler = Components.interfaces.nsIProtocolHandler;
+const nsIURI = Components.interfaces.nsIURI;
+
+function Protocol()
+{
+}
+
+Protocol.prototype =
+{
+ QueryInterface: function(iid)
+ {
+ if (!iid.equals(nsIProtocolHandler) &&
+ !iid.equals(nsISupports))
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ return this;
+ },
+
+ scheme: kSCHEME,
+ defaultPort: -1,
+ protocolFlags: nsIProtocolHandler.URI_NORELATIVE |
+ nsIProtocolHandler.URI_NOAUTH,
+
+ allowPort: function(port, scheme)
+ {
+ return false;
+ },
+
+ newURI: function(spec, charset, baseURI)
+ {
+ const nsIStandardURL = Components.interfaces.nsIStandardURL;
+ var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(nsIStandardURL);
+ uri.init(nsIStandardURL.URLTYPE_STANDARD, 433, spec, charset, baseURI);
+
+ return uri.QueryInterface(Components.interfaces.nsIURI);
+
+ },
+
+ newChannel: function(aURI)
+ {
+ var prefs = Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Components.interfaces.nsIPrefBranch);
+ if (!prefs.getBoolPref("extensions.torbutton.tor_urls")) {
+ throw Components.results.NS_ERROR_UNKNOWN_PROTOCOL;
+ }
+
+ /*The protocol has been called, therefore we want to enable tor, wait for it to activate return the new channel with the scheme of https.*/
+ var ios = Components.classes[kIOSERVICE_CONTRACTID].getService(nsIIOService);
+ var prompt = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
+ .getService(Components.interfaces.nsIPromptService);
+ var tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
+ var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
+ .getService(Components.interfaces.nsIWindowMediator);
+ var chrome = wm.getMostRecentWindow("navigator:browser");
+ if (!ios.allowPort(aURI.port, aURI.scheme))
+ throw Components.results.NS_ERROR_FAILURE;
+
+ if (!tor_enabled)
+ {
+ var result = prompt.confirm(null, "Allow Tor toggle?", "Do you want to enable Tor and navigate to " + aURI.spec + "?");
+ if (!result)
+ throw Components.results.NS_ERROR_UNEXPECTED;
+ chrome.torbutton_enable_tor(true);
+ }
+
+ //if tor is turned on then, else we should throw exception of some sort.
+ tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
+ if (!tor_enabled)
+ throw Components.results.NS_ERROR_UNEXPECTED;
+ else
+ {
+ aURI.scheme = "https";
+ return ios.newChannelFromURI(aURI);
+ }
+ },
+
+ // method of nsIClassInfo
+ classDescription: "Tor protocol handler",
+ classID: kPROTOCOL_CID,
+ contractID: kPROTOCOL_CONTRACTID
+}
+
+/**
+* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
+* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
+*/
+Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+if (XPCOMUtils.generateNSGetFactory)
+ var NSGetFactory = XPCOMUtils.generateNSGetFactory([Protocol]);
+else
+ var NSGetModule = XPCOMUtils.generateNSGetModule([Protocol]);
diff --git a/src/components/window-mapper.js b/src/components/window-mapper.js
new file mode 100644
index 0000000..a04f12b
--- /dev/null
+++ b/src/components/window-mapper.js
@@ -0,0 +1,180 @@
+// Bug 1506 P0: This code is toggle-mode code and is unused. Kill it.
+
+/*************************************************************************
+ * ContentWindowMapper (JavaScript XPCOM component)
+ *
+ * Allows you to find a tabbrowser tab for a top level content window.
+ *
+ *************************************************************************/
+
+// Module specific constants
+const kMODULE_NAME = "Content Window Mapper";
+const kMODULE_CONTRACTID = "@torproject.org/content-window-mapper;1";
+const kMODULE_CID = Components.ID("b985e49c-12cb-4f29-9d14-b62603332ec4");
+
+const Cr = Components.results;
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const EXPIRATION_TIME = 60000; // 60 seconds
+
+const nsISupports = Components.interfaces.nsISupports;
+const nsIClassInfo = Components.interfaces.nsIClassInfo;
+const nsIComponentRegistrar = Components.interfaces.nsIComponentRegistrar;
+const nsIObserverService = Components.interfaces.nsIObserverService;
+
+function ContentWindowMapper() {
+ this.cache = {};
+
+ this.logger = Components.classes["@torproject.org/torbutton-logger;1"]
+ .getService(Components.interfaces.nsISupports).wrappedJSObject;
+ this.logger.log(3, "Component Load 2: Content window mapper online: "+kMODULE_CONTRACTID);
+ this.last_expired = Date.now();
+ // This JSObject is exported directly to chrome
+ this.wrappedJSObject = this;
+}
+
+ContentWindowMapper.prototype =
+{
+ QueryInterface: function(iid)
+ {
+ if (!iid.equals(nsIClassInfo) &&
+ !iid.equals(nsISupports)) {
+ Components.returnCode = Cr.NS_ERROR_NO_INTERFACE;
+ return null;
+ }
+ return this;
+ },
+
+ wrappedJSObject: null, // Initialized by constructor
+
+ // make this an nsIClassInfo object
+ flags: nsIClassInfo.DOM_OBJECT,
+
+ // method of nsIClassInfo
+ classDescription: kMODULE_NAME,
+ classID: kMODULE_CID,
+ contractID: kMODULE_CONTRACTID,
+
+ // method of nsIClassInfo
+ getInterfaces: function(count) {
+ var interfaceList = [nsIClassInfo];
+ count.value = interfaceList.length;
+ return interfaceList;
+ },
+
+ // method of nsIClassInfo
+ getHelperForLanguage: function(count) { return null; },
+
+ checkCache: function(topContentWindow) {
+ if(typeof(topContentWindow.ghetto_guid) != "undefined"
+ && typeof(this.cache[topContentWindow.ghetto_guid]) != "undefined") {
+ return this.cache[topContentWindow.ghetto_guid].browser;
+ }
+
+ return null;
+ },
+
+ addCache: function(topContentWindow, browser) {
+ var insertion = new Object();
+ insertion.browser = browser;
+ insertion.time = Date.now();
+ topContentWindow.ghetto_guid = Math.random().toString()+Math.random().toString();
+ this.cache[topContentWindow.ghetto_guid] = insertion;
+ },
+
+ expireOldCache: function() {
+ var now = Date.now();
+
+ if((now - this.last_expired) < EXPIRATION_TIME) {
+ this.logger.log(3, "Early mapper check.");
+ return;
+ }
+
+ var delkeys = [];
+ for(var elem in this.cache) {
+ if((now - this.cache[elem].time) > EXPIRATION_TIME) {
+ this.logger.log(2, "Deleting cached element: "+elem.location);
+ delkeys.push(elem);
+ }
+ }
+
+ for(var k in delkeys) {
+ delete this.cache[k];
+ }
+
+ this.last_expired = now;
+ },
+
+ getBrowserForContentWindow: function(topContentWindow) {
+ if(topContentWindow instanceof Components.interfaces.nsIDOMChromeWindow) {
+ if(topContentWindow.browserDOMWindow) {
+ var browser = topContentWindow.getBrowser().selectedTab.linkedBrowser;
+ this.logger.log(3, "Chrome browser at "
+ +browser.contentWindow.location+" found for: "
+ +topContentWindow.location);
+ return browser;
+ }
+ // Allow strange chrome to go through..
+ this.logger.log(3, "Odd chome window"+topContentWindow.location);
+ return topContentWindow;
+ }
+
+ var cached = this.checkCache(topContentWindow);
+ if(cached != null) {
+ return cached;
+ }
+
+ try {
+ this.logger.log(3, "Cache failed for: "+topContentWindow.location);
+ } catch(e) {
+ this.logger.log(3, "Cache failed for unknown location?");
+ }
+
+ var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
+ .getService(Components.interfaces.nsIWindowMediator);
+ var enumerator = wm.getEnumerator("navigator:browser");
+ while(enumerator.hasMoreElements()) {
+ var win = enumerator.getNext();
+ var browser = win.getBrowser();
+ for (var i = 0; i < browser.browsers.length; ++i) {
+ var b = browser.browsers[i];
+ if (b && b.contentWindow == topContentWindow) {
+ this.addCache(topContentWindow, b);
+ return b;
+ }
+ }
+ }
+
+ // SpeedDial, google notebook and other extensions can create their
+ // own "<browser>" tag elements. AFAICT, there is no way to enumerate
+ // these... Just punt and return the most recently used browser
+ try {
+ if(topContentWindow.name != "speedDialLoaderBrowser") {
+ if(topContentWindow && topContentWindow.location)
+ this.logger.safe_log(4, "No browser found: ", topContentWindow.location);
+ else
+ this.logger.safe_log(4, "No browser found: ", topContentWindow.name);
+ } else {
+ this.logger.log(3, "SpeedDial browser found: "+topContentWindow.name);
+ }
+ } catch(e) {
+ this.logger.log(4, "No browser found.");
+ }
+
+ // Punt..
+ var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].
+ getService(Components.interfaces.nsIWindowMediator);
+ var recentWindow = wm.getMostRecentWindow("navigator:browser");
+ return recentWindow ? recentWindow.getBrowser().selectedTab.linkedBrowser : null;
+ }
+}
+
+/**
+* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
+* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
+*/
+Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+if (XPCOMUtils.generateNSGetFactory)
+ var NSGetFactory = XPCOMUtils.generateNSGetFactory([ContentWindowMapper]);
+else
+ var NSGetModule = XPCOMUtils.generateNSGetModule([ContentWindowMapper]);
1
0