tbb-commits
Threads by month
- ----- 2026 -----
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- 1 participants
- 20430 discussions
commit d0b975620a1bcb5988f09c02d5f6f06ed34710ea
Author: Matthew Finkel <sysrqb(a)torproject.org>
Date: Sat Nov 30 12:16:19 2019 +0000
Translations update
---
chrome/locale/de/torbutton.properties | 10 +++++-----
chrome/locale/eu/aboutTor.dtd | 6 +++---
chrome/locale/eu/torbutton.dtd | 4 ++--
chrome/locale/fa/browserOnboarding.properties | 14 +++++++-------
chrome/locale/fa/torbutton.dtd | 2 +-
chrome/locale/fa/torbutton.properties | 10 +++++-----
chrome/locale/id/aboutTor.dtd | 2 +-
chrome/locale/ko/torbutton.dtd | 16 ++++++++--------
chrome/locale/ko/torbutton.properties | 12 ++++++------
chrome/locale/lt/aboutDialog.dtd | 2 +-
chrome/locale/lt/aboutTBUpdate.dtd | 4 ++--
chrome/locale/lt/aboutTor.dtd | 8 ++++----
chrome/locale/lt/brand.dtd | 6 +++---
chrome/locale/lt/brand.properties | 6 +++---
chrome/locale/lt/browserOnboarding.properties | 6 +++---
chrome/locale/lt/torbutton.dtd | 6 +++---
chrome/locale/lt/torbutton.properties | 18 +++++++++---------
chrome/locale/ms/aboutTor.dtd | 2 +-
chrome/locale/th/aboutTor.dtd | 2 +-
chrome/locale/tr/torbutton.properties | 2 +-
chrome/locale/zh-CN/torbutton.properties | 2 +-
21 files changed, 70 insertions(+), 70 deletions(-)
diff --git a/chrome/locale/de/torbutton.properties b/chrome/locale/de/torbutton.properties
index a73585f0..ac756ac2 100644
--- a/chrome/locale/de/torbutton.properties
+++ b/chrome/locale/de/torbutton.properties
@@ -61,10 +61,10 @@ pageInfo_OnionEncryption=Verbindung verschlüsselt (Onion-Dienst)
# Onion services strings. Strings are kept here for ease of translation.
# LOCALIZATION NOTE: %S will be replaced with the .onion address.
-onionServices.clientAuthMissing=Tor onion service missing client authorization
-onionServices.authPrompt.description=%S is requesting your private key.
-onionServices.authPrompt.keyPlaceholder=Enter your private key for this onion service
+onionServices.clientAuthMissing=Dem Onion-Dienst fehlt die Client-Autorisierung.
+onionServices.authPrompt.description=%S fragt deinen privaten Schlüssel an.
+onionServices.authPrompt.keyPlaceholder=Gib deinen privaten Schlüssel für diesen Onion-Dienst ein.
onionServices.authPrompt.done=Fertig
onionServices.authPrompt.doneAccessKey=d
-onionServices.authPrompt.invalidKey=Please enter a valid key (52 base32 characters or 44 base64 characters)
-onionServices.authPrompt.failedToSetKey=Unable to configure Tor with your key
+onionServices.authPrompt.invalidKey=Bitte gib einen gültigen Schlüssel (52 base32-Zeichen oder 44 base64-Zeichen) ein.
+onionServices.authPrompt.failedToSetKey=Das Konfigurieren von Tor mit deinem Schlüssel ist nicht möglich.
diff --git a/chrome/locale/eu/aboutTor.dtd b/chrome/locale/eu/aboutTor.dtd
index 5d11d9cf..da5b8553 100644
--- a/chrome/locale/eu/aboutTor.dtd
+++ b/chrome/locale/eu/aboutTor.dtd
@@ -32,6 +32,6 @@
<!ENTITY aboutTor.donationBanner.buttonA "Egin dohaintza orain">
<!-- End of year 2019 Fundraising campaign -->
-<!ENTITY aboutTor.ey2019.mozilla "Give today, and Mozilla will match your donation.">
-<!ENTITY aboutTor.ey2019.tracking "Tracking, surveillance, and censorship are widespread online.">
-<!ENTITY aboutTor.ey2019.takeback "Take back the Internet with Tor">
+<!ENTITY aboutTor.ey2019.mozilla "Dohaintza egin gaur, eta Mozillak emandakoa berdinduko du.">
+<!ENTITY aboutTor.ey2019.tracking "Jarraipena, jagoletza eta zentsura oso hedatuta daune online.">
+<!ENTITY aboutTor.ey2019.takeback "Berreskuratu Internet-a Torri esker">
diff --git a/chrome/locale/eu/torbutton.dtd b/chrome/locale/eu/torbutton.dtd
index 088070a8..eee9cb90 100644
--- a/chrome/locale/eu/torbutton.dtd
+++ b/chrome/locale/eu/torbutton.dtd
@@ -38,11 +38,11 @@
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Letra-mota, ikono, ikur matematiko batzuk eta irudiak ezgaituta daude.">
<!ENTITY torbutton.prefs.sec_click_to_play_media "Audioa eta bideoa (HTML5 media), eta WebGL erreproduzitzeko klikatu behar da.">
<!ENTITY torbutton.prefs.sec_custom_warning "Pertsonalizatua">
-<!ENTITY torbutton.prefs.sec_overview "Disable certain web features that can be used to attack your security and anonymity.">
+<!ENTITY torbutton.prefs.sec_overview "Ezgaitu zure segurtasuna eta anonimotasuna erasotzeko erabili daitezkeen web ezaugarri batzuk.">
<!ENTITY torbutton.prefs.sec_standard_tooltip "Segurtasun maila : Estandarra">
<!ENTITY torbutton.prefs.sec_safer_tooltip "Segurtasun maila : Seguruagoa">
<!ENTITY torbutton.prefs.sec_safest_tooltip "Segurtasun maila : Seguruena">
-<!ENTITY torbutton.prefs.sec_custom_summary "Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.">
+<!ENTITY torbutton.prefs.sec_custom_summary "Zure nabigatzailearen hobespenek segurtasun ezarpen ezohikoak izatea eragin dute. Segurtasun eta pribatutasun arrazoiak direla medio, gomendatzen dizugu segurtasun maila lehenetsitako bat aukeratzea.">
<!ENTITY torbutton.prefs.sec_restore_defaults "Lehenetsiak berrezarri">
<!ENTITY torbutton.prefs.sec_advanced_security_settings "Segurtasun ezarpen aurreratuak…">
<!ENTITY torbutton.circuit_display.title "Tor Zirkuitoa">
diff --git a/chrome/locale/fa/browserOnboarding.properties b/chrome/locale/fa/browserOnboarding.properties
index 19dcd9b2..3afc18b3 100644
--- a/chrome/locale/fa/browserOnboarding.properties
+++ b/chrome/locale/fa/browserOnboarding.properties
@@ -15,13 +15,13 @@ onboarding.tour-tor-privacy.button=برو به شبکه Tor
onboarding.tour-tor-network=شبکه Tor
onboarding.tour-tor-network.title=در یک شبکه توضیع شده سفر کنید.
onboarding.tour-tor-network.description=مرورگر Tor شما را به شبکه Tor متصل میکند که توسط هزاران داوطلب از گوشه گوشه ی جهان برپا شده است. برخلاف وی پی ان در اینجا هیچ نقطه آسیب پذیر مرکزی که باعث خرابی سیستم بشود یا نیاز باشد که به آن اعتماد کنید تا از وب به طور شخصی لذت ببرید وجود ندارد.
-onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
-onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
+onboarding.tour-tor-network.description-para2=جدید: تنظیمات شبکه Tor، شامل قابلیت درخواست پلها، در مناطقی که Tor مسدود شده است، اکنون در قسمت الویتها قابل دسترسی است.
+onboarding.tour-tor-network.action-button=تنظیمات شبکه Tor را، میزان کنید.
onboarding.tour-tor-network.button=به نمایش جریان بروید
onboarding.tour-tor-circuit-display=نمایش جریان
onboarding.tour-tor-circuit-display.title=مسیر خود را ببینید.
-onboarding.tour-tor-circuit-display.description=برای هر دامنه که بازدید میکنید، ترافیک شما در جریانی از سه رلهی Tor در سراسر جهان رمزگذاری میشود. وبسایت مورد نظر نمیداند که شما از کجا ارتباط را برقرار کردهاید. شما میتوانید درخواست یک جریان جدید را با کلیک بر 'جریان جدید برای این سایت' در بخش نمایش جریان داشته باشید.
+onboarding.tour-tor-circuit-display.description=پس از بازدید از هر دامنه، ترافیک شما در چرخه ای از سه رلهی تور در سراسر جهان رمزگذاری میشود. هیچ وبسایتی نمیداند که شما از کجا ارتباط را برقرار کردهاید. شما میتوانید با کلیک بر 'چرخهی جدید برای این سایت' در بخش نمایش چرخه ها، یک چرخهی جدید درخواست کنید.
onboarding.tour-tor-circuit-display.button=مشاهده مسیر من
onboarding.tour-tor-circuit-display.next-button=برو به امنیت
@@ -49,10 +49,10 @@ onboarding.tour-tor-update.prefix-new=جدید
onboarding.tour-tor-update.prefix-updated=بهروزرسانی شد
onboarding.tour-tor-toolbar=نوار ابزار
-onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
-onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
-onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.title=خداحافظ دکمه Onion.
+onboarding.tour-tor-toolbar-update-9.0.description=ما میخواهیم تجربه شما در استفاده از Tor به صورت کامل درون مرورگر Tor گنجانده شود.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=به همین دلیل است که اکنون، به جای استفاده از دکمه Onion، شما میتوانید چرخه Tor خود را از طریق [i] در نوار آدرس ببینید و یک هویت جدید را از طریق دکمه نوار ابزار یا منو [≡] درخواست دهید.
+onboarding.tour-tor-toolbar-update-9.0.button=چگونگی درخواست یک هویت جدید
onboarding.tour-tor-toolbar-update-9.0.next-button=برو به شبکه Tor
# Circuit Display onboarding.
diff --git a/chrome/locale/fa/torbutton.dtd b/chrome/locale/fa/torbutton.dtd
index 8acfb877..65e1af10 100644
--- a/chrome/locale/fa/torbutton.dtd
+++ b/chrome/locale/fa/torbutton.dtd
@@ -49,4 +49,4 @@
<!ENTITY torbutton.circuit_display.new_circuit "مدار جدید برای این سایت">
<!-- Onion services strings. Strings are kept here for ease of translation. -->
-<!ENTITY torbutton.onionServices.authPrompt.tooltip "Open onion service client authentication prompt">
+<!ENTITY torbutton.onionServices.authPrompt.tooltip "اعلان احراز هویت مشتری در سرویس Onion را باز کن">
diff --git a/chrome/locale/fa/torbutton.properties b/chrome/locale/fa/torbutton.properties
index 1ba14d31..460d3a2e 100644
--- a/chrome/locale/fa/torbutton.properties
+++ b/chrome/locale/fa/torbutton.properties
@@ -61,10 +61,10 @@ pageInfo_OnionEncryption=ارتباط رمزگذاری شد (سرویس پیاز
# Onion services strings. Strings are kept here for ease of translation.
# LOCALIZATION NOTE: %S will be replaced with the .onion address.
-onionServices.clientAuthMissing=Tor onion service missing client authorization
-onionServices.authPrompt.description=%S is requesting your private key.
-onionServices.authPrompt.keyPlaceholder=Enter your private key for this onion service
+onionServices.clientAuthMissing=سرویس Onion در Tor، مجوز مشتری را پیدا نمیکند.
+onionServices.authPrompt.description=%S درخواست کلید خصوصی شما را دارد.
+onionServices.authPrompt.keyPlaceholder=کلید خصوصی خود برای این سرویس Onion را، وارد کنید.
onionServices.authPrompt.done=انجام شد
onionServices.authPrompt.doneAccessKey=d
-onionServices.authPrompt.invalidKey=Please enter a valid key (52 base32 characters or 44 base64 characters)
-onionServices.authPrompt.failedToSetKey=Unable to configure Tor with your key
+onionServices.authPrompt.invalidKey=لطفا یک کلید معتبر وارد نمایید( 52 کاراکتر در مبنای 32 یا 44 کاراکتر در مبنای 64)
+onionServices.authPrompt.failedToSetKey=امکان پیکربندی Tor با کلید شما وجود ندارد
diff --git a/chrome/locale/id/aboutTor.dtd b/chrome/locale/id/aboutTor.dtd
index bde5f87e..5ce15081 100644
--- a/chrome/locale/id/aboutTor.dtd
+++ b/chrome/locale/id/aboutTor.dtd
@@ -32,6 +32,6 @@
<!ENTITY aboutTor.donationBanner.buttonA "Donasi Sekarang">
<!-- End of year 2019 Fundraising campaign -->
-<!ENTITY aboutTor.ey2019.mozilla "Give today, and Mozilla will match your donation.">
+<!ENTITY aboutTor.ey2019.mozilla "Beri hari ini dan Mozilla akan mencocokkan hadiah anda.">
<!ENTITY aboutTor.ey2019.tracking "Tracking, surveillance, and censorship are widespread online.">
<!ENTITY aboutTor.ey2019.takeback "Take back the Internet with Tor">
diff --git a/chrome/locale/ko/torbutton.dtd b/chrome/locale/ko/torbutton.dtd
index 044cd417..d4fd6d0d 100644
--- a/chrome/locale/ko/torbutton.dtd
+++ b/chrome/locale/ko/torbutton.dtd
@@ -1,18 +1,18 @@
<!ENTITY torbutton.context_menu.new_identity "새로운 신원">
<!ENTITY torbutton.context_menu.new_identity_key "I">
-<!ENTITY torbutton.context_menu.new_circuit "Tor 서킷 재구축">
+<!ENTITY torbutton.context_menu.new_circuit "이 사이트에서의 새 Tor 서킷">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
-<!ENTITY torbutton.context_menu.networksettings "토르 네트워크 설정...">
+<!ENTITY torbutton.context_menu.networksettings "Tor 네트워크 설정...">
<!ENTITY torbutton.context_menu.networksettings.key "N">
<!ENTITY torbutton.context_menu.downloadUpdate "토르 브라우저 업데이트 체크하기...">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
-<!ENTITY torbutton.context_menu.cookieProtections "쿠키 보호....">
+<!ENTITY torbutton.context_menu.cookieProtections "쿠키 보호...">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
-<!ENTITY torbutton.button.tooltip "Torbutton 설정 초기화">
+<!ENTITY torbutton.button.tooltip "클릭하여 Torbutton 설정 초기하기">
<!ENTITY torbutton.prefs.security_settings "Tor 브라우저 보안 설정">
<!ENTITY torbutton.cookiedialog.title "쿠키 보호 관리">
<!ENTITY torbutton.cookiedialog.lockCol "보호됨">
-<!ENTITY torbutton.cookiedialog.domainCol "Host">
+<!ENTITY torbutton.cookiedialog.domainCol "호스트">
<!ENTITY torbutton.cookiedialog.nameCol "이름">
<!ENTITY torbutton.cookiedialog.pathCol "경로">
<!ENTITY torbutton.cookiedialog.protectCookie "쿠키 보호">
@@ -22,7 +22,7 @@
<!ENTITY torbutton.cookiedialog.saveAllCookies "새로운 쿠키 보호">
<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "새로운 쿠키를 보호하지 않음">
<!ENTITY torbutton.prefs.sec_caption "보안 등급">
-<!ENTITY torbutton.prefs.sec_caption_tooltip "보안 슬라이더를 사용하면 특정 브라우저 기능이 비활성화 되어 브라우저가 해킹 시도에 취약해질 수 있습니다.">
+<!ENTITY torbutton.prefs.sec_caption_tooltip "보안 슬라이더를 사용하면 특정 브라우저 기능이 비활성화되어 브라우저가 해킹 시도에 취약해질 수 있습니다.">
<!ENTITY torbutton.prefs.sec_standard_label "표준">
<!ENTITY torbutton.prefs.sec_standard_description "모든 Tor 브라우저와 웹사이트의 기능들이 활성화 됩니다.">
<!ENTITY torbutton.prefs.sec_safer_label "더 안전합니다">
@@ -36,7 +36,7 @@
<!ENTITY torbutton.prefs.sec_js_disabled "자바 스크립트는 기본 설정으로 모든 사이트에서 비활성화 되어 있습니다.">
<!ENTITY torbutton.prefs.sec_limit_typography "일부 글꼴이며 수학기호가 비활성화 됩니다.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "일부 글꼴이며 상징이며 수학기호며 사진이 비활성화 됩니다.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "오디오와 비디오(HTML5로 표현된), 그리고 WebGL 은 클릭하여 재생합니다.">
<!ENTITY torbutton.prefs.sec_custom_warning "사용자 맞춤">
<!ENTITY torbutton.prefs.sec_overview "보안과 익명성을 공격하는 데 사용될 수 있는 특정한 웹의 기능을 해제합니다.">
<!ENTITY torbutton.prefs.sec_standard_tooltip "보안 수준:표준">
@@ -49,4 +49,4 @@
<!ENTITY torbutton.circuit_display.new_circuit "이 사이트에서 새로운 서킷을 재구축">
<!-- Onion services strings. Strings are kept here for ease of translation. -->
-<!ENTITY torbutton.onionServices.authPrompt.tooltip "Open onion service client authentication prompt">
+<!ENTITY torbutton.onionServices.authPrompt.tooltip "Onion 서비스 클라이언트 인증 프롬프트 열기">
diff --git a/chrome/locale/ko/torbutton.properties b/chrome/locale/ko/torbutton.properties
index 9eef842b..1e62aca3 100644
--- a/chrome/locale/ko/torbutton.properties
+++ b/chrome/locale/ko/torbutton.properties
@@ -53,7 +53,7 @@ profileMigrationFailed=기존 %S 프로필을 이전하지 못했습니다. 새
# "Downloading update" string for the hamburger menu (see #28885).
# This string is kept here for ease of translation.
# LOCALIZATION NOTE: %S is the application name.
-updateDownloadingPanelUILabel=Downloading %S update
+updateDownloadingPanelUILabel=업데이트 %S 다운로드 중
# .Onion Page Info prompt. Strings are kept here for ease of translation.
pageInfo_OnionEncryptionWithBitsAndProtocol=연결은 암호화했습니다 (Onion 서비스, %1$S, %2$S 비트 키들, %3$S)
@@ -61,10 +61,10 @@ pageInfo_OnionEncryption=연결은 암호화했습니다 (Onion 서비스)
# Onion services strings. Strings are kept here for ease of translation.
# LOCALIZATION NOTE: %S will be replaced with the .onion address.
-onionServices.clientAuthMissing=Tor onion service missing client authorization
-onionServices.authPrompt.description=%S is requesting your private key.
-onionServices.authPrompt.keyPlaceholder=Enter your private key for this onion service
+onionServices.clientAuthMissing=클라이언트 인증이 없는 Tor onion 서비스
+onionServices.authPrompt.description=%S 에서 당신의 개인키를 요구하고 있습니다.
+onionServices.authPrompt.keyPlaceholder=이 onion 서비스를 사용하기 위해 개인키를 입력하세요.
onionServices.authPrompt.done=완성
onionServices.authPrompt.doneAccessKey=d
-onionServices.authPrompt.invalidKey=Please enter a valid key (52 base32 characters or 44 base64 characters)
-onionServices.authPrompt.failedToSetKey=Unable to configure Tor with your key
+onionServices.authPrompt.invalidKey=유효한 키를 입력해주세요. (base32 의 52개 문자나 base64의 44개 문자)
+onionServices.authPrompt.failedToSetKey=이 키로는 Tor 설정을 할 수 없습니다.
diff --git a/chrome/locale/lt/aboutDialog.dtd b/chrome/locale/lt/aboutDialog.dtd
index 274a3e11..8086ac53 100644
--- a/chrome/locale/lt/aboutDialog.dtd
+++ b/chrome/locale/lt/aboutDialog.dtd
@@ -1,4 +1,4 @@
-<!ENTITY project.start "&brandShortName; kuria ">
+<!ENTITY project.start "&brandShortName; plėtoja ">
<!-- LOCALIZATION NOTE (project.tpoLink): This is a link title that links to https://www.torproject.org -->
<!ENTITY project.tpoLink "&vendorShortName;">
<!ENTITY project.end ", ne pelno siekianti organizacija, dirbanti tam, kad apsaugotų jūsų privatumą ir laisvę internete.">
diff --git a/chrome/locale/lt/aboutTBUpdate.dtd b/chrome/locale/lt/aboutTBUpdate.dtd
index 9f28952f..a555d655 100644
--- a/chrome/locale/lt/aboutTBUpdate.dtd
+++ b/chrome/locale/lt/aboutTBUpdate.dtd
@@ -1,7 +1,7 @@
<!ENTITY aboutTBUpdate.changelogTitle "Tor Browser keitinių žurnalas">
-<!ENTITY aboutTBUpdate.updated "Tor Browser atnaujinta.">
+<!ENTITY aboutTBUpdate.updated "Tor Naršyklė atnaujinta.">
<!ENTITY aboutTBUpdate.linkPrefix "Norėdami sužinoti naujausią informaciją apie šią laida, ">
-<!ENTITY aboutTBUpdate.linkLabel "apsilankykite mūsų svetainėje">
+<!ENTITY aboutTBUpdate.linkLabel "apsilankykite mūsų internetinėje svetainėje">
<!ENTITY aboutTBUpdate.linkSuffix ".">
<!ENTITY aboutTBUpdate.version "Versija">
<!ENTITY aboutTBUpdate.releaseDate "Laidos data">
diff --git a/chrome/locale/lt/aboutTor.dtd b/chrome/locale/lt/aboutTor.dtd
index 99ee2a86..487a0454 100644
--- a/chrome/locale/lt/aboutTor.dtd
+++ b/chrome/locale/lt/aboutTor.dtd
@@ -1,5 +1,5 @@
<!--
- - Copyright (c) 2019, The Tor Project, Inc.
+ - Copyright (c) 2018, The Tor Project, Inc.
- See LICENSE for licensing information.
- vim: set sw=2 sts=2 ts=8 et syntax=xml:
-->
@@ -22,16 +22,16 @@
<!ENTITY aboutTor.torbrowser_user_manual.accesskey "V">
<!ENTITY aboutTor.torbrowser_user_manual.label "Tor Browser naudotojo vadovas">
-<!ENTITY aboutTor.tor_mission.label "Tor Project yra JAV 501(c)(3) ne pelno organizacija remianti žmogaus teises ir laisves, kurianti ir diegianti laisvas ir atvirojo kodo anonimiškumo ir privatumo technologijas, palaikanti jų neribotą prieinamumą ir naudojimą bei mokslinį ir visuotinį supratimą.">
+<!ENTITY aboutTor.tor_mission.label "Tor Project yra JAV 501(c)(3) ne pelno organizacija remianti žmogaus teises ir laisves, kurianti ir diegianti laisvas ir atvirojo kodo anonimiškumo bei privatumo technologijas, palaikanti jų neribotą prieinamumą ir naudojimą bei mokslinį ir visuotinį supratimą.">
<!ENTITY aboutTor.getInvolved.label "Įsitraukite »">
<!ENTITY aboutTor.getInvolved.link "https://www.torproject.org/getinvolved/volunteer.html.en">
<!ENTITY aboutTor.newsletter.tagline "Gaukite naujienas iš Tor tiesiai į savo pašto dėžutę.">
<!ENTITY aboutTor.newsletter.link_text "Užsisakykite Tor naujienas.">
<!ENTITY aboutTor.donationBanner.line2e "Išlaikykite Tor stiprų.">
-<!ENTITY aboutTor.donationBanner.buttonA "Paremkite dabar">
+<!ENTITY aboutTor.donationBanner.buttonA "Paaukokite dabar">
<!-- End of year 2019 Fundraising campaign -->
-<!ENTITY aboutTor.ey2019.mozilla "Paremkite šiandien ir Mozilla paaukos tiek pat, kiek ir jūs.">
+<!ENTITY aboutTor.ey2019.mozilla "Paaukokite šiandien ir Mozilla paaukos tiek pat, kiek ir jūs.">
<!ENTITY aboutTor.ey2019.tracking "Sekimas, stebėjimas ir cenzūra internete yra plačiai paplitę.">
<!ENTITY aboutTor.ey2019.takeback "Susigrąžinkite internetą naudodami Tor.">
diff --git a/chrome/locale/lt/brand.dtd b/chrome/locale/lt/brand.dtd
index 8ed99073..788d88f3 100644
--- a/chrome/locale/lt/brand.dtd
+++ b/chrome/locale/lt/brand.dtd
@@ -2,9 +2,9 @@
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<!ENTITY brandShorterName "Tor Browser">
-<!ENTITY brandShortName "Tor Browser">
-<!ENTITY brandFullName "Tor Browser">
+<!ENTITY brandShorterName "Tor Naršyklė">
+<!ENTITY brandShortName "Tor Naršyklė">
+<!ENTITY brandFullName "Tor Naršyklė">
<!ENTITY vendorShortName "Tor projektas">
<!ENTITY trademarkInfo.part1 ""Tor" ir "Onion logotipas" yra registruoti Tor Project, Inc. prekių ženklai.">
diff --git a/chrome/locale/lt/brand.properties b/chrome/locale/lt/brand.properties
index e8049681..88eddfc5 100644
--- a/chrome/locale/lt/brand.properties
+++ b/chrome/locale/lt/brand.properties
@@ -2,9 +2,9 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-brandShorterName=Tor Browser
-brandShortName=Tor Browser
-brandFullName=Tor Browser
+brandShorterName=Tor Naršyklė
+brandShortName=Tor Naršyklė
+brandFullName=Tor Naršyklė
vendorShortName=Tor projektas
homePageSingleStartMain=Firefox Start, greitas pradžios tinklalapis su integruota paieška
diff --git a/chrome/locale/lt/browserOnboarding.properties b/chrome/locale/lt/browserOnboarding.properties
index d2d4252f..b351e854 100644
--- a/chrome/locale/lt/browserOnboarding.properties
+++ b/chrome/locale/lt/browserOnboarding.properties
@@ -4,17 +4,17 @@
onboarding.tour-tor-welcome=Sveiki
onboarding.tour-tor-welcome.title=Esate pasiruošę.
-onboarding.tour-tor-welcome.description=Tor Browser leidžia naršyti po saityną ir tuo pačiu siūlo aukščiausius privatumo bei saugumo standartus. Dabar, esate apsaugoti nuo sekimo, stebėjimo ir cenzūros. Šiame trumpame įvade jums parodysime kaip tai daroma.
+onboarding.tour-tor-welcome.description=Tor Naršyklė leidžia naršyti po saityną ir tuo pačiu siūlo aukščiausius privatumo bei saugumo standartus. Dabar, esate apsaugoti nuo sekimo, stebėjimo ir cenzūros. Šiame trumpame įvade jums parodysime kaip tai daroma.
onboarding.tour-tor-welcome.next-button=Pereiti į privatumą
onboarding.tour-tor-privacy=Privatumas
onboarding.tour-tor-privacy.title=Nepaisykite sekiklių ir šniukštinėtojų.
-onboarding.tour-tor-privacy.description=Tor Browser izoliuoja slapukus ir po kiekvieno naršymo seanso ištrina naršymo istoriją. Šie pakeitimai užtikrina, kad jūsų privatumas ir saugumas naršyklėje yra apsaugoti. Spustelėkite "Tor tinklas", norėdami sužinoti, kaip mes jus apsaugome tinklo lygmenyje.
+onboarding.tour-tor-privacy.description=Tor Naršyklė izoliuoja slapukus ir po kiekvieno naršymo seanso ištrina naršymo istoriją. Šie pakeitimai užtikrina, kad jūsų privatumas ir saugumas naršyklėje yra apsaugoti. Spustelėkite "Tor tinklas", norėdami sužinoti, kaip mes apsaugome jus tinklo lygmenyje.
onboarding.tour-tor-privacy.button=Pereiti prie Tor tinklo
onboarding.tour-tor-network=Tor tinklas
onboarding.tour-tor-network.title=Keliaukite po decentralizuotą tinklą.
-onboarding.tour-tor-network.description=Tor Browser prijungia jus prie Tor tinklo, veikiančio tūkstančių, po visą pasaulį išsidėsčiusių, savanorių dėka. Skirtingai nei VPN, čia, norint mėgautis privačiu naršymu saityne, nėra vieno žlugimo taško, ar centralizuoto objekto, kuriuo turėtumėte pasitikėti.
+onboarding.tour-tor-network.description=Tor Naršyklė prijungia jus prie Tor tinklo, veikiančio tūkstančių, po visą pasaulį išsidėsčiusių, savanorių dėka. Skirtingai nei VPN, čia, norint mėgautis privačiu naršymu saityne, nėra vieno žlugimo taško, ar centralizuoto objekto, kuriuo turėtumėte pasitikėti.
onboarding.tour-tor-network.description-para2=NAUJA: Tor tinklo nustatymai, įtraukiant galimybę prašyti tinklo tiltų, kur Tor užblokuotas, dabar galima rasti pirmenybėse
onboarding.tour-tor-network.action-button=Derinti savo Tor tinklo nustatymus
onboarding.tour-tor-network.button=Pereiti į grandinės rodinį
diff --git a/chrome/locale/lt/torbutton.dtd b/chrome/locale/lt/torbutton.dtd
index c17216b6..a03f0c34 100644
--- a/chrome/locale/lt/torbutton.dtd
+++ b/chrome/locale/lt/torbutton.dtd
@@ -4,12 +4,12 @@
<!ENTITY torbutton.context_menu.new_circuit_key "G">
<!ENTITY torbutton.context_menu.networksettings "Tor tinklo nustatymai…">
<!ENTITY torbutton.context_menu.networksettings.key "N">
-<!ENTITY torbutton.context_menu.downloadUpdate "Tikrinti ar yra Tor Browser atnaujinimų…">
+<!ENTITY torbutton.context_menu.downloadUpdate "Tikrinti, ar yra Tor Naršyklės atnaujinimų…">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
<!ENTITY torbutton.context_menu.cookieProtections "Slapukų apsaugos…">
<!ENTITY torbutton.context_menu.cookieProtections.key "P">
<!ENTITY torbutton.button.tooltip "Spustelėkite, kad aktyvuotumėte Torbutton">
-<!ENTITY torbutton.prefs.security_settings "Tor Browser saugumo nustatymai">
+<!ENTITY torbutton.prefs.security_settings "Tor Naršyklės saugumo nustatymai">
<!ENTITY torbutton.cookiedialog.title "Tvarkyti slapukų apsaugas">
<!ENTITY torbutton.cookiedialog.lockCol "Apsaugotas">
<!ENTITY torbutton.cookiedialog.domainCol "Serveris">
@@ -24,7 +24,7 @@
<!ENTITY torbutton.prefs.sec_caption "Saugumo lygmuo">
<!ENTITY torbutton.prefs.sec_caption_tooltip "Saugumo slankiklis leidžia jums išjungti tam tikras naršyklės ypatybes, kurios gali padaryti jūsų naršyklę labiau pažeidžiamą bandymams įsibrauti.">
<!ENTITY torbutton.prefs.sec_standard_label "Standartinis">
-<!ENTITY torbutton.prefs.sec_standard_description "Visos Tor Browser ir internetinių svetainių ypatybės yra įjungtos.">
+<!ENTITY torbutton.prefs.sec_standard_description "Visos Tor Naršyklės ir internetinių svetainių ypatybės yra įjungtos.">
<!ENTITY torbutton.prefs.sec_safer_label "Saugesnis">
<!ENTITY torbutton.prefs.sec_safer_description "Išjungia tas internetinių svetainių ypatybes, kurios, dažnai, būna pavojingos, dėl to kai kurios svetainės gali prarasti funkcionalumą.">
<!ENTITY torbutton.prefs.sec_safer_list_label "Saugesniame nustatyme:">
diff --git a/chrome/locale/lt/torbutton.properties b/chrome/locale/lt/torbutton.properties
index 5f87153c..7bc5a23e 100644
--- a/chrome/locale/lt/torbutton.properties
+++ b/chrome/locale/lt/torbutton.properties
@@ -8,20 +8,20 @@ torbutton.circuit_display.unknown_country = Nežinoma šalis
torbutton.circuit_display.guard = Sargybinis
torbutton.circuit_display.guard_note = Jūsų [Sargybinis] mazgas negali pasikeisti.
torbutton.circuit_display.learn_more = Sužinoti daugiau
-torbutton.content_sizer.margin_tooltip = Tor Browser prideda šią paraštę, kad jūsų lango plotis ir aukštis būtų mažiau atskiriami ir, tokiu būdu, žmonėms būtų sumažinta galimybė sekti jus internete.
-torbutton.panel.tooltip.disabled = Spustelėkite, kad įjungtumėte Tor
-torbutton.panel.tooltip.enabled = Spustelėkite, kad išjungtumėte Tor
+torbutton.content_sizer.margin_tooltip = Tor Naršyklė prideda šią paraštę, kad jūsų lango plotis ir aukštis būtų mažiau atskiriami ir, tokiu būdu, žmonėms būtų sumažinta galimybė sekti jus internete.
+torbutton.panel.tooltip.disabled = Spustelėkite norėdami įjungti Tor
+torbutton.panel.tooltip.enabled = Spustelėkite norėdami išjungti Tor
torbutton.panel.label.disabled = Tor išjungta
torbutton.panel.label.enabled = Tor įjungta
extensions.torbutton(a)torproject.org.description = Torbutton pateikia mygtuką, skirtą konfigūruoti Tor nustatymus ir greitai bei lengvai išvalyti privačius naršymo duomenis.
torbutton.popup.external.title = Atsisiųsti išorinį failo tipą?
-torbutton.popup.external.app = Tor naršyklė negali atverti šio failo. Jums teks atverti jį, naudojant kitą programą.\n\n
+torbutton.popup.external.app = Tor Naršyklė negali atvaizduoti šio failo. Jums teks jį atverti, naudojant kitą programą.\n\n
torbutton.popup.external.note = Kai kurie failų tipai, gali priversti programas prisijungti prie interneto ne per Tor.\n\n
torbutton.popup.external.suggest = Saugumo sumetimais, parsisiųstus failus derėtų atverti, atsijungus nuo interneto arba naudojant Tor Live CD tokį kaip Tails.\n
torbutton.popup.launch = Atsisiųsti failą
torbutton.popup.cancel = Atsisakyti
torbutton.popup.dontask = Nuo šiol, failus atsisiųsti automatiškai
-torbutton.popup.no_newnym = Torbutton negali jums saugiai suteikti naujos tapatybės. Programa neturi prieigos prie Tor valdymo prievado.\n\nAr jūs esate paleidę Tor naršyklės rinkinį?
+torbutton.popup.no_newnym = Torbutton negali jums saugiai suteikti naujos tapatybės. Programa neturi prieigos prie Tor valdymo prievado.\n\nAr jūs esate paleidę Tor Naršyklės rinkinį?
torbutton.security_settings.menu.title = Saugumo nustatymai
torbutton.title.prompt_torbrowser = Svarbi Torbutton informacija
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
@@ -29,12 +29,12 @@ torbutton.popup.short_torbrowser = Svarbi Torbutton informacija!\n\nDabar, Torbu
torbutton.popup.confirm_plugins = Tokie įskiepiai kaip Flash gali pažeisti jūsų privatumą ir anonimiškumą.\n\nJie taip pat gali apeiti Tor tam, kad atskleistų jūsų dabartinę buvimo vietą ir IP adresą.\n\nAr tikrai norite įjungti įskiepius?\n\n
torbutton.popup.never_ask_again = Daugiau nebeklausti
-torbutton.popup.confirm_newnym = Tor Browser užvers visus langus ir korteles. Visi svetainių seansai bus prarasti.\n\nPaleisti Tor Browser iš naujo dabar, kad būtų atstatyta jūsų tapatybė?\n\n
+torbutton.popup.confirm_newnym = Tor Naršyklė užvers visus langus ir korteles. Visi svetainių seansai bus prarasti.\n\nPaleisti Tor Naršyklę iš naujo dabar, kad būtų atstatyta jūsų tapatybė?\n\n
-torbutton.maximize_warning = Tor Browser išskleidimas gali leisti svetainėms nustatyti jūsų monitoriaus dydį, o tai gali būti naudojama jūsų sekimui. Rekomenduojame palikti Tor naršyklės langus jų pradiniame numatytajame dydyje.
+torbutton.maximize_warning = Tor Naršyklės išskleidimas gali leisti svetainėms nustatyti jūsų monitoriaus dydį, o tai gali būti naudojama jūsų sekimui. Rekomenduojame palikti Tor Naršyklės langus jų pradiniame numatytajame dydyje.
# Canvas permission prompt. Strings are kept here for ease of translation.
-canvas.siteprompt=Ši svetainė (%S) bandė išskleisti HTML5 drobės paveikslo duomenis, kas gali būti panaudota, kad jūsų kompiuteris būtų unikaliai atpažįstamas.\n\nAr Tor Browser turėtų leisti šiai svetainei išskleisti HTML5 drobės paveikslo duomenis?
+canvas.siteprompt=Ši svetainė (%S) bandė išskleisti HTML5 drobės paveikslo duomenis, kas gali būti panaudota, kad jūsų kompiuteris būtų unikaliai atpažįstamas.\n\nAr Tor Naršyklė turėtų leisti šiai svetainei išskleisti HTML5 drobės paveikslo duomenis?
canvas.notNow=Ne dabar
canvas.notNowAccessKey=N
canvas.allow=Leisti ateityje
@@ -66,5 +66,5 @@ onionServices.authPrompt.description=%S prašo jūsų asmeninio rakto.
onionServices.authPrompt.keyPlaceholder=Įveskite asmeninį raktą skirtą šiai onion paslaugai
onionServices.authPrompt.done=Atlikta
onionServices.authPrompt.doneAccessKey=u
-onionServices.authPrompt.invalidKey=Įveskite galiojantį raktą (52 base32 arba 44 base64 simboliai)
+onionServices.authPrompt.invalidKey=Įveskite galiojantį raktą (52 base32 arba 44 base64 simbolius)
onionServices.authPrompt.failedToSetKey=Nepavyko konfigūruoti Tor naudojant jūsų raktą
diff --git a/chrome/locale/ms/aboutTor.dtd b/chrome/locale/ms/aboutTor.dtd
index 65d19b63..10fb2af3 100644
--- a/chrome/locale/ms/aboutTor.dtd
+++ b/chrome/locale/ms/aboutTor.dtd
@@ -1,5 +1,5 @@
<!--
- - Copyright (c) 2019, The Tor Project, Inc.
+ - Copyright (c) 2018, The Tor Project, Inc.
- See LICENSE for licensing information.
- vim: set sw=2 sts=2 ts=8 et syntax=xml:
-->
diff --git a/chrome/locale/th/aboutTor.dtd b/chrome/locale/th/aboutTor.dtd
index 3212475c..cdbfe93e 100644
--- a/chrome/locale/th/aboutTor.dtd
+++ b/chrome/locale/th/aboutTor.dtd
@@ -1,5 +1,5 @@
<!--
- - Copyright (c) 2019, The Tor Project, Inc.
+ - Copyright (c) 2018, The Tor Project, Inc.
- See LICENSE for licensing information.
- vim: set sw=2 sts=2 ts=8 et syntax=xml:
-->
diff --git a/chrome/locale/tr/torbutton.properties b/chrome/locale/tr/torbutton.properties
index 1d643491..3ca2519d 100644
--- a/chrome/locale/tr/torbutton.properties
+++ b/chrome/locale/tr/torbutton.properties
@@ -24,7 +24,7 @@ torbutton.popup.dontask = Bundan sonra dosyalar otomatik indirilsin
torbutton.popup.no_newnym = Torbutton size yeni bir güvenli kimlik sağlayamadı. Tor Denetim Kapısına giriş yapılamıyor.\n\nTor Browser Bundle uygulamasını çalıştırdığınızdan emin olun.
torbutton.security_settings.menu.title = Güvenlik Düzeyi Ayarı
torbutton.title.prompt_torbrowser = Önemli Torbutton Bilgisi
-torbutton.popup.prompt_torbrowser = Torbutton şimdi farklı çalışıyor: artık kapatamıyorsunuz.\n\nBu değişikliği yapmamızın nedeni Tor dışında kullanılan başka bir tarayıcıda Torbutton kullanmanın güvenli olmaması. Başka türlü çözemeyeceğimiz birçok sorun vardı.\n\nFirefox tarayıcısını normal olarak kullanmak istiyorsanız, Torbutton uygulamasını kaldırıp Tor Browser Bundle paketini indirebilirsiniz. Tor Browser kişisel gizliliği koruma özellikleri normal Firefox tarayıcısına, hatta Torbutton ile kullanılan Firefox ikilisine göre çok daha üstündür.\n\nTorbutton uygulamasını kaldırmak için, Araçlar->Eklentiler->Uzantılar bölümüne gidin ve Torbutton yazılımının yanındaki Kaldır düğmesine tıklayın.
+torbutton.popup.prompt_torbrowser = Torbutton şimdi farklı çalışıyor: artık kapatamıyorsunuz.\n\nBu değişikliği yapmamızın nedeni Tor dışında kullanılan başka bir tarayıcıda Torbutton kullanmanın güvenli olmaması. Başka türlü çözemeyeceğimiz birçok sorun vardı.\n\nFirefox tarayıcısını normal olarak kullanmak istiyorsanız, Torbutton uygulamasını kaldırıp Tor Browser Bundle paketini indirebilirsiniz. Tor Browser kişisel gizliliği koruma özellikleri normal Firefox tarayıcısına, hatta Torbutton ile kullanılan Firefox ikilisine göre çok daha üstündür.\n\nTorbutton uygulamasını kaldırmak için, Araçlar->Eklentiler->Uzantılar bölümüne gidin ve Torbutton uygulamasının yanındaki Kaldır düğmesine tıklayın.
torbutton.popup.short_torbrowser = Önemli Torbutton Bilgisi!\n\nTorbutton artık kapatılamayacak şekilde etkinleştirildi.\n\nAyrıntılı bilgi almak için Torbutton üzerine tıklayın.
torbutton.popup.confirm_plugins = Flash gibi eklentiler gizliliğinizi ve anonim kimliğinizi zedeleyebilir.\n\nBu eklentiler Tor uygulamasını atlatarak geçerli konum ve IP adresinizi ortaya çıkarabilir.\n\nBu eklentileri etkinleştirmek istediğinize emin misiniz?\n
diff --git a/chrome/locale/zh-CN/torbutton.properties b/chrome/locale/zh-CN/torbutton.properties
index 3e8d89eb..b70c7836 100644
--- a/chrome/locale/zh-CN/torbutton.properties
+++ b/chrome/locale/zh-CN/torbutton.properties
@@ -65,6 +65,6 @@ onionServices.clientAuthMissing=Tor onion service missing client authorization
onionServices.authPrompt.description=%S is requesting your private key.
onionServices.authPrompt.keyPlaceholder=Enter your private key for this onion service
onionServices.authPrompt.done=完成
-onionServices.authPrompt.doneAccessKey=d
+onionServices.authPrompt.doneAccessKey=天
onionServices.authPrompt.invalidKey=Please enter a valid key (52 base32 characters or 44 base64 characters)
onionServices.authPrompt.failedToSetKey=Unable to configure Tor with your key
1
0
commit 76d6e2134380bd557ee2781f9c6f98bc92759e45
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Nov 26 08:23:24 2019 +0000
Bug 30788: Add ms locale
---
chrome/locale/ms/aboutDialog.dtd | 19 ++++++
chrome/locale/ms/aboutTBUpdate.dtd | 8 +++
chrome/locale/ms/aboutTor.dtd | 74 ++++++++++-------------
chrome/locale/ms/brand.dtd | 15 +++--
chrome/locale/ms/brand.properties | 17 +++---
chrome/locale/ms/browserOnboarding.properties | 72 ++++++++++++++++++++++
chrome/locale/ms/torbutton.dtd | 65 +++++++++++++++-----
chrome/locale/ms/torbutton.properties | 87 ++++++++++++++++++++-------
import-translations.sh | 2 +-
jar.mn | 2 +
10 files changed, 268 insertions(+), 93 deletions(-)
diff --git a/chrome/locale/ms/aboutDialog.dtd b/chrome/locale/ms/aboutDialog.dtd
new file mode 100644
index 00000000..ba27c728
--- /dev/null
+++ b/chrome/locale/ms/aboutDialog.dtd
@@ -0,0 +1,19 @@
+<!ENTITY project.start "&brandShortName; dibangunkan oleh">
+<!-- LOCALIZATION NOTE (project.tpoLink): This is a link title that links to https://www.torproject.org -->
+<!ENTITY project.tpoLink "&vendorShortName;">
+<!ENTITY project.end ", sebuah usaha tidak berasaskan keuntungan untuk melindungi kerahsiaan dan kebebasan atas talian anda.">
+
+<!ENTITY help.start "Mahu membantu?">
+<!-- LOCALIZATION NOTE (help.donate): This is a link title that links to https://www.torproject.org/donate/donate.html.en -->
+<!ENTITY help.donateLink "Derma">
+<!ENTITY help.or "atau">
+<!-- LOCALIZATION NOTE (help.getInvolvedLink): This is a link title that links to https://www.torproject.org/getinvolved/volunteer.html.en -->
+<!ENTITY help.getInvolvedLink "sertai">
+<!ENTITY help.end "!">
+<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to https://www.torproject.org/docs/trademark-faq.html.en -->
+<!ENTITY bottomLinks.questions "Ada Pertanyaan?">
+<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to https://www.torproject.org/getinvolved/relays -->
+<!ENTITY bottomLinks.grow "Bantulah Pembangunan Rangkaian Tor!">
+<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to about:license -->
+<!ENTITY bottomLinks.license "Maklumat Pelesenan">
+<!ENTITY tor.TrademarkStatement "'Tor' dan 'Logo Onion' adalah cap dagangan berdaftar bagi Projek Tor, Inc.">
diff --git a/chrome/locale/ms/aboutTBUpdate.dtd b/chrome/locale/ms/aboutTBUpdate.dtd
new file mode 100644
index 00000000..30470b87
--- /dev/null
+++ b/chrome/locale/ms/aboutTBUpdate.dtd
@@ -0,0 +1,8 @@
+<!ENTITY aboutTBUpdate.changelogTitle "Log Perubahan Pelayar Tor">
+<!ENTITY aboutTBUpdate.updated "Pelayar Tor telah dikemaskinikan.">
+<!ENTITY aboutTBUpdate.linkPrefix "Untuk dapatkan maklumat terkini berkenaan keluaran ini.">
+<!ENTITY aboutTBUpdate.linkLabel "lawati laman sesawang kami">
+<!ENTITY aboutTBUpdate.linkSuffix ".">
+<!ENTITY aboutTBUpdate.version "Versi">
+<!ENTITY aboutTBUpdate.releaseDate "Tarikh Keluaran">
+<!ENTITY aboutTBUpdate.releaseNotes "Nota Keluaran">
diff --git a/chrome/locale/ms/aboutTor.dtd b/chrome/locale/ms/aboutTor.dtd
index 9f14022b..65d19b63 100644
--- a/chrome/locale/ms/aboutTor.dtd
+++ b/chrome/locale/ms/aboutTor.dtd
@@ -1,47 +1,37 @@
<!--
- - Copyright (c) 2014, The Tor Project, Inc.
+ - Copyright (c) 2019, The Tor Project, Inc.
- See LICENSE for licensing information.
- vim: set sw=2 sts=2 ts=8 et syntax=xml:
-->
-<!ENTITY aboutTor.title "About Tor">
-
-<!ENTITY aboutTor.outOfDateTorOn.label "HOWEVER, this browser is out of date.">
-<!ENTITY aboutTor.outOfDateTorOff.label "ALSO, this browser is out of date.">
-<!ENTITY aboutTor.outOfDate2.label "Click on the onion and then choose Download Tor Browser Bundle Update.">
-
-<!ENTITY aboutTor.check.label "Test Tor Network Settings">
-
-<!ENTITY aboutTor.success.label "Congratulations!">
-<!ENTITY aboutTor.success2.label "This browser is configured to use Tor.">
-<!ENTITY aboutTor.success3.label "You are now free to browse the Internet anonymously.">
-<!ENTITY aboutTor.failure.label "Something Went Wrong!">
-<!ENTITY aboutTor.failure2.label "Tor is not working in this browser.">
-<!ENTITY aboutTor.failure3prefix.label "For assistance, please contact ">
-<!ENTITY aboutTor.failure3Link "help(a)rt.torproject.org">
-<!ENTITY aboutTor.failure3suffix.label ".">
-
-<!ENTITY aboutTor.search.label "Search">
-<!ENTITY aboutTor.searchSPPost.link "https://startpage.com/do/search">
-<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
-
-<!ENTITY aboutTor.torInfo1.label "Additional Info:">
-<!ENTITY aboutTor.torInfo2.label "Country & IP Address:">
-<!ENTITY aboutTor.torInfo3.label "Exit Node:">
-<!ENTITY aboutTor.torInfo4.label "This server does not log any information about visitors.">
-<!ENTITY aboutTor.whatnextQuestion.label "What Next?">
-<!ENTITY aboutTor.whatnextAnswer.label "Tor is NOT all you need to browse anonymously! You may need to change some of your browsing habits to ensure your identity stays safe.">
-<!ENTITY aboutTor.whatnext.label "Tips On Staying Anonymous »">
-<!ENTITY aboutTor.whatnext.link "https://www.torproject.org/download/download.html.en#warning">
-<!ENTITY aboutTor.helpInfo1.label "You Can Help!">
-<!ENTITY aboutTor.helpInfo2.label "There are many ways you can help make the Tor Network faster and stronger:">
-<!ENTITY aboutTor.helpInfo3.label "Run a Tor Relay Node »">
-<!ENTITY aboutTor.helpInfo3.link "https://www.torproject.org/docs/tor-doc-relay.html.en">
-<!ENTITY aboutTor.helpInfo4.label "Volunteer Your Services »">
-<!ENTITY aboutTor.helpInfo4.link "https://www.torproject.org/getinvolved/volunteer.html.en">
-<!ENTITY aboutTor.helpInfo5.label "Make a Donation »">
-<!ENTITY aboutTor.helpInfo5.link "https://www.torproject.org/donate/donate.html.en">
-
-<!ENTITY aboutTor.footer.label "The Tor Project is a US 501(c)(3) non-profit dedicated to the research, development, and education of online anonymity and privacy.">
-<!ENTITY aboutTor.learnMore.label "Learn more about The Tor Project »">
-<!ENTITY aboutTor.learnMore.link "https://www.torproject.org/about/overview.html.en">
+<!ENTITY aboutTor.title "Perihal Tor">
+
+<!ENTITY aboutTor.viewChangelog.label "Lihat Log Perubahan">
+
+<!ENTITY aboutTor.ready.label "Menjelajahlah. Secara Persendirian.">
+<!ENTITY aboutTor.ready2.label "Anda kini bersedia menikmati pengalaman melayari Internet secara persendirian.">
+<!ENTITY aboutTor.failure.label "Sesuatu telah berlaku!">
+<!ENTITY aboutTor.failure2.label "Tor tidak berfungsi ke atas pelayar ini.">
+
+<!ENTITY aboutTor.search.label "Gelintar dengan DuckDuckGo">
+<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com">
+
+<!ENTITY aboutTor.torbrowser_user_manual_questions.label "Ada Pertanyaan?">
+<!ENTITY aboutTor.torbrowser_user_manual_link.label "Periksa Panduan Pelayar Tor kami »">
+<!-- The next two entities are used within the browser's Help menu. -->
+<!ENTITY aboutTor.torbrowser_user_manual.accesskey "M">
+<!ENTITY aboutTor.torbrowser_user_manual.label "Panduan Pelayar Tor">
+
+<!ENTITY aboutTor.tor_mission.label "Projek Tor ialah organisasi bukan-berasaskan-keuntungan US 501(c)(3) yang melindungi hak-hak kemanusian dan kebebasan dengan mencipta dan menghasilkan teknologi keawanamaan dan kerahsiaan bebas dan bersumber-terbuka, menyokong ketersediaan dan penggunaan tanpa-had, dan melanjutkan kesefahaman saintifik dan popular mereka.">
+<!ENTITY aboutTor.getInvolved.label "Sertai »">
+<!ENTITY aboutTor.getInvolved.link "https://www.torproject.org/getinvolved/volunteer.html.en">
+
+<!ENTITY aboutTor.newsletter.tagline "Dapatkan berita terkini Tor yang terus ke dalam kotak mel anda.">
+<!ENTITY aboutTor.newsletter.link_text "Daftar untuk dapatkan Berita Tor.">
+<!ENTITY aboutTor.donationBanner.line2e "Pastika Tor kekal teguh.">
+<!ENTITY aboutTor.donationBanner.buttonA "Dermalah Sekarang">
+
+<!-- End of year 2019 Fundraising campaign -->
+<!ENTITY aboutTor.ey2019.mozilla "Sumbanglah hari ini dan Mozilla akan sepadankan sumbangan ikhlas anda!">
+<!ENTITY aboutTor.ey2019.tracking "Penjejakan, pengintipan, dan penapisan kini bermajarajalela di dalam talian.">
+<!ENTITY aboutTor.ey2019.takeback "Perkasakan Internet anda dengan Tor">
diff --git a/chrome/locale/ms/brand.dtd b/chrome/locale/ms/brand.dtd
index 47d33862..d6f3c62d 100644
--- a/chrome/locale/ms/brand.dtd
+++ b/chrome/locale/ms/brand.dtd
@@ -2,7 +2,14 @@
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<!ENTITY brandShortName "Tor Browser">
-<!ENTITY brandFullName "Tor Browser">
-<!ENTITY vendorShortName "Tor Project">
-<!ENTITY trademarkInfo.part1 "'Tor' and the 'Onion Logo' are registered trademarks of the Tor Project, Inc.">
+<!ENTITY brandShorterName "Pelayar Tor">
+<!ENTITY brandShortName "Pelayar Tor">
+<!ENTITY brandFullName "Pelayar Tor">
+<!ENTITY vendorShortName "Projek Tor">
+<!ENTITY trademarkInfo.part1 "'Tor' dan 'Logo Onion' adalah cap dagangan berdaftar bagi Projek Tor, Inc.">
+
+<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
+<!ENTITY plugins.installed.find "Klik untuk muat pemalam sistem terpasang">
+<!ENTITY plugins.installed.enable "Benarkan pemalam">
+<!ENTITY plugins.installed.disable "Lumpuhkan pemalam">
+<!ENTITY plugins.installed.disable.tip "Klik untuk elak memuatkan pemalam sistem">
diff --git a/chrome/locale/ms/brand.properties b/chrome/locale/ms/brand.properties
index f63def38..5adee627 100644
--- a/chrome/locale/ms/brand.properties
+++ b/chrome/locale/ms/brand.properties
@@ -2,14 +2,15 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-brandShortName=Tor Browser
-brandFullName=Tor Browser
-vendorShortName=Tor Project
+brandShorterName=Pelayar Tor
+brandShortName=Pelayar Tor
+brandFullName=Pelayar Tor
+vendorShortName=Projek Tor
-homePageSingleStartMain=Firefox Start, a fast home page with built-in search
-homePageImport=Import your home page from %S
+homePageSingleStartMain=Firefox Start, halaman utama yang pantas dan dilengkapi dengan gelintar terbina-dalam.
+homePageImport=Import halaman utama anda dari %S
-homePageMigrationPageTitle=Home Page Selection
-homePageMigrationDescription=Please select the home page you wish to use:
+homePageMigrationPageTitle=Pemilihan Laman Utama
+homePageMigrationDescription=Sila pilih halaman utama yang ingin digunakan:
-syncBrandShortName=Sync
+syncBrandShortName=Segerak
diff --git a/chrome/locale/ms/browserOnboarding.properties b/chrome/locale/ms/browserOnboarding.properties
new file mode 100644
index 00000000..2a304198
--- /dev/null
+++ b/chrome/locale/ms/browserOnboarding.properties
@@ -0,0 +1,72 @@
+# Copyright (c) 2019, The Tor Project, Inc.
+# See LICENSE for licensing information.
+# vim: set sw=2 sts=2 ts=8 et:
+
+onboarding.tour-tor-welcome=Selamat Datang
+onboarding.tour-tor-welcome.title=Anda sedia.
+onboarding.tour-tor-welcome.description=Pelayar Tor menawatkan piawaian kerahsiaan dan keselamatan tertinggi ketika melayari sesawang. Anda kini dilindungi dari penjejakan, pemantauan, dan penapisan. Panduan pantas ini akan membantu anda bagaimana hendak menggunakannya.
+onboarding.tour-tor-welcome.next-button=Pergi ke Privasi
+
+onboarding.tour-tor-privacy=Privasi
+onboarding.tour-tor-privacy.title=Endah penjejak dan pengintip.
+onboarding.tour-tor-privacy.description=Pelayar Tor mengasingkan kuki dan memadam sejarah pelayar anda selepas sesi tamat. Pengubahsuaian ini memastikan kerahsiaan dan keselamatan pelayar anda dilindungi. Klik 'Rangkaian Tor' untuk mengetahui bagaiaman kami melindungi anda pada tahap rangkaian.
+onboarding.tour-tor-privacy.button=Pergi ke Rangkaian Tor
+
+onboarding.tour-tor-network=Rangkaian Tor
+onboarding.tour-tor-network.title=Menjelajah dengan rangkaian tidak terpusat.
+onboarding.tour-tor-network.description=Pelayar Tor menghubungkan anda dengan rangkaian Tor yang diurus oleh beribu-ribu para sukarelawan di seluruh dunia. Tidak seperti VPN, tiada kegagalan atau entiti terpusat yang anda kena percaya untuk menikmati internet secara persendirian.
+onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.action-button=Laras Tetapan Rangkaian Tor anda
+onboarding.tour-tor-network.button=Pergi ke Paparan Litar
+
+onboarding.tour-tor-circuit-display=Paparan Litar
+onboarding.tour-tor-circuit-display.title=Lihat laluan anda.
+onboarding.tour-tor-circuit-display.description=Bagi setiap domain yang anda lawati, trafik anda disampaikan dan disulitkan dalam litar merentasi tiga geganti Tor mengelilingi dunia. Tiada laman sesawang mengetahui lokasi anda bersambung. Anda boleh pohon satu litar baharu dengan mengklik 'Litar Baharu untuk Laman ini' pada Paparan Litar kami.
+onboarding.tour-tor-circuit-display.button=Lihat Laluan Saya
+onboarding.tour-tor-circuit-display.next-button=Pergi ke Keselamatan
+
+onboarding.tour-tor-security=Keselamatan
+onboarding.tour-tor-security.title=Pilih pengalaman yang dikehendaki.
+onboarding.tour-tor-security.description=Kami juga menyediakan tetapan tambahan untuk menambahbaik keselamatan pelayar anda. Tetapan Keselamatan kami membolehkan anda sekat unsur-unsur yang boleh digunakan untuk menyerang komputer anda. Klik di bawah untuk melihat apakah perbezaan pilihan-pilihan tawarkan.
+onboarding.tour-tor-security.description-suffix=Perhatian: Secara lalai, NoScript dan HTTPS Everywhere tidak di sertakan dalam palang alat, tetapi anda boleh suaikan palang alat untuk menambahnya.
+onboarding.tour-tor-security-level.button=Lihat Tahap Keselamatan Anda
+onboarding.tour-tor-security-level.next-button=Pergi ke Peuta Pengalaman
+
+onboarding.tour-tor-expect-differences=Petua Pengalaman.
+onboarding.tour-tor-expect-differences.title=Jangkakan beberapa perbezaan.
+onboarding.tour-tor-expect-differences.description=Dengan semua fitur keselamatan dan privasi yang disediakan oleh Tor, pengalaman anda ketika melayari internet menjadi sedikit berbeza. Menjadi lebih perlahan berbanding sebelum ini dan juga bergantung pada tahap keselamatan yang anda tetapkan, sesetengah unsur-unsur mungkin tidak berfungsi atau dimuatkan. Anda juga akan ditanya sama ada manusia dan bukan robot.
+onboarding.tour-tor-expect-differences.button=Lihat FAQ
+onboarding.tour-tor-expect-differences.next-button=Pergi ke Perkhidmatan Onion
+
+onboarding.tour-tor-onion-services=Perkhidmatan Onion
+onboarding.tour-tor-onion-services.title=Mahu lebih dilindungi.
+onboarding.tour-tor-onion-services.description=Perkhidmatan Onion merupakan laman-laman berakhir dengan .onion yang menyediakan perlindungan tambahan kepada para penerbit dan pelawat, termasuklah perlindungan terhadap tapisan. Perkhidmatan Onion membolehkan sesiapa sahaja menyediakan kandungan dan perkhidmatan secara awanama. Klik di bawah untuk melawati laman onion DuckDuckGo.
+onboarding.tour-tor-onion-services.button=Lawati Onion
+onboarding.tour-tor-onion-services.next-button=Selesai
+
+onboarding.overlay-icon-tooltip-updated2=Lihat yang terbaharu\ndi dalam %S
+onboarding.tour-tor-update.prefix-new=Baharu
+onboarding.tour-tor-update.prefix-updated=Dikemaskini
+
+onboarding.tour-tor-toolbar=Palang Alat
+onboarding.tour-tor-toolbar-update-9.0.title=Selamat Tinggal Butang Onion.
+onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
+onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
+onboarding.tour-tor-toolbar-update-9.0.next-button=Pergi ke Rangkaian Tor
+
+# Circuit Display onboarding.
+onboarding.tor-circuit-display.next=Seterusnya
+onboarding.tor-circuit-display.done=Selesai
+onboarding.tor-circuit-display.one-of-three=1 dari 3
+onboarding.tor-circuit-display.two-of-three=2 dari 3
+onboarding.tor-circuit-display.three-of-three=3 dari 3
+
+onboarding.tor-circuit-display.intro.title=Bagaimanakah litar-litar ini berfungsi?
+onboarding.tor-circuit-display.intro.msg=Litar-litar diperbuat daripada geganti-geganti terumpuk secara rawak, yang merupakan komputer-komputer di seluruh dunia yang dikonfigur khas untuk memajukan trafik Tor. Litar-litar membolehkan anda melayari Internet secara persendirian yang dihubungkan dengan perkhidmatan onion.
+
+onboarding.tor-circuit-display.diagram.title=Paparan Litar
+onboarding.tor-circuit-display.diagram.msg=Rajah ini menunjukkan geganti-geganti yang terlibat dengan litar bagi laman sesawang ini. Untuk menghindari pemautan aktiviti merentasi laman-laman yang berbeza, setiap laman sesawang memperoleh satu litar yang berlainan.
+
+onboarding.tor-circuit-display.new-circuit.title=Anda perlukan satu litar baharu?
+onboarding.tor-circuit-display.new-circuit.msg=Jika anda masih tidak berjaya bersambung dengan laman sesawang yang ingin dilawati atau laman tidak dimuatkan dengan betul, anda boleh guna butang ini untuk memuatkan semula laman tersebut dengan satu litar baharu.
diff --git a/chrome/locale/ms/torbutton.dtd b/chrome/locale/ms/torbutton.dtd
index fa587065..8a63b220 100644
--- a/chrome/locale/ms/torbutton.dtd
+++ b/chrome/locale/ms/torbutton.dtd
@@ -1,19 +1,52 @@
-<!ENTITY torbutton.context_menu.new_identity "New Identity">
+<!ENTITY torbutton.context_menu.new_identity "Identiti Baharu">
<!ENTITY torbutton.context_menu.new_identity_key "I">
-<!ENTITY torbutton.context_menu.networksettings "Open Network Settings…">
-<!ENTITY torbutton.context_menu.downloadUpdate "Download Tor Browser Bundle Update...">
+<!ENTITY torbutton.context_menu.new_circuit "Litar Tor baharu untuk Laman ini">
+<!ENTITY torbutton.context_menu.new_circuit_key "C">
+<!ENTITY torbutton.context_menu.networksettings "Tetapan Rangkaian Tor...">
+<!ENTITY torbutton.context_menu.networksettings.key "N">
+<!ENTITY torbutton.context_menu.downloadUpdate "Periksa untuk dapatkan Kemaskini Pelayar Tor...">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
-<!ENTITY torbutton.context_menu.cookieProtections "Cookie Protections">
+<!ENTITY torbutton.context_menu.cookieProtections "Perlindungan Kuki...">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
-<!ENTITY torbutton.button.tooltip "Click to initialize Torbutton">
-<!ENTITY torbutton.cookiedialog.title "Manage Cookie Protections">
-<!ENTITY torbutton.cookiedialog.lockCol "Protected">
-<!ENTITY torbutton.cookiedialog.domainCol "Host">
-<!ENTITY torbutton.cookiedialog.nameCol "Name">
-<!ENTITY torbutton.cookiedialog.pathCol "Path">
-<!ENTITY torbutton.cookiedialog.protectCookie "Protect Cookie">
-<!ENTITY torbutton.cookiedialog.removeCookie "Remove Cookie">
-<!ENTITY torbutton.cookiedialog.unprotectCookie "Unprotect Cookie">
-<!ENTITY torbutton.cookiedialog.removeAllBut "Remove All But Protected">
-<!ENTITY torbutton.cookiedialog.saveAllCookies "Protect New Cookies">
-<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "Do Not Protect New Cookies">
+<!ENTITY torbutton.button.tooltip "Klik untuk mengawalkan Torbutton">
+<!ENTITY torbutton.prefs.security_settings "Tetapan Keselamatan Pelayar Tor">
+<!ENTITY torbutton.cookiedialog.title "Urus Perlindungan Kuki">
+<!ENTITY torbutton.cookiedialog.lockCol "Dilindungi">
+<!ENTITY torbutton.cookiedialog.domainCol "Hos">
+<!ENTITY torbutton.cookiedialog.nameCol "Nama">
+<!ENTITY torbutton.cookiedialog.pathCol "Laluan">
+<!ENTITY torbutton.cookiedialog.protectCookie "Lindung Kuki">
+<!ENTITY torbutton.cookiedialog.removeCookie "Buang Kuki">
+<!ENTITY torbutton.cookiedialog.unprotectCookie "Kuki Tidak Dilindungi">
+<!ENTITY torbutton.cookiedialog.removeAllBut "Buang Semua Kecuali Dilindungi">
+<!ENTITY torbutton.cookiedialog.saveAllCookies "Lindungi Kuki Baharu">
+<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "Jangan Lindungi Kuki Baharu">
+<!ENTITY torbutton.prefs.sec_caption "Tahap Keselamatan">
+<!ENTITY torbutton.prefs.sec_caption_tooltip "Pelaras Keselamatan membolehkan anda lumpuhkan beberapa fitur pelayar yang mana ia menjadikan pelayar anda mudah terdedah dengan serangan penggodaman.">
+<!ENTITY torbutton.prefs.sec_standard_label "Piawai">
+<!ENTITY torbutton.prefs.sec_standard_description "Semua Pelayar Tor dan fitur laman sesawang telah dibenarkan.">
+<!ENTITY torbutton.prefs.sec_safer_label "Lebih Selamat">
+<!ENTITY torbutton.prefs.sec_safer_description "Fitur-fitur laman sesawang yang dilumpuhkan biasanya merbahaya, boleh menyebabkan beberapa laman kehilangan kefungsiannya.">
+<!ENTITY torbutton.prefs.sec_safer_list_label "Pada tetapan lebih selamat:">
+<!ENTITY torbutton.prefs.sec_safest_label "Paling Selamat">
+<!ENTITY torbutton.prefs.sec_safest_description "Hanya benarkan fitur-fitur laman sesawang yang diperlukan untuk laman-laman statik dan perkhidmatan asas. Perubahan ini dapat menjejaskan imej, media dan skrip.">
+<!ENTITY torbutton.prefs.sec_safest_list_label "Pada tetapan paling selamat:">
+<!ENTITY torbutton.prefs.sec_learn_more_label "Ketahui lebih lanjut">
+<!ENTITY torbutton.prefs.sec_js_on_https_sites_only "Skrip Java dilumpuhkan pada laman-laman bukan-HTTPS.">
+<!ENTITY torbutton.prefs.sec_js_disabled "Skrip Java dilumpuhkan secara lalai untuk semua laman.">
+<!ENTITY torbutton.prefs.sec_limit_typography "Sesetengah fon dan simbol matematik dilumpuhkan.">
+<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Sesetengah fon, ikon, simbol matematik, dan imej dilumpuhkan.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio dan video (media HTML5) dan WebGL adalah klik-untuk-dimainkan.">
+<!ENTITY torbutton.prefs.sec_custom_warning "Suai">
+<!ENTITY torbutton.prefs.sec_overview "Lumpuhkan beberapa fitur sesawang yang boleh digunakan untuk menyerang keselamatan dan keawanamaan anda.">
+<!ENTITY torbutton.prefs.sec_standard_tooltip "Tahap Keselamatan: Piawai">
+<!ENTITY torbutton.prefs.sec_safer_tooltip "Tahap Keselamatan : Lebih Selamat">
+<!ENTITY torbutton.prefs.sec_safest_tooltip "Tahap Keselamatan : Paling Selamat">
+<!ENTITY torbutton.prefs.sec_custom_summary "Keutamaan pelayar suai anda telah menyebabkan tetapan keselamatan luar jangkaan. Atas sebab keselamatan dan kerahsiaan, kami sarankan anda memilih salah satu daripada tahap keselamatan lalai yang ada.">
+<!ENTITY torbutton.prefs.sec_restore_defaults "Pulih Lalai">
+<!ENTITY torbutton.prefs.sec_advanced_security_settings "Tetapan Keselamatan Lanjutan...">
+<!ENTITY torbutton.circuit_display.title "Litar Tor">
+<!ENTITY torbutton.circuit_display.new_circuit "Lihat baharu untuk Laman ini">
+
+<!-- Onion services strings. Strings are kept here for ease of translation. -->
+<!ENTITY torbutton.onionServices.authPrompt.tooltip "Buka bisikan pengesahihan klien perkhidmatan onion">
diff --git a/chrome/locale/ms/torbutton.properties b/chrome/locale/ms/torbutton.properties
index ee5b1f95..50b40d37 100644
--- a/chrome/locale/ms/torbutton.properties
+++ b/chrome/locale/ms/torbutton.properties
@@ -1,27 +1,70 @@
-torbutton.panel.tooltip.disabled = Click to enable Tor
-torbutton.panel.tooltip.enabled = Click to disable Tor
-torbutton.panel.label.disabled = Tor Disabled
-torbutton.panel.label.enabled = Tor Enabled
-extensions.torbutton(a)torproject.org.description = Torbutton provides a button to configure Tor settings and quickly and easily clear private browsing data.
-torbutton.popup.external.title = Load external content?
-torbutton.popup.external.app = An external application is needed to handle:\n\n
-torbutton.popup.external.note = \n\nNOTE: External applications are NOT Tor safe by default and can unmask you!\n
-torbutton.popup.external.suggest = \nIf this file is untrusted, you should either save it to view while offline or in a VM,\nor consider using a transparent Tor proxy like Tails LiveCD or torsocks.\n
-torbutton.popup.launch = Launch application
-torbutton.popup.cancel = Cancel
-torbutton.popup.dontask = Always launch applications from now on
-torbutton.popup.prompted_language = To give you more privacy, Torbutton can request the English language version of web pages. This may cause web pages that you prefer to read in your native language to display in English instead.\n\nWould you like to request English language web pages for better privacy?
-torbutton.popup.no_newnym = Torbutton cannot safely give you a new identity. It does not have access to the Tor Control Port.\n\nAre you running Tor Browser Bundle?
-torbutton.title.prompt_torbrowser = Important Torbutton Information
-torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
-torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+torbutton.circuit_display.internet = Internet
+torbutton.circuit_display.ip_unknown = IP tidak diketahui
+torbutton.circuit_display.onion_site = Laman Onion
+torbutton.circuit_display.this_browser = Pelayar ini
+torbutton.circuit_display.relay = Geganti
+torbutton.circuit_display.tor_bridge = Titi
+torbutton.circuit_display.unknown_country = Negara tidak diketahui
+torbutton.circuit_display.guard = Jaga
+torbutton.circuit_display.guard_note = Nod [Jaga] anda tidak berubah.
+torbutton.circuit_display.learn_more = Ketahui lebih lanjut
+torbutton.content_sizer.margin_tooltip = Pelayar Tor menambah jidar ini untuk memastikan tinggi dan lebar tetingkap anda kurang dikenali, dan seterusnya mengurangkan keupayaan orang lain menjejak anda ketika berada diatas-talian.
+torbutton.panel.tooltip.disabled = Klik untuk benarkan Tor
+torbutton.panel.tooltip.enabled = Klik untuk lumpuhkan Tor
+torbutton.panel.label.disabled = Tor Dilumpuhkan
+torbutton.panel.label.enabled = Tor Dibenarkan
+extensions.torbutton(a)torproject.org.description = Torbutton menyediakan butang bagi mengkonfigur tetapan Tor secara pantas dan mudah membersihkan data pelayaran persendirian anda.
+torbutton.popup.external.title = Muat turun jenis fail luar?
+torbutton.popup.external.app = Pelayar Tor tidak dapat paparkan fail ini. Anda perlu membukanya dengan aplikasi lain.\n\n
+torbutton.popup.external.note = Sesetengah jenis fail boleh menyebabkan aplikasi menyambung dengan Internet tanpa menggunakan Tor.\n\n
+torbutton.popup.external.suggest = Sebagai langkah berjaga-jaga, anda sepatutnya hanya membuka fail dimuat turun ketika berada diluar talian, atau guna CD Langsung Tor seperti Tails.\n
+torbutton.popup.launch = Muat turun fail
+torbutton.popup.cancel = Batal
+torbutton.popup.dontask = Muat turun fail secara automatik mulai sekarang
+torbutton.popup.no_newnym = Torbutton tidak dapat memberikan anda identiti baharu secara selamat. Ia tidak mempunyai capaian ke Port Kawalan Tor.\n\nAnda pasti masih menjalankan Berkas Pelayar Tor?
+torbutton.security_settings.menu.title = Tetapan Keselamatan
+torbutton.title.prompt_torbrowser = Maklumat Torbutton Penting
+torbutton.popup.prompt_torbrowser = Torbutton berfungsi secara berlainan sekarang: anda tidak boleh mematikannya lagi.\n\nKami membuat perubahan ini kerana ia tidak selamat menggunakan Torbutton dalam pelayar yang juga digunakan untuk pelayaran bukan-Tor. Terdapat terlalu banyak pepijat yang masih belum dibaiki.\n\nJika anda mahu menggunakan Firefox seperti biasa, anda patut menyahpasang Torbutton dan muat turun Berkas Pelayar Tor. Sifat kerahsiaan Pelayar Tor adalah lebih baik berbanding Firefox biasa, walaupun Firefox digandingkan dengan Torbutton.\n\nUntuk membuang Torbutton, pergi ke Alatan>Tambahan>Sambungan dan kemudian klik butang Buang bersebelahan Torbutton.
+torbutton.popup.short_torbrowser = Maklumat Torbutton Penting! \n\nTorbutton kini sentiasa dibenarkan. \n\nKlik pada Torbutton untuk maklumat lanjut.
-torbutton.popup.confirm_plugins = Plugins such as Flash can harm your privacy and anonymity.\n\nThey can also bypass Tor to reveal your current location and IP address.\n\nAre you sure you want to enable plugins?\n\n
-torbutton.popup.never_ask_again = Never ask me again
+torbutton.popup.confirm_plugins = Pemalam seperti Flash boleh mengganggu privasi dan keawanamaan anda.\n\nIa juga boleh melepasi Tor dan mendedahkan lokasi dan alamat IP semasa anda.\n\nAnda pasti anda mahu benarkan pemalam tersebut?\n\n
+torbutton.popup.never_ask_again = Jangan tanya saya lagi
+torbutton.popup.confirm_newnym = Pelayar Tor akan menutup semua tetingkap dan tab. Semua sesi laman sesawang akan hilang.\n\nMulakan semula Pelayar Tor sekarang untuk tetapkan semula identiti anda?\n\n
+
+torbutton.maximize_warning = Memaksimumkan Pelayar Tor dapat membenarkan laman sesawang tentukan saiz monitor anda, yang mana boleh digunakan untuk menjejak anda. Kami sarankan anda biarkan tetingkap Pelayar Tor dalam saiz lalai asalnya.
# Canvas permission prompt. Strings are kept here for ease of translation.
-canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
-canvas.allow=Allow in the Future
+canvas.siteprompt=Laman sesawang (%S) ini cuba mengekstrak data imej kanvas HTML5, yang boleh digunakan untuk mengecam komputer anda secara unik.\n\nPatutkah Pelayar Tor membenarkan laman sesawang ini mengekstrak data imej kanvas HTML5?
+canvas.notNow=Bukan Sekarang
+canvas.notNowAccessKey=N
+canvas.allow=Benarkan pada masa hadapan
canvas.allowAccessKey=A
-canvas.never=Never for This Site
+canvas.never=Tidak sesekali untuk laman ini (disarankan)
canvas.neverAccessKey=e
+
+# Profile/startup error messages. Strings are kept here for ease of translation.
+# LOCALIZATION NOTE: %S is the application name.
+profileProblemTitle=Masalah Profil %S
+profileReadOnly=Anda tidak boleh jalankan %S dari sistem fail baca-sahaja. Sila salin %S ke lokasi lain sebelum cuba gunakannya.
+profileReadOnlyMac=Anda tidak boleh jalankan %S dari sistem fail baca-sahaja. Sila salin %S ke folder Desktop atau Aplikasi anda sebelum cuba gunakannya.
+profileAccessDenied=%S tidak mempunyai keizinan untuk mencapai profil. Sila laras keizinan sistem fail anda dan cuba sekali lagi.
+profileMigrationFailed=Pemindahan profil sedia anda telah gagal.\nTetapan baharu akan digunakan.
+
+# "Downloading update" string for the hamburger menu (see #28885).
+# This string is kept here for ease of translation.
+# LOCALIZATION NOTE: %S is the application name.
+updateDownloadingPanelUILabel=Memuat turun %S kemaskini
+
+# .Onion Page Info prompt. Strings are kept here for ease of translation.
+pageInfo_OnionEncryptionWithBitsAndProtocol=Sambungan Tersulit (Perkhidmatan Onion, %1$S, %2$S bit kunci, %3$S)
+pageInfo_OnionEncryption=Sambungan Tersulit (Perkhidmatan Onion)
+
+# Onion services strings. Strings are kept here for ease of translation.
+# LOCALIZATION NOTE: %S will be replaced with the .onion address.
+onionServices.clientAuthMissing=Tor onion service missing client authorization
+onionServices.authPrompt.description=%S is requesting your private key.
+onionServices.authPrompt.keyPlaceholder=Enter your private key for this onion service
+onionServices.authPrompt.done=Selesai
+onionServices.authPrompt.doneAccessKey=d
+onionServices.authPrompt.invalidKey=Please enter a valid key (52 base32 characters or 44 base64 characters)
+onionServices.authPrompt.failedToSetKey=Unable to configure Tor with your key
diff --git a/import-translations.sh b/import-translations.sh
index 41bdfe57..802de473 100755
--- a/import-translations.sh
+++ b/import-translations.sh
@@ -2,7 +2,7 @@
# This var comes from the TBB locale list.
# XXX: Find some way to keep this, tor-launcher, and Tor Browser in sync
-BUNDLE_LOCALES="ar ca cs da de el es-AR es-ES fa fr ga-IE he hu id is it ja ka ko lt nb-NO mk nl pl pt-BR ro ru sv-SE tr vi zh-CN zh-TW"
+BUNDLE_LOCALES="ar ca cs da de el es-AR es-ES fa fr ga-IE he hu id is it ja ka ko lt nb-NO mk ms nl pl pt-BR ro ru sv-SE tr vi zh-CN zh-TW"
# XXX: Basque (eu) by request in #10687.
# This is not used for official builds, but should remain so Basque XPIs can be
diff --git a/jar.mn b/jar.mn
index 6110982c..ae088364 100644
--- a/jar.mn
+++ b/jar.mn
@@ -63,6 +63,8 @@ torbutton.jar:
locale/lt/ (chrome/locale/lt/*)
% locale torbutton mk %locale/mk/
locale/mk/ (chrome/locale/mk/*)
+% locale torbutton ms %locale/ms/
+ locale/ms/ (chrome/locale/ms/*)
% locale torbutton nb-NO %locale/nb-NO/
locale/nb-NO/ (chrome/locale/nb-NO/*)
% locale torbutton nl %locale/nl/
1
0
commit cb83b2758bf9a616d1d7275ee8e099e56544bd21
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Nov 26 08:22:50 2019 +0000
Translations update
---
chrome/locale/bn-BD/browserOnboarding.properties | 6 +++---
chrome/locale/bn-BD/torbutton.dtd | 2 +-
chrome/locale/bn-BD/torbutton.properties | 10 +++++-----
chrome/locale/ro/aboutTor.dtd | 2 +-
4 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/chrome/locale/bn-BD/browserOnboarding.properties b/chrome/locale/bn-BD/browserOnboarding.properties
index 6f458a2a..d905482f 100644
--- a/chrome/locale/bn-BD/browserOnboarding.properties
+++ b/chrome/locale/bn-BD/browserOnboarding.properties
@@ -15,7 +15,7 @@ onboarding.tour-tor-privacy.button=টর নেটওয়ার্কে য
onboarding.tour-tor-network=টর নেটওয়ার্ক
onboarding.tour-tor-network.title=একটি বিকেন্দ্রীকরণের নেটওয়ার্ক পরিভ্রমণ করে ।
onboarding.tour-tor-network.description=টর ব্রাউজার আপনাকে বিশ্বের হাজার হাজার স্বেচ্ছাসেবকদের দ্বারা পরিচালিত টর নেটওয়ার্কে সংযুক্ত করে। একটি ভিপিএন এর থেকে ভিন্ন, ইন্টারনেটের উপভোগ করার জন্য আপনার কোনও ব্যর্থতা বা কেন্দ্রীয় সত্তাকে বিশ্বাস করতে হবে।
-onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
+onboarding.tour-tor-network.description-para2=নতুন: টর ব্লক করা ব্রিজগুলির জন্য অনুরোধ করার ক্ষমতা সহ টর নেটওয়ার্ক সেটিংস এখন পছন্দসমূহে পাওয়া যাবে।
onboarding.tour-tor-network.action-button=আপনার টোর নেটওয়ার্ক সেটিংস সামঞ্জস্য করুন
onboarding.tour-tor-network.button=সার্কিট ডিসপ্লে-তে যান
@@ -28,7 +28,7 @@ onboarding.tour-tor-circuit-display.next-button=সিকিউরিটিত
onboarding.tour-tor-security=নিরাপত্তা
onboarding.tour-tor-security.title=আপনার অভিজ্ঞতা পছন্দ করুন ।
onboarding.tour-tor-security.description=আমরা আপনার ব্রাউজার নিরাপত্তা উন্নয়নের জন্য অতিরিক্ত সেটিংস প্রদান করি। আমাদের সুরক্ষা সেটিংস আপনাকে এমন উপাদানগুলিকে ব্লক করার অনুমতি দেয় যা আপনার কম্পিউটারে আক্রমণ করার জন্য ব্যবহার করা যেতে পারে। বিভিন্ন অপশন কি দেখতে নিচে ক্লিক করুন।
-onboarding.tour-tor-security.description-suffix=Note: By default, NoScript and HTTPS Everywhere are not included on the toolbar, but you can customize your toolbar to add them.
+onboarding.tour-tor-security.description-suffix=দ্রষ্টব্য: ডিফল্টরূপে, নোস্ক্রিপ্ট এবং এইচটিটিপিএস সর্বত্র টুলবারে অন্তর্ভুক্ত নয়, তবে এগুলি যুক্ত করতে আপনি নিজের সরঞ্জামদণ্ডটি কাস্টমাইজ করতে পারেন।
onboarding.tour-tor-security-level.button=আপনার নিরাপত্তা স্তর দেখুন
onboarding.tour-tor-security-level.next-button=অভিজ্ঞতার টিপসে যান
@@ -51,7 +51,7 @@ onboarding.tour-tor-update.prefix-updated=আপডেট করা হয়ে
onboarding.tour-tor-toolbar=টুলবার
onboarding.tour-tor-toolbar-update-9.0.title=বিদায় Onion বোতাম।
onboarding.tour-tor-toolbar-update-9.0.description=Tor Browser মধ্যে পুরোপুরি সংহত করতে আমরা আপনার Tor ব্যবহার করার অভিজ্ঞতা চাই।
-onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=এজন্য এখন, পেঁয়াজ বোতামটি ব্যবহার করার পরিবর্তে, আপনি ইউআরএল বারে [i] এর মাধ্যমে টর সার্কিট দেখতে পারেন এবং টুলবার বোতাম বা [≡] মেনু ব্যবহার করে একটি নতুন পরিচয়ের জন্য অনুরোধ করতে পারেন।
onboarding.tour-tor-toolbar-update-9.0.button=নতুন পরিচয়ের জন্য কীভাবে অনুরোধ করবেন
onboarding.tour-tor-toolbar-update-9.0.next-button=টর নেটওয়ার্কে যান
diff --git a/chrome/locale/bn-BD/torbutton.dtd b/chrome/locale/bn-BD/torbutton.dtd
index 4f68679b..d9579cff 100644
--- a/chrome/locale/bn-BD/torbutton.dtd
+++ b/chrome/locale/bn-BD/torbutton.dtd
@@ -49,4 +49,4 @@
<!ENTITY torbutton.circuit_display.new_circuit "এই সাইটের জন্য নতুন সার্কিট">
<!-- Onion services strings. Strings are kept here for ease of translation. -->
-<!ENTITY torbutton.onionServices.authPrompt.tooltip "Open onion service client authentication prompt">
+<!ENTITY torbutton.onionServices.authPrompt.tooltip "onion সার্ভিস ক্লায়েন্টের অথেনটিকেশন প্রম্পটটি খুলুন">
diff --git a/chrome/locale/bn-BD/torbutton.properties b/chrome/locale/bn-BD/torbutton.properties
index f169a1b1..1ff0a8e1 100644
--- a/chrome/locale/bn-BD/torbutton.properties
+++ b/chrome/locale/bn-BD/torbutton.properties
@@ -61,10 +61,10 @@ pageInfo_OnionEncryption=সংযোগ এনক্রিপ্ট (Onion Serv
# Onion services strings. Strings are kept here for ease of translation.
# LOCALIZATION NOTE: %S will be replaced with the .onion address.
-onionServices.clientAuthMissing=Tor onion service missing client authorization
-onionServices.authPrompt.description=%S is requesting your private key.
-onionServices.authPrompt.keyPlaceholder=Enter your private key for this onion service
+onionServices.clientAuthMissing=Tor onion পরিষেবা ক্লায়েন্টের অনুমোদন হারিয়েছে
+onionServices.authPrompt.description=%S আপনার ব্যক্তিগত কীটির জন্য অনুরোধ করছে।
+onionServices.authPrompt.keyPlaceholder=এই onion পরিষেবার জন্য আপনার ব্যক্তিগত কী লিখুন
onionServices.authPrompt.done=সম্পন্ন
onionServices.authPrompt.doneAccessKey=d
-onionServices.authPrompt.invalidKey=Please enter a valid key (52 base32 characters or 44 base64 characters)
-onionServices.authPrompt.failedToSetKey=Unable to configure Tor with your key
+onionServices.authPrompt.invalidKey=দয়া করে একটি বৈধ কী (52 বেস32 অক্ষর বা 44 বেস 64 অক্ষর) প্রবেশ করুন
+onionServices.authPrompt.failedToSetKey=আপনার কী দিয়ে টর কনফিগার করতে অক্ষম
diff --git a/chrome/locale/ro/aboutTor.dtd b/chrome/locale/ro/aboutTor.dtd
index 31550ff2..af4e0ff5 100644
--- a/chrome/locale/ro/aboutTor.dtd
+++ b/chrome/locale/ro/aboutTor.dtd
@@ -33,5 +33,5 @@
<!-- End of year 2019 Fundraising campaign -->
<!ENTITY aboutTor.ey2019.mozilla "Donează azi, și Mozilla va dona în aceeași măsură.">
-<!ENTITY aboutTor.ey2019.tracking "Tracking, surveillance, and censorship are widespread online.">
+<!ENTITY aboutTor.ey2019.tracking "Urmărirea, supravegherea și cenzura sunt răspândite online.">
<!ENTITY aboutTor.ey2019.takeback "Take back the Internet with Tor">
1
0
[torbutton/maint-9.0] Bug 28745: Remove torbutton.js unused code
by sysrqb@torproject.org 03 Jan '20
by sysrqb@torproject.org 03 Jan '20
03 Jan '20
commit 65e1e8ba67ba865e7b3ded74b7e4bbc5b86c721c
Author: Alex Catarineu <acat(a)torproject.org>
Date: Tue Jun 11 15:54:08 2019 +0200
Bug 28745: Remove torbutton.js unused code
---
chrome/content/torbutton.js | 114 --------------------------------------------
1 file changed, 114 deletions(-)
diff --git a/chrome/content/torbutton.js b/chrome/content/torbutton.js
index b9642a89..e75584cf 100644
--- a/chrome/content/torbutton.js
+++ b/chrome/content/torbutton.js
@@ -537,26 +537,6 @@ function torbutton_notify_if_update_needed() {
setOrClearAttribute(item, "tbUpdateNeeded", updateNeeded);
}
-function torbutton_check_for_update() {
- // Open the update prompt in the correct mode. The update state
- // checks used here were adapted from isPending() and isApplied() in
- // Mozilla's browser/base/content/aboutDialog.js code.
- let updateMgr = Cc["@mozilla.org/updates/update-manager;1"]
- .getService(Ci.nsIUpdateManager);
- let update = updateMgr.activeUpdate;
- let updateState = (update) ? update.state : undefined;
- let pendingStates = [ "pending", "pending-service",
- "applied", "applied-service" ];
- let isPending = (updateState && (pendingStates.indexOf(updateState) >= 0));
-
- let prompter = Cc["@mozilla.org/updates/update-prompt;1"]
- .createInstance(Ci.nsIUpdatePrompt);
- if (isPending)
- prompter.showUpdateDownloaded(update, false);
- else
- prompter.checkForUpdates();
-}
-
// Bug 1506 P4: Checking for Tor Browser updates is pretty important,
// probably even as a fallback if we ever do get a working updater.
function torbutton_do_async_versioncheck() {
@@ -1482,39 +1462,6 @@ function torbutton_close_tabs_on_new_identity() {
torbutton_log(3, "Closed all tabs");
}
-// Bug 1506 P2: This code is only important for disabling
-// New Identity where it is not supported (ie no control port).
-function torbutton_check_protections()
-{
- var env = Cc["@mozilla.org/process/environment;1"]
- .getService(Ci.nsIEnvironment);
-
- // Bug 14100: check for the existence of an environment variable
- // in order to toggle the visibility of networksettings menuitem
- if (env.exists("TOR_NO_DISPLAY_NETWORK_SETTINGS"))
- document.getElementById("torbutton-networksettings").hidden = true;
- else
- document.getElementById("torbutton-networksettings").hidden = false;
-
- // Bug 21091: check for the existence of an environment variable
- // in order to toggle the visibility of the torbutton-checkForUpdate
- // menuitem and its separator.
- if (env.exists("TOR_HIDE_UPDATE_CHECK_UI")) {
- document.getElementById("torbutton-checkForUpdateSeparator").hidden = true;
- document.getElementById("torbutton-checkForUpdate").hidden = true;
- } else {
- document.getElementById("torbutton-checkForUpdateSeparator").hidden = false;
- document.getElementById("torbutton-checkForUpdate").hidden = false;
- }
-
- if (!m_tb_control_pass || (!m_tb_control_ipc_file && !m_tb_control_port)) {
- // TODO: Remove the Torbutton menu entry again once we have done our
- // security control redesign.
- document.getElementById("menu_newIdentity").disabled = true;
- document.getElementById("appMenuNewIdentity").disabled = true;
- }
-}
-
// -------------- HISTORY & COOKIES ---------------------
// Bug 1506 P4: Used by New Identity if cookie protections are
@@ -1843,13 +1790,6 @@ function torbutton_close_window(event) {
}
}
-
-function torbutton_open_network_settings() {
- var obsSvc = Services.obs;
- obsSvc.notifyObservers(this, "TorOpenNetworkSettings");
-}
-
-
window.addEventListener('load',torbutton_new_window,false);
window.addEventListener('unload', torbutton_close_window, false);
@@ -1956,60 +1896,6 @@ var torbutton_resizelistener =
onSecurityChange: function() {}
};
-// aURI should be an http or https nsIURI object.
-function torbutton_get_current_accept_language_value(aURI)
-{
- try {
- let ioService = Services.io;
- let channel = ioService.newChannelFromURI(aURI);
- let httpChannel = channel.QueryInterface(Ci.nsIHttpChannel);
- return httpChannel.getRequestHeader("Accept-Language");
- } catch (e) {}
-
- return null;
-}
-
-// Take URL strings the user has specified for a homepage
-// and normalize it so it looks like a real URL.
-function torbutton_normalize_homepage_url_string(aURLString)
-{
- if (!aURLString) return null;
- if (typeof aURLString !== "string") return null;
- let url;
- try {
- url = new URL(aURLString);
- } catch (e) {
- try {
- url = new URL("http://" + aURLString);
- } catch (e) {
- return null;
- }
- }
- return url.href;
-}
-
-function torbutton_is_homepage_url(aURI)
-{
- if (!aURI)
- return false;
-
- let homePageURLs;
- let choice = m_tb_prefs.getIntPref("browser.startup.page");
- if ((1 == choice) || (3 == choice)) try {
- // A homepage may be used at startup. Get the values and check against
- // aURI.spec.
- homePageURLs = m_tb_prefs.getComplexValue("browser.startup.homepage",
- Ci.nsIPrefLocalizedString).data;
- } catch (e) {}
-
- if (!homePageURLs)
- return false;
-
- let urls = homePageURLs.split('|')
- .map(torbutton_normalize_homepage_url_string);
- return (urls.indexOf(aURI.spec) >= 0);
-}
-
// Makes sure the item in the Help Menu and the link in about:tor
// for the Tor Browser User Manual are only visible when
// show_torbrowser_manual() returns true.
1
0
commit bc12e0ce5addc311a2108045e2989bda201ca983
Author: Georg Koppen <gk(a)torproject.org>
Date: Mon Nov 25 09:25:56 2019 +0000
Translations update
---
chrome/locale/ar/aboutDialog.dtd | 10 +++++-----
chrome/locale/ar/torbutton.dtd | 2 +-
chrome/locale/ar/torbutton.properties | 10 +++++-----
chrome/locale/da/browserOnboarding.properties | 4 ++--
chrome/locale/da/torbutton.dtd | 2 +-
chrome/locale/da/torbutton.properties | 16 ++++++++--------
chrome/locale/it/torbutton.dtd | 2 +-
chrome/locale/it/torbutton.properties | 10 +++++-----
chrome/locale/ja/browserOnboarding.properties | 2 +-
chrome/locale/pt-BR/torbutton.dtd | 2 +-
chrome/locale/pt-BR/torbutton.properties | 10 +++++-----
chrome/locale/zh-TW/aboutTor.dtd | 4 ++--
chrome/locale/zh-TW/torbutton.dtd | 2 +-
13 files changed, 38 insertions(+), 38 deletions(-)
diff --git a/chrome/locale/ar/aboutDialog.dtd b/chrome/locale/ar/aboutDialog.dtd
index e211f8b1..f2b2adfe 100644
--- a/chrome/locale/ar/aboutDialog.dtd
+++ b/chrome/locale/ar/aboutDialog.dtd
@@ -1,19 +1,19 @@
-<!ENTITY project.start "طوّر &brandShortName;">
+<!ENTITY project.start " تطوير: &brandShortName;">
<!-- LOCALIZATION NOTE (project.tpoLink): This is a link title that links to https://www.torproject.org -->
<!ENTITY project.tpoLink "&vendorShortName;">
-<!ENTITY project.end "، مؤسسة غير هادفة للربح تعمل على حماية خصوصيتك وحريتك على الإنترنت.">
+<!ENTITY project.end "، مؤسسة غير هادفة للرّبح تعمل على حماية الخصوصيّة والحرّية على الإنترنت.">
<!ENTITY help.start "هل ترغب في المساعدة؟">
<!-- LOCALIZATION NOTE (help.donate): This is a link title that links to https://www.torproject.org/donate/donate.html.en -->
<!ENTITY help.donateLink "تبرّع">
<!ENTITY help.or "أو">
<!-- LOCALIZATION NOTE (help.getInvolvedLink): This is a link title that links to https://www.torproject.org/getinvolved/volunteer.html.en -->
-<!ENTITY help.getInvolvedLink "شارك">
+<!ENTITY help.getInvolvedLink "شاركوا">
<!ENTITY help.end "!">
<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to https://www.torproject.org/docs/trademark-faq.html.en -->
<!ENTITY bottomLinks.questions "أية أسئلة؟">
<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to https://www.torproject.org/getinvolved/relays -->
-<!ENTITY bottomLinks.grow "ساعد شبكة تور على النمو.">
+<!ENTITY bottomLinks.grow "ساعدوا شبكة تور على النّمو!">
<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to about:license -->
<!ENTITY bottomLinks.license "معلومات الترخيص">
-<!ENTITY tor.TrademarkStatement ""تور" و "شعار البصلة" علامات تجارية مسجلة باسم شركة مشروع تور المحدودة">
+<!ENTITY tor.TrademarkStatement ""تور" و "شعار البصلة" هي علامات تجاريّة مسجّلة باسم مشروع تور المحدودة">
diff --git a/chrome/locale/ar/torbutton.dtd b/chrome/locale/ar/torbutton.dtd
index 312f663c..0f63af50 100644
--- a/chrome/locale/ar/torbutton.dtd
+++ b/chrome/locale/ar/torbutton.dtd
@@ -49,4 +49,4 @@
<!ENTITY torbutton.circuit_display.new_circuit "دائرة تور جديدة لهذا الموقع">
<!-- Onion services strings. Strings are kept here for ease of translation. -->
-<!ENTITY torbutton.onionServices.authPrompt.tooltip "Open onion service client authentication prompt">
+<!ENTITY torbutton.onionServices.authPrompt.tooltip "فتح مُنبّه استيثاق على عميل خدمة البصلة أو Onion Service">
diff --git a/chrome/locale/ar/torbutton.properties b/chrome/locale/ar/torbutton.properties
index f9bdef7f..01de9a59 100644
--- a/chrome/locale/ar/torbutton.properties
+++ b/chrome/locale/ar/torbutton.properties
@@ -61,10 +61,10 @@ pageInfo_OnionEncryption=الاتصال معمى (خدمة بصلة)
# Onion services strings. Strings are kept here for ease of translation.
# LOCALIZATION NOTE: %S will be replaced with the .onion address.
-onionServices.clientAuthMissing=Tor onion service missing client authorization
-onionServices.authPrompt.description=%S is requesting your private key.
-onionServices.authPrompt.keyPlaceholder=Enter your private key for this onion service
+onionServices.clientAuthMissing=ينقص خدمة البصلة من تور استيثاق للعميل
+onionServices.authPrompt.description=%S يطلب المفتاح الخاص بكم
+onionServices.authPrompt.keyPlaceholder=يرجى إدخال المفتاح الخاص لخدمة البصلة هذه
onionServices.authPrompt.done=انتهى
onionServices.authPrompt.doneAccessKey=d
-onionServices.authPrompt.invalidKey=Please enter a valid key (52 base32 characters or 44 base64 characters)
-onionServices.authPrompt.failedToSetKey=Unable to configure Tor with your key
+onionServices.authPrompt.invalidKey=يرجى إدخال مفتاح صالح (قاعدة٥٢ ب ٣٢ رمز أو قاعدة٤٤ ب ٦٤ رمز)
+onionServices.authPrompt.failedToSetKey=لا يمكن إعدادا تور باستخدام مفتاحكم
diff --git a/chrome/locale/da/browserOnboarding.properties b/chrome/locale/da/browserOnboarding.properties
index a1113637..f8ced959 100644
--- a/chrome/locale/da/browserOnboarding.properties
+++ b/chrome/locale/da/browserOnboarding.properties
@@ -49,9 +49,9 @@ onboarding.tour-tor-update.prefix-new=Ny
onboarding.tour-tor-update.prefix-updated=Opdateret
onboarding.tour-tor-toolbar=Værktøjslinje
-onboarding.tour-tor-toolbar-update-9.0.title=Farvel Onion-knap.
+onboarding.tour-tor-toolbar-update-9.0.title=Farvel løg-knap.
onboarding.tour-tor-toolbar-update-9.0.description=Vil ønsker at din oplevelse med Tor skal være fuldt integreret i Tor Browser.
-onboarding.tour-tor-toolbar-update-9.0.description-para2=Derfor kan du nu, i stedet for at bruge onion-knappen, se dine Tor-kredsløb via [i] på adresselinjen og anmod om en ny identitet med værktøjslinjeknappen eller [≡]-menuen.
+onboarding.tour-tor-toolbar-update-9.0.description-para2=Derfor kan du nu, i stedet for at bruge løg-knappen, se dine Tor-kredsløb via [i] på adresselinjen og anmod om en ny identitet med værktøjslinjeknappen eller [≡]-menuen.
onboarding.tour-tor-toolbar-update-9.0.button=Anmod om en ny identitet
onboarding.tour-tor-toolbar-update-9.0.next-button=Gå til Tor-netværk
diff --git a/chrome/locale/da/torbutton.dtd b/chrome/locale/da/torbutton.dtd
index eeb98cd0..5194c55a 100644
--- a/chrome/locale/da/torbutton.dtd
+++ b/chrome/locale/da/torbutton.dtd
@@ -49,4 +49,4 @@
<!ENTITY torbutton.circuit_display.new_circuit "Nyt kredsløb til dette sted">
<!-- Onion services strings. Strings are kept here for ease of translation. -->
-<!ENTITY torbutton.onionServices.authPrompt.tooltip "Open onion service client authentication prompt">
+<!ENTITY torbutton.onionServices.authPrompt.tooltip "Åbn prompt til klientautentifikation af oniontjeneste">
diff --git a/chrome/locale/da/torbutton.properties b/chrome/locale/da/torbutton.properties
index 94d28034..9ef8dc27 100644
--- a/chrome/locale/da/torbutton.properties
+++ b/chrome/locale/da/torbutton.properties
@@ -1,6 +1,6 @@
torbutton.circuit_display.internet = Internettet
torbutton.circuit_display.ip_unknown = Ukendt IP-adresse
-torbutton.circuit_display.onion_site = Løg-sted
+torbutton.circuit_display.onion_site = Onionsted
torbutton.circuit_display.this_browser = Browseren
torbutton.circuit_display.relay = Relæ
torbutton.circuit_display.tor_bridge = Bro
@@ -56,15 +56,15 @@ profileMigrationFailed=Overførsel af din eksisterende %S profil fejlede.\nNye i
updateDownloadingPanelUILabel=Downloader %S opdatering
# .Onion Page Info prompt. Strings are kept here for ease of translation.
-pageInfo_OnionEncryptionWithBitsAndProtocol=Forbindelse krypteret (løg-tjeneste, %1$S, %2$S-bit nøgler, %3$S)
-pageInfo_OnionEncryption=Forbindelse krypteret (løg-tjeneste)
+pageInfo_OnionEncryptionWithBitsAndProtocol=Forbindelse krypteret (oniontjeneste, %1$S, %2$S-bit nøgler, %3$S)
+pageInfo_OnionEncryption=Forbindelse krypteret (oniontjeneste)
# Onion services strings. Strings are kept here for ease of translation.
# LOCALIZATION NOTE: %S will be replaced with the .onion address.
-onionServices.clientAuthMissing=Tor onion service missing client authorization
-onionServices.authPrompt.description=%S is requesting your private key.
-onionServices.authPrompt.keyPlaceholder=Enter your private key for this onion service
+onionServices.clientAuthMissing=Tor-oniontjeneste mangler klient autentifikation
+onionServices.authPrompt.description=%S anmoder om din private nøgle.
+onionServices.authPrompt.keyPlaceholder=Indtast din private nøgle til oniontjenesten
onionServices.authPrompt.done=Fuldført
onionServices.authPrompt.doneAccessKey=d
-onionServices.authPrompt.invalidKey=Please enter a valid key (52 base32 characters or 44 base64 characters)
-onionServices.authPrompt.failedToSetKey=Unable to configure Tor with your key
+onionServices.authPrompt.invalidKey=Indtast venligst en gyldig nøgle (52 base32-tegn eller 44 base64-tegn)
+onionServices.authPrompt.failedToSetKey=Kan ikke konfigurere Tor med din nøgle
diff --git a/chrome/locale/it/torbutton.dtd b/chrome/locale/it/torbutton.dtd
index d163e813..6bc604e0 100644
--- a/chrome/locale/it/torbutton.dtd
+++ b/chrome/locale/it/torbutton.dtd
@@ -49,4 +49,4 @@
<!ENTITY torbutton.circuit_display.new_circuit "Nuovo circuito per questo sito">
<!-- Onion services strings. Strings are kept here for ease of translation. -->
-<!ENTITY torbutton.onionServices.authPrompt.tooltip "Open onion service client authentication prompt">
+<!ENTITY torbutton.onionServices.authPrompt.tooltip "Apri il prompt di autenticazione del servizio client onion.">
diff --git a/chrome/locale/it/torbutton.properties b/chrome/locale/it/torbutton.properties
index 9a13b96a..1d4d107b 100644
--- a/chrome/locale/it/torbutton.properties
+++ b/chrome/locale/it/torbutton.properties
@@ -61,10 +61,10 @@ pageInfo_OnionEncryption=Connessione cifrata (Servizio onion)
# Onion services strings. Strings are kept here for ease of translation.
# LOCALIZATION NOTE: %S will be replaced with the .onion address.
-onionServices.clientAuthMissing=Tor onion service missing client authorization
-onionServices.authPrompt.description=%S is requesting your private key.
-onionServices.authPrompt.keyPlaceholder=Enter your private key for this onion service
+onionServices.clientAuthMissing=Autorizzazione client mancante per il servizio Tor onion
+onionServices.authPrompt.description=%S richiede la tua chiave privata.
+onionServices.authPrompt.keyPlaceholder=Inserisci la tua chiave privata per questo servizio onion
onionServices.authPrompt.done=Fatto
onionServices.authPrompt.doneAccessKey=d
-onionServices.authPrompt.invalidKey=Please enter a valid key (52 base32 characters or 44 base64 characters)
-onionServices.authPrompt.failedToSetKey=Unable to configure Tor with your key
+onionServices.authPrompt.invalidKey=Per favore inserisci una chiave valida (52 caratteri base32 o 44 caratteri base64)
+onionServices.authPrompt.failedToSetKey=Impossibile configurare Tor con la tua chiave
diff --git a/chrome/locale/ja/browserOnboarding.properties b/chrome/locale/ja/browserOnboarding.properties
index 598b5960..77a8341b 100644
--- a/chrome/locale/ja/browserOnboarding.properties
+++ b/chrome/locale/ja/browserOnboarding.properties
@@ -32,7 +32,7 @@ onboarding.tour-tor-security.description-suffix=お知らせ:デフォルト
onboarding.tour-tor-security-level.button=セキュリティレベルを表示する
onboarding.tour-tor-security-level.next-button=体験のヒントへ
-onboarding.tour-tor-expect-differences=体験のヒント。
+onboarding.tour-tor-expect-differences=体験のヒント
onboarding.tour-tor-expect-differences.title=いくつかの違いを理解する。
onboarding.tour-tor-expect-differences.description=Tor によって提供されるすべてのセキュリティとプライバシー機能を使用すると、インターネットをブラウジングした時の、あなたの体験は少し変化する場合があります。読み込みは少し遅くなるかもしれないし、あなたのセキュリティレベルによっては、いくつかの要素が動作しないか、読み込まれないかもしれません。また、あなたはロボットではなく、人間であることを証明するように求められることがあるかもしれません。
onboarding.tour-tor-expect-differences.button=よくある質問を見る
diff --git a/chrome/locale/pt-BR/torbutton.dtd b/chrome/locale/pt-BR/torbutton.dtd
index fdfef221..626f4870 100644
--- a/chrome/locale/pt-BR/torbutton.dtd
+++ b/chrome/locale/pt-BR/torbutton.dtd
@@ -49,4 +49,4 @@
<!ENTITY torbutton.circuit_display.new_circuit "Novo circuito para este site">
<!-- Onion services strings. Strings are kept here for ease of translation. -->
-<!ENTITY torbutton.onionServices.authPrompt.tooltip "Open onion service client authentication prompt">
+<!ENTITY torbutton.onionServices.authPrompt.tooltip "Prompt de autenticação do cliente do serviço onion aberto">
diff --git a/chrome/locale/pt-BR/torbutton.properties b/chrome/locale/pt-BR/torbutton.properties
index c1a9303d..e3ab7fc3 100644
--- a/chrome/locale/pt-BR/torbutton.properties
+++ b/chrome/locale/pt-BR/torbutton.properties
@@ -61,10 +61,10 @@ pageInfo_OnionEncryption=Conexão criptografada (Serviço Onion)
# Onion services strings. Strings are kept here for ease of translation.
# LOCALIZATION NOTE: %S will be replaced with the .onion address.
-onionServices.clientAuthMissing=Tor onion service missing client authorization
-onionServices.authPrompt.description=%S is requesting your private key.
-onionServices.authPrompt.keyPlaceholder=Enter your private key for this onion service
+onionServices.clientAuthMissing=O serviço onion do Tor não tem autorização de cliente
+onionServices.authPrompt.description=%S está solicitado a sua chave privada.
+onionServices.authPrompt.keyPlaceholder=Insira a sua chave privada para usar este serviço onion
onionServices.authPrompt.done=Pronto
onionServices.authPrompt.doneAccessKey=d
-onionServices.authPrompt.invalidKey=Please enter a valid key (52 base32 characters or 44 base64 characters)
-onionServices.authPrompt.failedToSetKey=Unable to configure Tor with your key
+onionServices.authPrompt.invalidKey=Por favor, insira uma chave válida (32 caracteres_Base52 ou 64 caracteres_Base44)
+onionServices.authPrompt.failedToSetKey=Não foi possível configurar Tor com a sua chave
diff --git a/chrome/locale/zh-TW/aboutTor.dtd b/chrome/locale/zh-TW/aboutTor.dtd
index aa55d0f4..76ddf0f2 100644
--- a/chrome/locale/zh-TW/aboutTor.dtd
+++ b/chrome/locale/zh-TW/aboutTor.dtd
@@ -33,5 +33,5 @@
<!-- End of year 2019 Fundraising campaign -->
<!ENTITY aboutTor.ey2019.mozilla "今日您捐款,Mozilla 也會捐出相同數額。">
-<!ENTITY aboutTor.ey2019.tracking "Tracking, surveillance, and censorship are widespread online.">
-<!ENTITY aboutTor.ey2019.takeback "Take back the Internet with Tor">
+<!ENTITY aboutTor.ey2019.tracking "在網路世界中,追蹤、監視和審查無所不在。">
+<!ENTITY aboutTor.ey2019.takeback "透過 Tor 找回對網際網路的自主權">
diff --git a/chrome/locale/zh-TW/torbutton.dtd b/chrome/locale/zh-TW/torbutton.dtd
index ca78844d..1ffff33d 100644
--- a/chrome/locale/zh-TW/torbutton.dtd
+++ b/chrome/locale/zh-TW/torbutton.dtd
@@ -49,4 +49,4 @@
<!ENTITY torbutton.circuit_display.new_circuit "建立新的迴路來連接上此網站">
<!-- Onion services strings. Strings are kept here for ease of translation. -->
-<!ENTITY torbutton.onionServices.authPrompt.tooltip "Open onion service client authentication prompt">
+<!ENTITY torbutton.onionServices.authPrompt.tooltip "開啟 Onion 服務用戶端驗證提示">
1
0
[torbutton/maint-9.0] Bug 30237: Control port module improvements for v3 client authentication
by sysrqb@torproject.org 03 Jan '20
by sysrqb@torproject.org 03 Jan '20
03 Jan '20
commit 46efc92348dbed06fc31ddfb0a5ac2e4e8554de2
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Tue Nov 12 15:38:10 2019 -0500
Bug 30237: Control port module improvements for v3 client authentication
Split the configuration portion of the controller() function into
a new configureControlPortModule() function. This allows the
Torbutton code to continue to own the configuration (with help from
Tor Launcher) while making it possible for the v3 client authentication
prompt to use Torbutton's control port module.
Also, include error information returned by Tor within error objects
generated by the control port module and add support for Tor's new
ONION_CLIENT_AUTH_ADD control port command.
---
chrome/content/tor-circuit-display.js | 21 ++++----
chrome/content/torbutton.js | 8 +--
modules/tor-control-port.js | 95 ++++++++++++++++++++++++++++-------
3 files changed, 92 insertions(+), 32 deletions(-)
diff --git a/chrome/content/tor-circuit-display.js b/chrome/content/tor-circuit-display.js
index 21bcc57b..1e58b2b4 100644
--- a/chrome/content/tor-circuit-display.js
+++ b/chrome/content/tor-circuit-display.js
@@ -6,9 +6,8 @@
// with docco.js to produce pretty documentation.
//
// This script is to be embedded in torbutton.xul. It defines a single global
-// function, createTorCircuitDisplay(ipcFile, host, port, password), which
-// activates the automatic Tor circuit display for the current tab and any
-// future tabs.
+// function, createTorCircuitDisplay(), which activates the automatic Tor
+// circuit display for the current tab and any future tabs.
//
// See https://trac.torproject.org/8641
@@ -16,11 +15,12 @@
/* global document, gBrowser, Components */
// ### Main function
-// __createTorCircuitDisplay(ipcFile, host, port, password, enablePrefName)__.
+// __createTorCircuitDisplay(enablePrefName)__.
// The single function that prepares tor circuit display. Connects to a tor
-// control port with the given ipcFile or host plus port, and password, and
-// binds to a named bool pref whose value determines whether the circuit display
-// is enabled or disabled.
+// control port using information provided to the control port module via
+// a previous call to configureControlPortModule(), and binds to a named
+// bool pref whose value determines whether the circuit display is enabled
+// or disabled.
let createTorCircuitDisplay = (function () {
"use strict";
@@ -415,11 +415,11 @@ let ensureCorrectPopupDimensions = function () {
// ## Main function
-// __setupDisplay(ipcFile, host, port, password, enablePrefName)__.
+// __setupDisplay(enablePrefName)__.
// Once called, the Tor circuit display will be started whenever
// the "enablePref" is set to true, and stopped when it is set to false.
// A reference to this function (called createTorCircuitDisplay) is exported as a global.
-let setupDisplay = function (ipcFile, host, port, password, enablePrefName) {
+let setupDisplay = function (enablePrefName) {
setupGuardNote();
let myController = null,
stopCollectingIsolationData = null,
@@ -442,8 +442,7 @@ let setupDisplay = function (ipcFile, host, port, password, enablePrefName) {
},
start = function () {
if (!myController) {
- myController = controller(ipcFile, host, port || 9151, password,
- function (err) {
+ myController = controller(function (err) {
// An error has occurred.
logger.eclog(5, err);
logger.eclog(5, "Disabling tor display circuit because of an error.");
diff --git a/chrome/content/torbutton.js b/chrome/content/torbutton.js
index aacae042..b9642a89 100644
--- a/chrome/content/torbutton.js
+++ b/chrome/content/torbutton.js
@@ -21,6 +21,7 @@ let {
getDomainForBrowser,
} = ChromeUtils.import("resource://torbutton/modules/utils.js", {});
let SecurityPrefs = ChromeUtils.import("resource://torbutton/modules/security-prefs.js", {});
+let { configureControlPortModule } = Cu.import("resource://torbutton/modules/tor-control-port.js", {});
const k_tb_last_browser_version_pref = "extensions.torbutton.lastBrowserVersion";
const k_tb_browser_update_needed_pref = "extensions.torbutton.updateNeeded";
@@ -334,6 +335,9 @@ function torbutton_init() {
}
}
+ configureControlPortModule(m_tb_control_ipc_file, m_tb_control_host,
+ m_tb_control_port, m_tb_control_pass);
+
// Add about:tor IPC message listener.
window.messageManager.addMessageListener("AboutTor:Loaded",
torbutton_abouttor_message_handler);
@@ -353,9 +357,7 @@ function torbutton_init() {
torbutton_notify_if_update_needed();
try {
- createTorCircuitDisplay(m_tb_control_ipc_file, m_tb_control_host,
- m_tb_control_port, m_tb_control_pass,
- "extensions.torbutton.display_circuit");
+ createTorCircuitDisplay("extensions.torbutton.display_circuit");
} catch(e) {
torbutton_log(4, "Error creating the tor circuit display " + e);
}
diff --git a/modules/tor-control-port.js b/modules/tor-control-port.js
index 9f6dbeb6..1b0a79ad 100644
--- a/modules/tor-control-port.js
+++ b/modules/tor-control-port.js
@@ -7,10 +7,15 @@
//
// To import the module, use
//
-// let { controller } = Components.utils.import("path/to/tor-control-port.js", {});
+// let { configureControlPortModule, controller } =
+// Components.utils.import("path/to/tor-control-port.js", {});
+//
+// See the second-to-last function defined in this file:
+// configureControlPortModule(ipcFile, host, port, password)
+// for usage of the configureControlPortModule function.
//
// See the last function defined in this file:
-// controller(ipcFile, host, port, password, onError)
+// controller(onError)
// for usage of the controller function.
/* jshint esnext: true */
@@ -229,7 +234,16 @@ io.matchRepliesToCommands = function (asyncSend, dispatcher) {
let [command, replyCallback, errorCallback] = commandQueue.shift();
if (message.match(/^2/) && replyCallback) replyCallback(message);
if (message.match(/^[45]/) && errorCallback) {
- errorCallback(new Error(command + " -> " + message));
+ let myErr = new Error(command + " -> " + message);
+ // Add Tor-specific information to the Error object.
+ let idx = message.indexOf(' ');
+ if (idx > 0) {
+ myErr.torStatusCode = message.substring(0, idx);
+ myErr.torMessage = message.substring(idx);
+ } else {
+ myErr.torStatusCode = message;
+ }
+ errorCallback(myErr);
}
});
// Create and return a version of sendCommand that returns a Promise.
@@ -562,6 +576,24 @@ info.getConf = function (aControlSocket, key) {
.then(info.getMultipleResponseValues);
};
+// ## onionAuth
+// A namespace for functions related to tor's ONION_CLIENT_AUTH_* commands.
+let onionAuth = {};
+
+// __onionAuth.add(controlSocket, hsAddress, b64PrivateKey, nickname, isPermanent)__.
+// Sends a ONION_CLIENT_AUTH_ADD command to add a private key to the
+// Tor configuration.
+onionAuth.add = function (aControlSocket, hsAddress, b64PrivateKey,
+ nickname, isPermanent) {
+ const keyType = "x25519";
+ let cmd = `onion_client_auth_add ${hsAddress} ${keyType}:${b64PrivateKey}`;
+ if (nickname)
+ cmd += ` ClientName=${nickname}`;
+ if (isPermanent)
+ cmd += " Flags=Permanent";
+ return aControlSocket.sendCommand(cmd);
+};
+
// ## event
// Handlers for events
@@ -617,6 +649,9 @@ tor.controller = function (ipcFile, host, port, password, onError) {
isOpen = true;
return { getInfo : key => info.getInfo(socket, key),
getConf : key => info.getConf(socket, key),
+ onionAuthAdd : (hsAddress, b64PrivateKey, nickname, isPermanent) =>
+ onionAuth.add(socket, hsAddress, b64PrivateKey,
+ nickname, isPermanent),
watchEvent : (type, filter, onData) =>
event.watchEvent(socket, type, filter, onData),
isOpen : () => isOpen,
@@ -626,29 +661,53 @@ tor.controller = function (ipcFile, host, port, password, onError) {
// ## Export
-// __controller(ipcFile, host, port, password, onError)__.
-// Instantiates and returns a controller object connected to a tor ControlPort
-// on ipcFile or at host:port, authenticating with the given password, if
-// the controller doesn't yet exist. Otherwise returns the existing controller
-// to the given ipcFile or host:port.
+let controlPortInfo = {};
+
+// __configureControlPortModule(ipcFile, host, port, password)__.
+// Sets Tor control port connection parameters to be used in future calls to
+// the controller() function. Example:
+// configureControlPortModule(undefined, "127.0.0.1", 9151, "MyPassw0rd");
+var configureControlPortModule = function (ipcFile, host, port, password) {
+ controlPortInfo.ipcFile = ipcFile;
+ controlPortInfo.host = host;
+ controlPortInfo.port = port || 9151;
+ controlPortInfo.password = password;
+};
+
+// __controller(onError)__.
+// Instantiates and returns a controller object that is connected and
+// authenticated to a Tor ControlPort using the connection parameters
+// provided in the most recent call to configureControlPortModule(), if
+// the controller doesn't yet exist. Otherwise returns the existing
+// controller to the given ipcFile or host:port.
// onError is called with an error object as its single argument whenever
// an error occurs. Example:
//
// // Get the controller
-// let c = controller(undefined, "127.0.0.1", 9151, "MyPassw0rd",
+// let c = controller(
// function (error) { console.log(error.message || error); });
// // Send command and receive `250` reply or error message in a promise:
// let replyPromise = c.getInfo("ip-to-country/16.16.16.16");
// // Close the controller permanently
// c.close();
-var controller = function (ipcFile, host, port, password, onError) {
- let dest = (ipcFile) ? "unix:" + ipcFile.path : host + ":" + port,
- maybeController = tor.controllerCache[dest];
- return (tor.controllerCache[dest] =
- (maybeController && maybeController.isOpen()) ?
- maybeController :
- tor.controller(ipcFile, host, port, password, onError));
+var controller = function (onError) {
+ if (!controlPortInfo.ipcFile && !controlPortInfo.host)
+ throw new Error("Please call configureControlPortModule first");
+
+ const dest = (controlPortInfo.ipcFile)
+ ? `unix:${controlPortInfo.ipcFile.path}`
+ : `${controlPortInfo.host}:${controlPortInfo.port}`;
+ const maybeController = tor.controllerCache[dest];
+ if (maybeController && maybeController.isOpen())
+ return maybeController;
+
+ tor.controllerCache[dest] = tor.controller(controlPortInfo.ipcFile,
+ controlPortInfo.host,
+ controlPortInfo.port,
+ controlPortInfo.password,
+ onError);
+ return tor.controllerCache[dest];
};
-// Export the controller function for external use.
-var EXPORTED_SYMBOLS = ["controller"];
+// Export functions for external use.
+var EXPORTED_SYMBOLS = ["configureControlPortModule", "controller"];
1
0
[torbutton/maint-9.0] Bug 30237: Add strings for v3 onion services client authentication
by sysrqb@torproject.org 03 Jan '20
by sysrqb@torproject.org 03 Jan '20
03 Jan '20
commit fa05e61cac497a7fbe3050ee8a9f4f6ec39be3a4
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Tue Nov 12 15:39:19 2019 -0500
Bug 30237: Add strings for v3 onion services client authentication
---
chrome/locale/en-US/torbutton.dtd | 3 +++
chrome/locale/en-US/torbutton.properties | 10 ++++++++++
2 files changed, 13 insertions(+)
diff --git a/chrome/locale/en-US/torbutton.dtd b/chrome/locale/en-US/torbutton.dtd
index d14bd1da..ed3cb1a6 100644
--- a/chrome/locale/en-US/torbutton.dtd
+++ b/chrome/locale/en-US/torbutton.dtd
@@ -47,3 +47,6 @@
<!ENTITY torbutton.prefs.sec_advanced_security_settings "Advanced Security Settings…">
<!ENTITY torbutton.circuit_display.title "Tor Circuit">
<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
+
+<!-- Onion services strings. Strings are kept here for ease of translation. -->
+<!ENTITY torbutton.onionServices.authPrompt.tooltip "Open onion service client authentication prompt">
diff --git a/chrome/locale/en-US/torbutton.properties b/chrome/locale/en-US/torbutton.properties
index ea7a7d63..1020e57a 100644
--- a/chrome/locale/en-US/torbutton.properties
+++ b/chrome/locale/en-US/torbutton.properties
@@ -58,3 +58,13 @@ updateDownloadingPanelUILabel=Downloading %S update
# .Onion Page Info prompt. Strings are kept here for ease of translation.
pageInfo_OnionEncryptionWithBitsAndProtocol=Connection Encrypted (Onion Service, %1$S, %2$S bit keys, %3$S)
pageInfo_OnionEncryption=Connection Encrypted (Onion Service)
+
+# Onion services strings. Strings are kept here for ease of translation.
+# LOCALIZATION NOTE: %S will be replaced with the .onion address.
+onionServices.clientAuthMissing=Tor onion service missing client authorization
+onionServices.authPrompt.description=%S is requesting your private key.
+onionServices.authPrompt.keyPlaceholder=Enter your private key for this onion service
+onionServices.authPrompt.done=Done
+onionServices.authPrompt.doneAccessKey=d
+onionServices.authPrompt.invalidKey=Please enter a valid key (52 base32 characters or 44 base64 characters)
+onionServices.authPrompt.failedToSetKey=Unable to configure Tor with your key
1
0
[torbutton/maint-9.0] Bug 30851: Move default preferences to 000-tor-browser.js
by sysrqb@torproject.org 03 Jan '20
by sysrqb@torproject.org 03 Jan '20
03 Jan '20
commit 59cabca7ade54fa4f5fec2a398456dbc3891009a
Author: Alex Catarineu <acat(a)torproject.org>
Date: Mon Jun 10 17:49:38 2019 +0200
Bug 30851: Move default preferences to 000-tor-browser.js
---
chrome/content/locale/non-localized.properties | 6 ---
components/domain-isolator.js | 3 --
components/dragDropFilter.js | 2 -
components/startup-observer.js | 1 -
components/torbutton-logger.js | 2 -
defaults/preferences/preferences.js | 55 --------------------------
jar.mn | 1 -
modules/default-prefs.js | 36 -----------------
moz.build | 3 --
9 files changed, 109 deletions(-)
diff --git a/chrome/content/locale/non-localized.properties b/chrome/content/locale/non-localized.properties
deleted file mode 100644
index dca78639..00000000
--- a/chrome/content/locale/non-localized.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-# This file must be located in a subdirectory named "locale" so that
-# about:config will display the correct value for browser.startup.homepage.
-# See fetchPref() inside toolkit/components/viewconfig/content/config.js
-
-# Default home page
-browser.startup.homepage=about:tor
diff --git a/components/domain-isolator.js b/components/domain-isolator.js
index f6a6d598..3ed6e58f 100644
--- a/components/domain-isolator.js
+++ b/components/domain-isolator.js
@@ -15,9 +15,6 @@ const { XPCOMUtils } = ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm
let logger = Cc["@torproject.org/torbutton-logger;1"]
.getService(Ci.nsISupports).wrappedJSObject;
-let { ensureDefaultPrefs } = ChromeUtils.import("resource://torbutton/modules/default-prefs.js", {});
-ensureDefaultPrefs();
-
// Import crypto object (FF 37+).
Cu.importGlobalProperties(["crypto"]);
diff --git a/components/dragDropFilter.js b/components/dragDropFilter.js
index 9d6f74c8..f48d1b38 100644
--- a/components/dragDropFilter.js
+++ b/components/dragDropFilter.js
@@ -6,8 +6,6 @@
*************************************************************************/
-ChromeUtils.import("resource://torbutton/modules/default-prefs.js", {}).ensureDefaultPrefs();
-
const { XPCOMUtils } = ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
diff --git a/components/startup-observer.js b/components/startup-observer.js
index 008134f8..d2d1d610 100644
--- a/components/startup-observer.js
+++ b/components/startup-observer.js
@@ -21,7 +21,6 @@ XPCOMUtils.defineLazyModuleGetters(this, {
L10nRegistry: "resource://gre/modules/L10nRegistry.jsm",
});
-ChromeUtils.import("resource://torbutton/modules/default-prefs.js", {}).ensureDefaultPrefs();
let NoScriptControl = ChromeUtils.import("resource://torbutton/modules/noscript-control.js", {});
// Module specific constants
diff --git a/components/torbutton-logger.js b/components/torbutton-logger.js
index 52fdfc23..1c946fa7 100644
--- a/components/torbutton-logger.js
+++ b/components/torbutton-logger.js
@@ -13,8 +13,6 @@ const kMODULE_NAME = "Torbutton Logger";
const kMODULE_CONTRACTID = "@torproject.org/torbutton-logger;1";
const kMODULE_CID = Components.ID("f36d72c9-9718-4134-b550-e109638331d7");
-ChromeUtils.import("resource://torbutton/modules/default-prefs.js", {}).ensureDefaultPrefs();
-
const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
const { XPCOMUtils } = ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
diff --git a/defaults/preferences/preferences.js b/defaults/preferences/preferences.js
deleted file mode 100644
index 100302b7..00000000
--- a/defaults/preferences/preferences.js
+++ /dev/null
@@ -1,55 +0,0 @@
-// debug prefs
-pref("extensions.torbutton.loglevel",4);
-pref("extensions.torbutton.logmethod",1); // 0=stdout, 1=errorconsole, 2=debuglog
-
-// Display prefs
-pref("extensions.torbutton.display_circuit", true);
-pref("extensions.torbutton(a)torproject.org.description", "chrome://torbutton/locale/torbutton.properties");
-pref("extensions.torbutton.updateNeeded", false);
-
-// Tor check and proxy prefs
-pref("extensions.torbutton.test_enabled",true);
-pref("extensions.torbutton.test_url","https://check.torproject.org/?TorButton=true");
-pref("extensions.torbutton.local_tor_check",true);
-pref("extensions.torbutton.versioncheck_url","https://www.torproject.org/projects/torbrowser/RecommendedTBBVersions");
-pref("extensions.torbutton.versioncheck_enabled",true);
-pref("extensions.torbutton.use_nontor_proxy",false);
-
-// State prefs:
-pref("extensions.torbutton.startup",false);
-pref("extensions.torbutton.inserted_button",false);
-pref("extensions.torbutton.inserted_security_level",false);
-
-// TODO: This is just part of a stopgap until #14429 gets properly implemented.
-// See #7255 for details. We display the warning three times to make sure the
-// user did not click on it by accident.
-pref("extensions.torbutton.maximize_warnings_remaining", 3);
-
-// Security prefs:
-pref("extensions.torbutton.clear_http_auth",true);
-pref("extensions.torbutton.close_newnym",true);
-pref("extensions.torbutton.resize_new_windows",false);
-pref("extensions.torbutton.startup_state", 2); // 0=non-tor, 1=tor, 2=last
-pref("extensions.torbutton.tor_memory_jar",false);
-pref("extensions.torbutton.nontor_memory_jar",false);
-pref("extensions.torbutton.launch_warning",true);
-
-// Opt out of Firefox addon pings:
-// https://developer.mozilla.org/en/Addons/Working_with_AMO
-pref("extensions.torbutton(a)torproject.org.getAddons.cache.enabled", false);
-
-// Security Slider
-pref("extensions.torbutton.security_slider", 4);
-pref("extensions.torbutton.security_custom", false);
-
-pref("extensions.torbutton.confirm_plugins", true);
-pref("extensions.torbutton.confirm_newnym", true);
-
-pref("extensions.torbutton.noscript_inited", false);
-pref("extensions.torbutton.noscript_persist", false);
-
-// Browser home page:
-pref("browser.startup.homepage", "chrome://torbutton/content/locale/non-localized.properties");
-
-// This pref specifies an ad-hoc "version" for various pref update hacks we need to do
-pref("extensions.torbutton.pref_fixup_version", 0);
diff --git a/jar.mn b/jar.mn
index 8b6cbcf7..2c6d186b 100644
--- a/jar.mn
+++ b/jar.mn
@@ -6,7 +6,6 @@ torbutton.jar:
content/ (chrome/content/*)
components/ (components/*)
- defaults/ (defaults/*)
modules/ (modules/*)
skin/ (chrome/skin/*)
diff --git a/modules/default-prefs.js b/modules/default-prefs.js
deleted file mode 100644
index 5ea549f4..00000000
--- a/modules/default-prefs.js
+++ /dev/null
@@ -1,36 +0,0 @@
-let loaded = false;
-
-function ensureDefaultPrefs () {
- if (loaded) {
- return;
- }
- const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
- const kDefaultPreferences = "resource://torbutton/defaults/preferences/preferences.js";
- const defaultPrefBranch = Services.prefs.getDefaultBranch(null);
-
- const context = {
- pref: function (aPrefName, aValue) {
- const aValueType = typeof aValue;
- if (aValueType === "boolean") {
- defaultPrefBranch.setBoolPref(aPrefName, aValue);
- } else if (aValueType === "number") {
- defaultPrefBranch.setIntPref(aPrefName, aValue);
- } else if (aValueType === "string") {
- defaultPrefBranch.setCharPref(aPrefName, aValue);
- } else {
- Services.console.logStringMessage(
- `Preference ${aPrefName} with value ${aValue} has an invalid value type`);
- }
-
- // Disable the External App Blocker on Android
- if ((aPrefName === "extensions.torbutton.launch_warning") &&
- (Services.appinfo.OS === "Android")) {
- defaultPrefBranch.setBoolPref(aPrefName, false);
- }
- }
- };
- Services.scriptloader.loadSubScript(kDefaultPreferences, context);
- loaded = true;
-}
-
-let EXPORTED_SYMBOLS = ["ensureDefaultPrefs"];
diff --git a/moz.build b/moz.build
index 843cee0d..376c9976 100644
--- a/moz.build
+++ b/moz.build
@@ -4,6 +4,3 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
JAR_MANIFESTS += ['jar.mn']
-JS_PREFERENCE_FILES += [
- 'defaults/preferences/preferences.js',
-]
1
0
commit 91108ae426e57d9e84cc7573b1a2ca2d9c69790c
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Nov 1 13:04:17 2019 +0000
Translations update
---
chrome/locale/fa/aboutTBUpdate.dtd | 2 +-
chrome/locale/fa/aboutTor.dtd | 20 ++++++++++----------
chrome/locale/fa/brand.dtd | 8 ++++----
chrome/locale/fa/brand.properties | 8 ++++----
chrome/locale/fa/browserOnboarding.properties | 16 ++++++++--------
chrome/locale/fa/torbutton.dtd | 10 +++++-----
chrome/locale/fa/torbutton.properties | 10 +++++-----
chrome/locale/it/aboutTor.dtd | 2 +-
chrome/locale/ka/aboutTor.dtd | 2 +-
chrome/locale/mk/aboutTor.dtd | 2 +-
chrome/locale/ru/aboutTor.dtd | 2 +-
chrome/locale/tr/aboutTBUpdate.dtd | 2 +-
chrome/locale/tr/aboutTor.dtd | 2 +-
chrome/locale/tr/browserOnboarding.properties | 2 +-
chrome/locale/tr/torbutton.properties | 2 +-
chrome/locale/zh-CN/aboutTor.dtd | 2 +-
16 files changed, 46 insertions(+), 46 deletions(-)
diff --git a/chrome/locale/fa/aboutTBUpdate.dtd b/chrome/locale/fa/aboutTBUpdate.dtd
index c313e8e5..55aaed87 100644
--- a/chrome/locale/fa/aboutTBUpdate.dtd
+++ b/chrome/locale/fa/aboutTBUpdate.dtd
@@ -1,5 +1,5 @@
<!ENTITY aboutTBUpdate.changelogTitle "گزارش تغییرات Tor Browser">
-<!ENTITY aboutTBUpdate.updated "مرورگر تور بهروز شده است.">
+<!ENTITY aboutTBUpdate.updated "مرورگر Tor بهروز شده است.">
<!ENTITY aboutTBUpdate.linkPrefix "به منظور جدیدترین اطلاعات دربارهی این نسخه،">
<!ENTITY aboutTBUpdate.linkLabel "از وبسایت ما دیدن کنید">
<!ENTITY aboutTBUpdate.linkSuffix ".">
diff --git a/chrome/locale/fa/aboutTor.dtd b/chrome/locale/fa/aboutTor.dtd
index de6571ea..73f9017b 100644
--- a/chrome/locale/fa/aboutTor.dtd
+++ b/chrome/locale/fa/aboutTor.dtd
@@ -4,34 +4,34 @@
- vim: set sw=2 sts=2 ts=8 et syntax=xml:
-->
-<!ENTITY aboutTor.title "دربارهی تور">
+<!ENTITY aboutTor.title "دربارهی Tor">
<!ENTITY aboutTor.viewChangelog.label "دیدن گزارش تغییرات">
<!ENTITY aboutTor.ready.label "کاوش. خصوصی.">
<!ENTITY aboutTor.ready2.label "شما برای تجربه خصوصیترین مرور اینترنت در جهان آماده هستید.">
<!ENTITY aboutTor.failure.label "خطایی پیش آمده است!">
-<!ENTITY aboutTor.failure2.label "تور با این مرورگر کار نمیکند.">
+<!ENTITY aboutTor.failure2.label "Tor با این مرورگر کار نمیکند.">
<!ENTITY aboutTor.search.label "جستجو توسط داکداکگو">
<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com">
<!ENTITY aboutTor.torbrowser_user_manual_questions.label "سوالات؟">
-<!ENTITY aboutTor.torbrowser_user_manual_link.label "بررسی راهنمای مرورگر تور »">
+<!ENTITY aboutTor.torbrowser_user_manual_link.label "بررسی راهنمای مرورگر Tor »">
<!-- The next two entities are used within the browser's Help menu. -->
<!ENTITY aboutTor.torbrowser_user_manual.accesskey "M">
-<!ENTITY aboutTor.torbrowser_user_manual.label "راهنمای مرورگر تور">
+<!ENTITY aboutTor.torbrowser_user_manual.label "راهنمای مرورگر Tor">
-<!ENTITY aboutTor.tor_mission.label "پروژهی تور یک سازمان غیرانتفاعی US 501(c)(3) برای پیشبرد حقوق بشر و آزادی با ایجاد و استقرار تکنولوژیهای گمنامی متن باز و حریم خصوصی است که از در دسترس بودن نامحدود و استفاده و پیشرفت درک علمی و عمومی بشر حمایت میکند.">
+<!ENTITY aboutTor.tor_mission.label "پروژهی Tor یک سازمان غیرانتفاعی US 501(c)(3) برای پیشبرد حقوق بشر و آزادی با ایجاد و استقرار تکنولوژیهای گمنامی متن باز و حریم خصوصی است که از در دسترس بودن نامحدود و استفاده و پیشرفت درک علمی و عمومی بشر حمایت میکند.">
<!ENTITY aboutTor.getInvolved.label "دریافت مشارکت »">
<!ENTITY aboutTor.getInvolved.link "https://www.torproject.org/getinvolved/volunteer.html.en">
-<!ENTITY aboutTor.newsletter.tagline "آخرین اخبار تور را در صندوق ورودی خود دریافت کنید.">
-<!ENTITY aboutTor.newsletter.link_text "ثبتنام برای اخبار تور.">
-<!ENTITY aboutTor.donationBanner.line2e "تور را محکم نگه دارید.">
+<!ENTITY aboutTor.newsletter.tagline "آخرین اخبار Tor را در صندوق ورودی خود دریافت کنید.">
+<!ENTITY aboutTor.newsletter.link_text "ثبتنام برای اخبار Tor.">
+<!ENTITY aboutTor.donationBanner.line2e "Tor را محکم نگه دارید.">
<!ENTITY aboutTor.donationBanner.buttonA "اکنون اهداء کنید">
<!-- End of year 2019 Fundraising campaign -->
<!ENTITY aboutTor.ey2019.mozilla "امروز کمک کنید و موزیلا با کمک مالی شما همراهی میکند.">
-<!ENTITY aboutTor.ey2019.tracking "Tracking, surveillance, and censorship are widespread online.">
-<!ENTITY aboutTor.ey2019.takeback "Take back the Internet with Tor">
+<!ENTITY aboutTor.ey2019.tracking "ردیابی ، نظارت و سانسور به صورت آنلاین گسترده است.">
+<!ENTITY aboutTor.ey2019.takeback "اینترنت را با Tor برگردانید">
diff --git a/chrome/locale/fa/brand.dtd b/chrome/locale/fa/brand.dtd
index 83d0e722..784a2e60 100644
--- a/chrome/locale/fa/brand.dtd
+++ b/chrome/locale/fa/brand.dtd
@@ -2,10 +2,10 @@
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<!ENTITY brandShorterName "مرورگر تور">
-<!ENTITY brandShortName "مرورگر تور">
-<!ENTITY brandFullName "مرورگر تور">
-<!ENTITY vendorShortName "پروژهٔ تور">
+<!ENTITY brandShorterName "مرورگر Tor">
+<!ENTITY brandShortName "مرورگر Tor">
+<!ENTITY brandFullName "مرورگر Tor">
+<!ENTITY vendorShortName "پروژهٔ Tor">
<!ENTITY trademarkInfo.part1 "'Tor' و 'Onion Logo' علامت های تجاری ثبت شده از پروژه Tor هستند">
<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
diff --git a/chrome/locale/fa/brand.properties b/chrome/locale/fa/brand.properties
index b602d0ab..1b6519c9 100644
--- a/chrome/locale/fa/brand.properties
+++ b/chrome/locale/fa/brand.properties
@@ -2,10 +2,10 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-brandShorterName=مرورگر تور
-brandShortName=مرورگر تور
-brandFullName=مرورگر تور
-vendorShortName=پروژه تور
+brandShorterName=مرورگر Tor
+brandShortName=مرورگر Tor
+brandFullName=مرورگر Tor
+vendorShortName=پروژه Tor
homePageSingleStartMain=شروع بکار فایرفاکس، یک صفحه اصلی با قابلیت کادر جستجو ایجاد شد.
homePageImport=درونریزی صفحه خانگی از %S
diff --git a/chrome/locale/fa/browserOnboarding.properties b/chrome/locale/fa/browserOnboarding.properties
index 4d25d226..19dcd9b2 100644
--- a/chrome/locale/fa/browserOnboarding.properties
+++ b/chrome/locale/fa/browserOnboarding.properties
@@ -4,24 +4,24 @@
onboarding.tour-tor-welcome=خوش آمدید
onboarding.tour-tor-welcome.title=شما آماده هستید.
-onboarding.tour-tor-welcome.description=مرورگر تور در هنگام مرورگری وب بالاترین استاندارد در حریم شخصی و امنیت را به شما ارائه میدهد. شما حالا در برابر ردیابی, زیرنظر داشتن و سانسور محافظت میشوید. چگونگی این امر توسط این پذیرش سازمانی سریع به شما نشان داده خواهد شد.
+onboarding.tour-tor-welcome.description=مرورگر Tor در هنگام مرورگری وب بالاترین استاندارد در حریم شخصی و امنیت را به شما ارائه میدهد. شما حالا در برابر ردیابی, زیرنظر داشتن و سانسور محافظت میشوید. چگونگی این امر توسط این پذیرش سازمانی سریع به شما نشان داده خواهد شد.
onboarding.tour-tor-welcome.next-button=برو به حریم خصوصی
onboarding.tour-tor-privacy=حریم خصوصی
onboarding.tour-tor-privacy.title=بو کشنده ها و جاسوس ها
-onboarding.tour-tor-privacy.description=مرورگر تور بعد از هر نشست کلوچه ها و تاریخچه گشت و گذار شما را پاک میکند. اینگونه اصلاحات امنیت و حریم شخصی شما را تضمین میکند. بر روی «شبکه پیازی» کلیک کنید تا یادبگیرید که ما چطور از شما درون شبکه محافظت میکنیم.
-onboarding.tour-tor-privacy.button=برو به شبکه تور
+onboarding.tour-tor-privacy.description=مرورگر Tor بعد از هر نشست کلوچه ها و تاریخچه گشت و گذار شما را پاک میکند. اینگونه اصلاحات امنیت و حریم شخصی شما را تضمین میکند. بر روی «شبکه پیازی» کلیک کنید تا یادبگیرید که ما چطور از شما درون شبکه محافظت میکنیم.
+onboarding.tour-tor-privacy.button=برو به شبکه Tor
-onboarding.tour-tor-network=شبکه تور
+onboarding.tour-tor-network=شبکه Tor
onboarding.tour-tor-network.title=در یک شبکه توضیع شده سفر کنید.
-onboarding.tour-tor-network.description=مرورگر تور شما را به شبکه تور متصل میکند که توسط هزاران داوطلب از گوشه گوشه ی جهان برپا شده است. برخلاف وی پی ان در اینجا هیچ نقطه آسیب پذیر مرکزی که باعث خرابی سیستم بشود یا نیاز باشد که به آن اعتماد کنید تا از وب به طور شخصی لذت ببرید وجود ندارد.
+onboarding.tour-tor-network.description=مرورگر Tor شما را به شبکه Tor متصل میکند که توسط هزاران داوطلب از گوشه گوشه ی جهان برپا شده است. برخلاف وی پی ان در اینجا هیچ نقطه آسیب پذیر مرکزی که باعث خرابی سیستم بشود یا نیاز باشد که به آن اعتماد کنید تا از وب به طور شخصی لذت ببرید وجود ندارد.
onboarding.tour-tor-network.description-para2=NEW: Tor Network Settings, including the ability to request bridges where Tor is blocked, can now be found in Preferences.
onboarding.tour-tor-network.action-button=Adjust Your Tor Network Settings
onboarding.tour-tor-network.button=به نمایش جریان بروید
onboarding.tour-tor-circuit-display=نمایش جریان
onboarding.tour-tor-circuit-display.title=مسیر خود را ببینید.
-onboarding.tour-tor-circuit-display.description=برای هر دامنه که بازدید میکنید، ترافیک شما در جریانی از سه رلهی تور در سراسر جهان رمزگذاری میشود. وبسایت مورد نظر نمیداند که شما از کجا ارتباط را برقرار کردهاید. شما میتوانید درخواست یک جریان جدید را با کلیک بر 'جریان جدید برای این سایت' در بخش نمایش جریان داشته باشید.
+onboarding.tour-tor-circuit-display.description=برای هر دامنه که بازدید میکنید، ترافیک شما در جریانی از سه رلهی Tor در سراسر جهان رمزگذاری میشود. وبسایت مورد نظر نمیداند که شما از کجا ارتباط را برقرار کردهاید. شما میتوانید درخواست یک جریان جدید را با کلیک بر 'جریان جدید برای این سایت' در بخش نمایش جریان داشته باشید.
onboarding.tour-tor-circuit-display.button=مشاهده مسیر من
onboarding.tour-tor-circuit-display.next-button=برو به امنیت
@@ -34,7 +34,7 @@ onboarding.tour-tor-security-level.next-button=برو به نکات تجربه
onboarding.tour-tor-expect-differences=نکات تجربه
onboarding.tour-tor-expect-differences.title=انتظار برخی تفاوتها را داشته باشید.
-onboarding.tour-tor-expect-differences.description=با تمام امکانات امنیت و حریم خصوصی که تور فراهم کرده، تجربه شما در حال استفاده از اینترنت ممکن است کمی متفاوت باشد. همه چیز ممکن است کمی آهستهتر باشد و بسته به سطح امنیت شما بعضی اجزا ممکن است کار نکنند یا بارگیری نشوند. ممکن است گاها از شما درخواست شود که انسان بودن و ربات نبودن خود را اثبات کنید.
+onboarding.tour-tor-expect-differences.description=با تمام امکانات امنیت و حریم خصوصی که Tor فراهم کرده، تجربه شما در حال استفاده از اینترنت ممکن است کمی متفاوت باشد. همه چیز ممکن است کمی آهستهتر باشد و بسته به سطح امنیت شما بعضی اجزا ممکن است کار نکنند یا بارگیری نشوند. ممکن است گاها از شما درخواست شود که انسان بودن و ربات نبودن خود را اثبات کنید.
onboarding.tour-tor-expect-differences.button=مشاهده پرسشگان
onboarding.tour-tor-expect-differences.next-button=به خدمات پیازی بروید
@@ -53,7 +53,7 @@ onboarding.tour-tor-toolbar-update-9.0.title=Goodbye Onion Button.
onboarding.tour-tor-toolbar-update-9.0.description=We want your experience using Tor to be fully integrated within Tor Browser.
onboarding.tour-tor-toolbar-update-9.0.description-para2=That's why now, rather than using the onion button, you can see your Tor Circuit via the [i] in the URL bar and request a New Identity using the toolbar button or the [≡] menu.
onboarding.tour-tor-toolbar-update-9.0.button=How to Request a New Identity
-onboarding.tour-tor-toolbar-update-9.0.next-button=برو به شبکه تور
+onboarding.tour-tor-toolbar-update-9.0.next-button=برو به شبکه Tor
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=بعدی
diff --git a/chrome/locale/fa/torbutton.dtd b/chrome/locale/fa/torbutton.dtd
index 93daabb0..bef0810d 100644
--- a/chrome/locale/fa/torbutton.dtd
+++ b/chrome/locale/fa/torbutton.dtd
@@ -2,14 +2,14 @@
<!ENTITY torbutton.context_menu.new_identity_key "I">
<!ENTITY torbutton.context_menu.new_circuit "شبکه جدید Tor برای این سایت">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
-<!ENTITY torbutton.context_menu.networksettings "تنظیمات شبکه تور">
+<!ENTITY torbutton.context_menu.networksettings "تنظیمات شبکه Tor">
<!ENTITY torbutton.context_menu.networksettings.key "N">
-<!ENTITY torbutton.context_menu.downloadUpdate "بررسی بروز رسانی مرورگر تور">
+<!ENTITY torbutton.context_menu.downloadUpdate "بررسی بروز رسانی مرورگر Tor">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
<!ENTITY torbutton.context_menu.cookieProtections "حفاظت کوکی ها...">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.button.tooltip "جهت شروع دكمه تُرکليک کنيد">
-<!ENTITY torbutton.prefs.security_settings "تنظیمات امنیتی مرورگر تور">
+<!ENTITY torbutton.prefs.security_settings "تنظیمات امنیتی مرورگر Tor">
<!ENTITY torbutton.cookiedialog.title "مديريت حفاظت کلوچکها">
<!ENTITY torbutton.cookiedialog.lockCol "حفاظت شده">
<!ENTITY torbutton.cookiedialog.domainCol "ميزبان">
@@ -24,7 +24,7 @@
<!ENTITY torbutton.prefs.sec_caption "سطح امنیت">
<!ENTITY torbutton.prefs.sec_caption_tooltip "نوار لغزنده امنیتی به شما اجازه میدهد که مشخصههای خاص مرورگر را غیرفعال کنید که ممکن است مرورگر شما را در برابر تلاشهای هک آسیبپذیر سازد.">
<!ENTITY torbutton.prefs.sec_standard_label "استاندارد">
-<!ENTITY torbutton.prefs.sec_standard_description "همه مرورگر تور و ویژگیهای وبسایت به کار انداخته شدهاند.">
+<!ENTITY torbutton.prefs.sec_standard_description "همه مرورگر Tor و ویژگیهای وبسایت به کار انداخته شدهاند.">
<!ENTITY torbutton.prefs.sec_safer_label "ایمن تر ">
<!ENTITY torbutton.prefs.sec_safer_description "از کار انداختن ویژگیهای وبسایت که اغلب خطرناک هستند و باعث از دست رفتن برخی سایتها میشوند.">
<!ENTITY torbutton.prefs.sec_safer_list_label "تنظیم مکانی امنتر:">
@@ -45,5 +45,5 @@
<!ENTITY torbutton.prefs.sec_custom_summary "تنظیمات سفارشی شما در مرورگر منجر به تغییرات غیر معمول در تنظیمات امنیتی شده است.برای امن نگه داشتن حریم خصوصی خود ما پیشنهاد میکنیم یکی از تنظیمات پیشفرض امنیتی را انتخاب کنید. ">
<!ENTITY torbutton.prefs.sec_restore_defaults "بازگردانی تنظیمات اولیه">
<!ENTITY torbutton.prefs.sec_advanced_security_settings "تنظیمات پیشرفته امنیت ...">
-<!ENTITY torbutton.circuit_display.title "مدار تور">
+<!ENTITY torbutton.circuit_display.title "مدار Tor">
<!ENTITY torbutton.circuit_display.new_circuit "مدار جدید برای این سایت">
diff --git a/chrome/locale/fa/torbutton.properties b/chrome/locale/fa/torbutton.properties
index 23c6309d..5c6ce938 100644
--- a/chrome/locale/fa/torbutton.properties
+++ b/chrome/locale/fa/torbutton.properties
@@ -9,10 +9,10 @@ torbutton.circuit_display.guard = محافظ
torbutton.circuit_display.guard_note = گره [گارد] شما ممکن است تغییر نکند.
torbutton.circuit_display.learn_more = اطلاعات بیشتر
torbutton.content_sizer.margin_tooltip = مرورگر Tor اضافه می کند این حاشیه را به عرض و ارتفاع پنجره شما که کمتر مشخص شود، و در نتیجه باعث کاهش توانایی به ردیابی آنلاین شما شود.
-torbutton.panel.tooltip.disabled = برای فعال کردن تور کليک کنيد
-torbutton.panel.tooltip.enabled = برای غيرفعال کردن تور کليک کنيد
-torbutton.panel.label.disabled = تور غیر فعال شد
-torbutton.panel.label.enabled = تور فعال شد
+torbutton.panel.tooltip.disabled = برای فعال کردن Tor کليک کنيد
+torbutton.panel.tooltip.enabled = برای غيرفعال کردن Tor کليک کنيد
+torbutton.panel.label.disabled = Tor غیر فعال شد
+torbutton.panel.label.enabled = Tor فعال شد
extensions.torbutton(a)torproject.org.description = Torbutton دکمه ای را برای شما فراهم مینماید تا تنظیمات "تر" را پیکربندی کرده و بتوانید به راحتی و سرعت، داده های خصوصی مرورگرتان را پاک کنید.
torbutton.popup.external.title = میخواهید یک فایل نوع بیرونی دانلود شود؟
torbutton.popup.external.app = مرورگر نمیتواند این فایل را نمایش دهد، لازم است تا با برنامه دیگری آن را باز کنید.\n
@@ -34,7 +34,7 @@ torbutton.popup.confirm_newnym = مرورگر Tor همه پنجره ها و تب
torbutton.maximize_warning = ماکسیمایز کردن مرورگر تُر به وبسایت ها این امکان را می دهد که از روی سایز صفحه نمایش، شما را ردگیری کنند. پیشنهاد می کنیم که از سایز پیش فرض مرورگر تُر استفاده کنید.
# Canvas permission prompt. Strings are kept here for ease of translation.
-canvas.siteprompt=این وبسایت (%S) سعی دارد اطلاعات بوم تصویر HTML5 را دریافت کند که ممکن است برای شناسایی منحصر به فرد کامپیوتر شما استفاده شود.\n\nآیا مرورگر تور میبایست اجازه دریافت این اطلاعات را بدهد؟
+canvas.siteprompt=این وبسایت (%S) سعی دارد اطلاعات بوم تصویر HTML5 را دریافت کند که ممکن است برای شناسایی منحصر به فرد کامپیوتر شما استفاده شود.\n\nآیا مرورگر Tor میبایست اجازه دریافت این اطلاعات را بدهد؟
canvas.notNow=نه در حال حاضر
canvas.notNowAccessKey=N
canvas.allow=اجازه دهید در آینده
diff --git a/chrome/locale/it/aboutTor.dtd b/chrome/locale/it/aboutTor.dtd
index a7d1b2ff..a250de89 100644
--- a/chrome/locale/it/aboutTor.dtd
+++ b/chrome/locale/it/aboutTor.dtd
@@ -34,4 +34,4 @@
<!-- End of year 2019 Fundraising campaign -->
<!ENTITY aboutTor.ey2019.mozilla "Dai oggi, e Mozilla ricambierà la tua donazione.">
<!ENTITY aboutTor.ey2019.tracking "Tracciamento, sorveglianza e censura sono ampiamente diffuse in rete.">
-<!ENTITY aboutTor.ey2019.takeback "Take back the Internet with Tor">
+<!ENTITY aboutTor.ey2019.takeback "Riprendi possesso di internet con Tor">
diff --git a/chrome/locale/ka/aboutTor.dtd b/chrome/locale/ka/aboutTor.dtd
index f815fce2..4a47f3d8 100644
--- a/chrome/locale/ka/aboutTor.dtd
+++ b/chrome/locale/ka/aboutTor.dtd
@@ -34,4 +34,4 @@
<!-- End of year 2019 Fundraising campaign -->
<!ENTITY aboutTor.ey2019.mozilla "გაეცით დღესვე და Mozilla გააორმაგებს თქვენს შემოწირულობას.">
<!ENTITY aboutTor.ey2019.tracking "მეთვალყურეობა, ზედამხედველობა და აკრძალვები მთელ ინტერნეტშია გავრცელებული.">
-<!ENTITY aboutTor.ey2019.takeback "Take back the Internet with Tor">
+<!ENTITY aboutTor.ey2019.takeback "დაიბრუნეთ ინტერნეტი Tor-ით.">
diff --git a/chrome/locale/mk/aboutTor.dtd b/chrome/locale/mk/aboutTor.dtd
index 17cb2320..8dd5c069 100644
--- a/chrome/locale/mk/aboutTor.dtd
+++ b/chrome/locale/mk/aboutTor.dtd
@@ -34,4 +34,4 @@
<!-- End of year 2019 Fundraising campaign -->
<!ENTITY aboutTor.ey2019.mozilla "Донирај денес, и Mozilla ќе ја поврзе Вашата донација.">
<!ENTITY aboutTor.ey2019.tracking "Следењето, надзорот, и цензурата се раширени насекаде низ Интернетот.">
-<!ENTITY aboutTor.ey2019.takeback "Take back the Internet with Tor">
+<!ENTITY aboutTor.ey2019.takeback "Вратете го назад вашиот Интернет со Tor">
diff --git a/chrome/locale/ru/aboutTor.dtd b/chrome/locale/ru/aboutTor.dtd
index 6e607bab..d38920d1 100644
--- a/chrome/locale/ru/aboutTor.dtd
+++ b/chrome/locale/ru/aboutTor.dtd
@@ -34,4 +34,4 @@
<!-- End of year 2019 Fundraising campaign -->
<!ENTITY aboutTor.ey2019.mozilla "Пожертвуйте сегодня и Mozilla удвоит ваше пожертвование.">
<!ENTITY aboutTor.ey2019.tracking "Отслеживание, наблюдение и цензура широко распространены в интернете.">
-<!ENTITY aboutTor.ey2019.takeback "Take back the Internet with Tor">
+<!ENTITY aboutTor.ey2019.takeback "Верните себе интернет вместе с Tor">
diff --git a/chrome/locale/tr/aboutTBUpdate.dtd b/chrome/locale/tr/aboutTBUpdate.dtd
index d8e3612f..74068bae 100644
--- a/chrome/locale/tr/aboutTBUpdate.dtd
+++ b/chrome/locale/tr/aboutTBUpdate.dtd
@@ -1,6 +1,6 @@
<!ENTITY aboutTBUpdate.changelogTitle "Tor Browser Değişiklik Günlüğü">
<!ENTITY aboutTBUpdate.updated "Tor Browser güncellendi.">
-<!ENTITY aboutTBUpdate.linkPrefix "Bu sürüm hakkındaki güncel bilgiler ">
+<!ENTITY aboutTBUpdate.linkPrefix "Bu sürüm hakkındaki güncel bilgileri ">
<!ENTITY aboutTBUpdate.linkLabel "web sitemizden edinilebilir">
<!ENTITY aboutTBUpdate.linkSuffix ".">
<!ENTITY aboutTBUpdate.version "Sürüm">
diff --git a/chrome/locale/tr/aboutTor.dtd b/chrome/locale/tr/aboutTor.dtd
index e3b214ab..dde5fe76 100644
--- a/chrome/locale/tr/aboutTor.dtd
+++ b/chrome/locale/tr/aboutTor.dtd
@@ -34,4 +34,4 @@
<!-- End of year 2019 Fundraising campaign -->
<!ENTITY aboutTor.ey2019.mozilla "Bugün yaptığınız her bağış kadar Mozilla da bağış yapacak.">
<!ENTITY aboutTor.ey2019.tracking "Çevrimiçi izleme, gözetim ve sansür uygulamaları yaygındır.">
-<!ENTITY aboutTor.ey2019.takeback "Take back the Internet with Tor">
+<!ENTITY aboutTor.ey2019.takeback "Tor kullanın İnterneti geri alın.">
diff --git a/chrome/locale/tr/browserOnboarding.properties b/chrome/locale/tr/browserOnboarding.properties
index b5e9b49f..84894a19 100644
--- a/chrome/locale/tr/browserOnboarding.properties
+++ b/chrome/locale/tr/browserOnboarding.properties
@@ -14,7 +14,7 @@ onboarding.tour-tor-privacy.button=Tor Ağına Geç
onboarding.tour-tor-network=Tor Ağı
onboarding.tour-tor-network.title=Tek merkezden yönetilmeyen bir ağda gezinin.
-onboarding.tour-tor-network.description=Tor Browser sizi tüm dünyada binlerce gönüllü tarafından işletilen Tor Ağına bağlar. VPN bağlantısının aksine güvenlik açığı oluşturacak bir nokta ya da İnternet üzerinde kişisel gizliliğinizi koruyarak gezinmeniz için güvenmeniz gereken merkezi bir kuruluş yoktur.
+onboarding.tour-tor-network.description=Tor Browser sizi dünyada binlerce gönüllü tarafından işletilen Tor Ağına bağlar. VPN bağlantısının aksine, bir güvenlik açığı ya da İnternet üzerinde kişisel gizliliğinizi koruması için güvenmeniz gereken merkezi bir kuruluş yoktur.
onboarding.tour-tor-network.description-para2=YENİ: Tor Ağı Ayarları, Tor ağına erişimin engellendiği yerlerde köprü isteğinde bulunma özelliği artı Ayarlar bölümü altında bulunabilir.
onboarding.tour-tor-network.action-button=Tor Ağı Ayarlarınızı Yapın
onboarding.tour-tor-network.button=Devre Görünümüne Geç
diff --git a/chrome/locale/tr/torbutton.properties b/chrome/locale/tr/torbutton.properties
index 4523d729..bf65f4af 100644
--- a/chrome/locale/tr/torbutton.properties
+++ b/chrome/locale/tr/torbutton.properties
@@ -6,7 +6,7 @@ torbutton.circuit_display.relay = Aktarıcı
torbutton.circuit_display.tor_bridge = Köprü
torbutton.circuit_display.unknown_country = Bilinmeyen Ülke
torbutton.circuit_display.guard = Koruma
-torbutton.circuit_display.guard_note = [Guard] düğümünüz değiştirilemez.
+torbutton.circuit_display.guard_note = [Koruma] düğümünüz değiştirilemez.
torbutton.circuit_display.learn_more = Ayrıntılı bilgi alın
torbutton.content_sizer.margin_tooltip = Tor Browser pencerenizin genişlik ve yüksekliğini daha az ayırt edilebilir duruma getirmek için kenar boşlukları ekleyerek kişilerin sizi çevrim içi olarak izleme yeteneğini azaltır.
torbutton.panel.tooltip.disabled = Tor uygulamasını etkinleştirmek için tıklayın
diff --git a/chrome/locale/zh-CN/aboutTor.dtd b/chrome/locale/zh-CN/aboutTor.dtd
index 469bdd1a..f0468fbf 100644
--- a/chrome/locale/zh-CN/aboutTor.dtd
+++ b/chrome/locale/zh-CN/aboutTor.dtd
@@ -34,4 +34,4 @@
<!-- End of year 2019 Fundraising campaign -->
<!ENTITY aboutTor.ey2019.mozilla "现在捐款, Mozilla 会匹配你的捐赠。">
<!ENTITY aboutTor.ey2019.tracking "跟踪,监视和审查在网上广泛存在。">
-<!ENTITY aboutTor.ey2019.takeback "Take back the Internet with Tor">
+<!ENTITY aboutTor.ey2019.takeback "使用 Tor 夺回互联网">
1
0
03 Jan '20
commit 2dfa0e0c9cff7cfad93664e0b0b6cdc05b24b7f2
Author: Alex Catarineu <acat(a)torproject.org>
Date: Sat Jun 8 15:10:01 2019 +0200
Remove cookie-jar-selector component
---
chrome.manifest | 5 -
chrome/content/torbutton.js | 18 +-
components/cookie-jar-selector.js | 460 ------------------------------------
components/startup-observer.js | 18 ++
defaults/preferences/preferences.js | 2 -
jar.mn | 5 -
6 files changed, 19 insertions(+), 489 deletions(-)
diff --git a/chrome.manifest b/chrome.manifest
index 13bef661..d1ffe6d6 100644
--- a/chrome.manifest
+++ b/chrome.manifest
@@ -143,9 +143,6 @@ contract @torproject.org/torbutton-extAppBlocker;1 {3da0269f-fc29-4e9e-a678-c3b1
component {06322def-6fde-4c06-aef6-47ae8e799629} components/startup-observer.js
contract @torproject.org/startup-observer;1 {06322def-6fde-4c06-aef6-47ae8e799629}
-component {e6204253-b690-4159-bfe8-d4eedab6b3be} components/cookie-jar-selector.js
-contract @torproject.org/cookie-jar-selector;1 {e6204253-b690-4159-bfe8-d4eedab6b3be}
-
component {5d57312b-5d8c-4169-b4af-e80d6a28a72e} components/torCheckService.js
contract @torproject.org/torbutton-torCheckService;1 {5d57312b-5d8c-4169-b4af-e80d6a28a72e}
@@ -155,8 +152,6 @@ 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}
-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
category profile-after-change DragDropFilter @torproject.org/torbutton-dragDropFilter;1
diff --git a/chrome/content/torbutton.js b/chrome/content/torbutton.js
index 9846b864..72636125 100644
--- a/chrome/content/torbutton.js
+++ b/chrome/content/torbutton.js
@@ -1039,16 +1039,7 @@ async function torbutton_do_new_identity() {
torbutton_log(3, "New Identity: Clearing Cookies and DOM Storage");
- if (m_tb_prefs.getBoolPref("extensions.torbutton.cookie_protections")) {
- var selector = Cc["@torproject.org/cookie-jar-selector;1"]
- .getService(Ci.nsISupports)
- .wrappedJSObject;
- // This emits "cookie-changed", "cleared", which kills DOM storage
- // and the safe browsing API key
- selector.clearUnprotectedCookies("tor");
- } else {
- torbutton_clear_cookies();
- }
+ torbutton_clear_cookies();
torbutton_log(3, "New Identity: Closing open connections");
@@ -1558,13 +1549,6 @@ function torbutton_check_protections()
document.getElementById("torbutton-checkForUpdate").hidden = false;
}
- var cookie_pref = m_tb_prefs.getBoolPref("extensions.torbutton.cookie_protections");
- document.getElementById("torbutton-cookie-protector").disabled = !cookie_pref;
-
- // XXX: Bug 14632: The cookie dialog is useless in private browsing mode in FF31ESR
- // See https://trac.torproject.org/projects/tor/ticket/10353 for more info.
- document.getElementById("torbutton-cookie-protector").hidden = m_tb_prefs.getBoolPref("browser.privatebrowsing.autostart");
-
if (!m_tb_control_pass || (!m_tb_control_ipc_file && !m_tb_control_port)) {
// TODO: Remove the Torbutton menu entry again once we have done our
// security control redesign.
diff --git a/components/cookie-jar-selector.js b/components/cookie-jar-selector.js
deleted file mode 100644
index 79a66e8a..00000000
--- a/components/cookie-jar-selector.js
+++ /dev/null
@@ -1,460 +0,0 @@
-// Bug 1506 P1: This component is currently only used to protect
-// user-selected cookies from deletion. Moreover, all the E4X code is
-// deprecated and needs to be replaced with JSON.
-
-/*************************************************************************
- * Cookie Jar Selector (JavaScript XPCOM component)
- * Enables selection of separate cookie jars for (more) anonymous browsing.
- * Designed as a component of FoxTor, http://cups.cs.cmu.edu/foxtor/
- * Copyright 2006, distributed under the same (open source) license as FoxTor
- *
- * Contributor(s):
- * Collin Jackson <mozilla(a)collinjackson.com>
- *
- *************************************************************************/
-
-// Module specific constants
-const kMODULE_NAME = "Cookie Jar Selector";
-const kMODULE_CONTRACTID = "@torproject.org/cookie-jar-selector;1";
-const kMODULE_CID = Components.ID("e6204253-b690-4159-bfe8-d4eedab6b3be");
-
-ChromeUtils.import("resource://torbutton/modules/default-prefs.js", {})
- .ensureDefaultPrefs();
-
-const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
-const { XPCOMUtils } = ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
-
-function Cookie(number,name,value,isDomain,host,rawHost,HttpOnly,path,isSecure,isSession,
- expires,isProtected) {
- this.number = number;
- this.name = name;
- this.value = value;
- this.isDomain = isDomain;
- this.host = host;
- this.rawHost = rawHost;
- this.isHttpOnly = HttpOnly;
- this.path = path;
- this.isSecure = isSecure;
- this.isSession = isSession;
- this.expires = expires;
- this.isProtected = isProtected;
-}
-
-function CookieJarSelector() {
- this.logger = Cc["@torproject.org/torbutton-logger;1"]
- .getService(Ci.nsISupports).wrappedJSObject;
-
- this.logger.log(3, "Component Load 5: New CookieJarSelector " + kMODULE_CONTRACTID);
-
- this.prefs = Services.prefs;
-
- var getProfileFile = function(filename) {
- var loc = "ProfD"; // profile directory
- var file = Services.dirsvc
- .get(loc, Ci.nsIFile)
- .clone();
- file.append(filename);
- return file;
- };
-
- this.clearCookies = function() {
- try {
- Services.cookies.removeAll();
- } catch (e) {
- this.logger.log(4, "Cookie clearing exception: " + e);
- }
- };
-
- this._cookiesToJS = function(getSession) {
- var cookieManager = Services.cookies;
- var cookiesEnum = cookieManager.enumerator;
- var cookiesAsJS = [];
- var count = 0;
- while (cookiesEnum.hasMoreElements()) {
- var nextCookie = cookiesEnum.getNext().QueryInterface(Ci.nsICookie2);
- var JSCookie = new Cookie(count++, nextCookie.name, nextCookie.value, nextCookie.isDomain, nextCookie.host,
- (nextCookie.host.charAt(0)==".") ? nextCookie.host.substring(1,nextCookie.host.length) : nextCookie.host,
- nextCookie.isHttpOnly, nextCookie.path, nextCookie.isSecure, nextCookie.isSession, nextCookie.expires,
- false);
- // Save either session or non-session cookies this time around:
- if (JSCookie.isSession && getSession ||
- !JSCookie.isSession && !getSession)
- cookiesAsJS.push(JSCookie);
- }
- return cookiesAsJS;
- };
-
- this._loadCookiesFromJS = function(cookiesAsJS) {
- if (typeof(cookiesAsJS) == "undefined" || !cookiesAsJS)
- return;
-
- var cookieManager = Services.cookies;
-
- for (var i = 0; i < cookiesAsJS.length; i++) {
- var cookie = cookiesAsJS[i];
- //this.logger.log(2, "Loading cookie: "+host+":"+cname+" until: "+expiry);
- cookieManager.add(cookie.host, cookie.path, cookie.name, cookie.value,
- cookie.isSecure, cookie.isHttpOnly, cookie.isSession,
- cookie.expires);
- }
- };
-
- this._cookiesToFile = function(name) {
- var file = getProfileFile("cookies-" + name + ".json");
- var foStream = Cc["@mozilla.org/network/file-output-stream;1"]
- .createInstance(Ci.nsIFileOutputStream);
- foStream.init(file, 0x02 | 0x08 | 0x20, 0o666, 0);
- var data = JSON.stringify(this["cookiesobj-" + name]);
- foStream.write(data, data.length);
- foStream.close();
- };
-
- // Start1506
- this._protectedCookiesToFile = function(name) {
- var file = getProfileFile("protected-" + name + ".json");
- var foStream = Cc["@mozilla.org/network/file-output-stream;1"]
- .createInstance(Ci.nsIFileOutputStream);
- foStream.init(file, 0x02 | 0x08 | 0x20, 0o666, 0);
- var data = JSON.stringify(this["protected-" + name]);
- foStream.write(data, data.length);
- foStream.close();
- };
-
- this.addProtectedCookie = function(cookie) {
- var name = "tor";
- var cookies = this.getProtectedCookies(name);
-
- if (typeof(cookies) == "undefined" || cookies == null
- || cookies.length == 0)
- cookies = [];
-
- if (cookie.isSession) {
- // session cookies get fucked up expiry. Give it 1yr if
- // the user wants to save their session cookies
- cookie.expires = Date.now()/1000 + 365*24*60*60;
- }
-
- cookies.push(cookie);
- this["protected-" + name] = cookies;
-
- if (!this.prefs.getBoolPref("browser.privatebrowsing.autostart")) {
- // save protected cookies to file
- this._protectedCookiesToFile(name);
- } else {
- try {
- var file = getProfileFile("protected-" + name + ".json");
- if (file.exists()) {
- file.remove(false);
- }
- } catch(e) {
- this.logger.log(5, "Can't remove "+name+" cookie file: "+e);
- }
- }
- };
-
- this.getProtectedCookies = function(name) {
- var file = getProfileFile("protected-" + name + ".json");
- if (!file.exists()) {
- return this["protected-" + name];
- }
- var data = "";
- var fstream = Cc["@mozilla.org/network/file-input-stream;1"]
- .createInstance(Ci.nsIFileInputStream);
- var sstream = Cc["@mozilla.org/scriptableinputstream;1"]
- .createInstance(Ci.nsIScriptableInputStream);
- fstream.init(file, -1, 0, 0);
- sstream.init(fstream);
-
- var str = sstream.read(4096);
- while (str.length > 0) {
- data += str;
- str = sstream.read(4096);
- }
-
- sstream.close();
- fstream.close();
- try {
- var ret = JSON.parse(data);
- } catch(e) { // file has been corrupted; XXX: handle error differently
- this.logger.log(5, "Cookies corrupted: "+e);
- try {
- file.remove(false); //XXX: is it necessary to remove it ?
- var ret = null;
- } catch(e2) {
- this.logger.log(5, "Can't remove file "+e);
- }
- }
- return ret;
- };
-
- this.protectCookies = function(cookies) {
- var name = "tor";
- this._writeProtectCookies(cookies,name);
- if (!this.prefs.getBoolPref("browser.privatebrowsing.autostart")) {
- // save protected cookies to file
- this._protectedCookiesToFile(name);
- } else {
- try {
- var file = getProfileFile("protected-" + name + ".json");
- if (file.exists()) {
- file.remove(false);
- }
- } catch(e) {
- this.logger.log(5, "Can't remove "+name+" cookie file: "+e);
- }
- }
- };
-
- this._writeProtectCookies = function(cookies, name) {
- for (var i = 0; i < cookies.length; i++) {
- if (cookies[i].isSession) {
- // session cookies get fucked up expiry. Give it 1yr if
- // the user wants to save their session cookies
- cookies[i].expires = Date.now()/1000 + 365*24*60*60;
- }
- cookies[i].isProtected = true;
- }
- this["protected-" + name] = cookies;
- };
- // End1506
-
- this._cookiesFromFile = function(name) {
- var file = getProfileFile("cookies-" + name + ".json");
- if (!file.exists())
- return null;
- var data = "";
- var fstream = Cc["@mozilla.org/network/file-input-stream;1"]
- .createInstance(Ci.nsIFileInputStream);
- var sstream = Cc["@mozilla.org/scriptableinputstream;1"]
- .createInstance(Ci.nsIScriptableInputStream);
- fstream.init(file, -1, 0, 0);
- sstream.init(fstream);
-
- var str = sstream.read(4096);
- while (str.length > 0) {
- data += str;
- str = sstream.read(4096);
- }
-
- sstream.close();
- fstream.close();
- try {
- var ret = JSON.parse(data);
- } catch(e) { // file has been corrupted; XXX: handle error differently
- this.logger.log(5, "Cookies corrupted: "+e);
- try {
- file.remove(false); //XXX: is it necessary to remove it ?
- var ret = null;
- } catch(e2) {
- this.logger.log(5, "Can't remove file "+e);
- }
- }
- return ret;
- };
-
- this.saveCookies = function(name) {
- // transition removes old tor-style cookie file
- try {
- var oldCookieFile = getProfileFile("cookies-"+name+".xml");
- if (oldCookieFile.exists()) {
- oldCookieFile.remove(false);
- }
- } catch(e) {
- this.logger.log(5, "Can't remove old "+name+" file "+e);
- }
-
- // save cookies to JS objects
- this["session-cookiesobj-" + name] = this._cookiesToJS(true);
- this["cookiesobj-" + name] = this._cookiesToJS(false);
-
- if (!this.prefs.getBoolPref("browser.privatebrowsing.autostart")) {
- // save cookies to file
- this._cookiesToFile(name);
- } else {
- // Clear the old file
- try {
- var file = getProfileFile("cookies-" + name + ".json");
- if (file.exists()) {
- file.remove(false);
- }
- } catch(e) {
- this.logger.log(5, "Can't remove "+name+" cookie file "+e);
- }
- }
-
- // ok, everything's fine
- this.logger.log(2, "Cookies saved");
- };
-
- // Start1506
- this.clearUnprotectedCookies = function(name) {
- try {
- var protCookies = this.getProtectedCookies(name);
- if (protCookies == null || typeof(protCookies) == "undefined"
- || protCookies.length == 0) {
- //file does not exist - no protected cookies. Clear them all.
- this.logger.log(3, "No protected cookies. Clearing all cookies.");
- this.clearCookies();
- return;
- }
- var cookiemanager = Services.cookies;
-
- var enumerator = cookiemanager.enumerator;
- var count = 0;
- var protcookie = false;
-
- while (enumerator.hasMoreElements()) {
- var nextCookie = enumerator.getNext();
- if (!nextCookie) break;
-
- nextCookie = nextCookie.QueryInterface(Ci.nsICookie);
- for (var i = 0; i < protCookies.length; i++) {
- protcookie = protcookie || (nextCookie.host == protCookies[i].host &&
- nextCookie.name == protCookies[i].name &&
- nextCookie.path == protCookies[i].path);
- }
-
- if (!protcookie) {
- cookiemanager.remove(nextCookie.host,
- nextCookie.name,
- nextCookie.path, false);
- } else {
- this.logger.log(3, "Found protected cookie for "+nextCookie.host);
- }
- protcookie = false;
- }
- // Emit cookie-changed event. This instructs other components to clear their identifiers
- // (Specifically DOM storage and safe browsing, but possibly others)
- var obsSvc = Services.obs;
- obsSvc.notifyObservers(this, "cookie-changed", "cleared");
- } catch (e) {
- this.logger.log(5, "Error deleting unprotected cookies: " + e);
- }
- };
- // End1506
-
- this.loadCookies = function(name, deleteSavedCookieJar) {
- // remove cookies before loading old ones
- this.clearCookies();
-
- if (!this.prefs.getBoolPref("browser.privatebrowsing.autostart")) {
- // load cookies from file
- this["cookiesobj-" + name] = this._cookiesFromFile(name);
- }
-
- //delete file if needed
- if (deleteSavedCookieJar) {
- try {
- var file = getProfileFile("cookies-" + name + ".json");
- if (file.exists())
- file.remove(false);
- } catch(e) {
- this.logger.log(5, "Can't remove saved "+name+" file "+e);
- }
- }
-
- // load cookies from JS objects
- this._loadCookiesFromJS(this["cookiesobj-"+name]);
- this._loadCookiesFromJS(this["session-cookiesobj-"+name]);
-
- // XXX: send a profile-do-change event?
-
- // ok, everything's fine
- this.logger.log(2, "Cookies reloaded");
- };
-
- // This JSObject is exported directly to chrome
- this.wrappedJSObject = this;
-
- // This timer is done so that in the event of a crash, we at least
- // have recent cookies in a jar to reload from.
- var jarThis = this;
- this.timerCallback = {
- cookie_changed: false,
-
- QueryInterface: ChromeUtils.generateQI(["nsITimer"]),
- notify() {
- // this refers to timerCallback object. use jarThis to reference
- // CookieJarSelector object.
- if(!this.cookie_changed) {
- jarThis.logger.log(2, "Got timer update, but no cookie change.");
- return;
- }
- jarThis.logger.log(3, "Got timer update. Saving changed cookies to jar.");
-
- this.cookie_changed = false;
-
- jarThis.saveCookies("tor");
- jarThis.logger.log(2, "Timer done. Cookies saved");
- }
- };
-
-}
-
-const nsIClassInfo = Ci.nsIClassInfo;
-const nsIObserver = Ci.nsIObserver;
-const nsITimer = Ci.nsITimer;
-
-// Start1506: You may or may not care about this:
-CookieJarSelector.prototype =
-{
- QueryInterface: ChromeUtils.generateQI(["nsIClassInfo", "nsIObserver"]),
-
- wrappedJSObject: null, // Initialized by constructor
-
- // make this an nsIClassInfo object
- flags: nsIClassInfo.DOM_OBJECT,
-
- _xpcom_categories: [{category:"profile-after-change"}],
- classID: kMODULE_CID,
- contractID: kMODULE_CONTRACTID,
- classDescription: "CookieJarSelector",
-
- // method of nsIClassInfo
- getInterfaces: function(count) {
- var interfaceList = [nsIClassInfo];
- count.value = interfaceList.length;
- return interfaceList;
- },
-
- // method of nsIClassInfo
- getHelperForLanguage: function(count) { return null; },
-
- // method of nsIObserver
- observe : function(aSubject, aTopic, aData) {
- switch(aTopic) {
- case "cookie-changed":
- var prefs = Services.prefs;
- this.timerCallback.cookie_changed = true;
-
- if (aData == "added"
- && prefs.getBoolPref("extensions.torbutton.cookie_auto_protect")
- && !prefs.getBoolPref("extensions.torbutton.tor_memory_jar")) {
- this.addProtectedCookie(aSubject.QueryInterface(Ci.nsICookie2));// protect the new cookie!
- }
- break;
- case "profile-after-change":
- var obsSvc = Services.obs;
- obsSvc.addObserver(this, "cookie-changed");
- // after profil loading, initialize a timer to call timerCallback
- // at a specified interval
- this.timer.initWithCallback(this.timerCallback, 60 * 1000, nsITimer.TYPE_REPEATING_SLACK); // 1 minute
- this.logger.log(3, "Cookie jar selector got profile-after-change");
- break;
- }
- },
-
- timer: Cc["@mozilla.org/timer;1"].createInstance(nsITimer),
-
-}
-
-/**
-* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
-* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
-*/
-if (XPCOMUtils.generateNSGetFactory)
- var NSGetFactory = XPCOMUtils.generateNSGetFactory([CookieJarSelector]);
-else
- var NSGetModule = XPCOMUtils.generateNSGetModule([CookieJarSelector]);
-
-// End1506
diff --git a/components/startup-observer.js b/components/startup-observer.js
index bf2f0f48..008134f8 100644
--- a/components/startup-observer.js
+++ b/components/startup-observer.js
@@ -29,6 +29,22 @@ const kMODULE_NAME = "Startup";
const kMODULE_CONTRACTID = "@torproject.org/startup-observer;1";
const kMODULE_CID = Components.ID("06322def-6fde-4c06-aef6-47ae8e799629");
+function cleanupCookies() {
+ const migratedPref = "extensions.torbutton.cookiejar_migrated";
+ if (!Services.prefs.getBoolPref(migratedPref, false)) {
+ // Cleanup stored cookie-jar-selector json files
+ const profileFolder = Services.dirsvc.get("ProfD", Ci.nsIFile).clone();
+ for (const file of profileFolder.directoryEntries) {
+ if (file.leafName.match(/^(cookies|protected)-.*[.]json$/)) {
+ try {
+ file.remove(false);
+ } catch (e) {}
+ }
+ }
+ Services.prefs.setBoolPref(migratedPref, true);
+ }
+}
+
function StartupObserver() {
this.logger = Cc["@torproject.org/torbutton-logger;1"]
.getService(Ci.nsISupports).wrappedJSObject;
@@ -62,6 +78,8 @@ function StartupObserver() {
this.logger.log(4, "Early proxy change failed. Will try again at profile load. Error: "+e);
}
+ cleanupCookies();
+
// Using all possible locales so that we do not have to change this list every time we support
// a new one.
const allLocales = [
diff --git a/defaults/preferences/preferences.js b/defaults/preferences/preferences.js
index acea0a3d..2d1bd99f 100644
--- a/defaults/preferences/preferences.js
+++ b/defaults/preferences/preferences.js
@@ -26,8 +26,6 @@ pref("extensions.torbutton.inserted_security_level",false);
pref("extensions.torbutton.maximize_warnings_remaining", 3);
// Security prefs:
-pref("extensions.torbutton.cookie_protections",true);
-pref("extensions.torbutton.cookie_auto_protect",false);
pref("extensions.torbutton.clear_http_auth",true);
pref("extensions.torbutton.close_newnym",true);
pref("extensions.torbutton.resize_new_windows",false);
diff --git a/jar.mn b/jar.mn
index 6697b543..8b6cbcf7 100644
--- a/jar.mn
+++ b/jar.mn
@@ -97,9 +97,6 @@ torbutton.jar:
% component {06322def-6fde-4c06-aef6-47ae8e799629} %components/startup-observer.js
% contract @torproject.org/startup-observer;1 {06322def-6fde-4c06-aef6-47ae8e799629}
-% component {e6204253-b690-4159-bfe8-d4eedab6b3be} %components/cookie-jar-selector.js
-% contract @torproject.org/cookie-jar-selector;1 {e6204253-b690-4159-bfe8-d4eedab6b3be}
-
% component {5d57312b-5d8c-4169-b4af-e80d6a28a72e} %components/torCheckService.js
% contract @torproject.org/torbutton-torCheckService;1 {5d57312b-5d8c-4169-b4af-e80d6a28a72e}
@@ -109,8 +106,6 @@ torbutton.jar:
% component {e33fd6d4-270f-475f-a96f-ff3140279f68} %components/domain-isolator.js
% contract @torproject.org/domain-isolator;1 {e33fd6d4-270f-475f-a96f-ff3140279f68}
-% 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
% category profile-after-change DragDropFilter @torproject.org/torbutton-dragDropFilter;1
1
0