tbb-commits
Threads by month
- ----- 2025 -----
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- 1 participants
- 18594 discussions

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

[tor-browser-bundle/master] Revert "Bug 13766: Raise MaxCircuitDirtiness to 2 hours"
by mikeperry@torproject.org 27 Mar '15
by mikeperry@torproject.org 27 Mar '15
27 Mar '15
commit a6b594ee52905336419e8148a77f96cde6488c42
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Thu Mar 26 23:09:54 2015 -0700
Revert "Bug 13766: Raise MaxCircuitDirtiness to 2 hours"
This reverts commit 824116042a03683ae20fa6e7d0768d8fd6fd6f95.
---
Bundle-Data/linux/Data/Tor/torrc-defaults | 1 -
Bundle-Data/mac/TorBrowser/Data/Tor/torrc-defaults | 1 -
Bundle-Data/windows/Data/Tor/torrc-defaults | 1 -
3 files changed, 3 deletions(-)
diff --git a/Bundle-Data/linux/Data/Tor/torrc-defaults b/Bundle-Data/linux/Data/Tor/torrc-defaults
index e502356..819b9e8 100644
--- a/Bundle-Data/linux/Data/Tor/torrc-defaults
+++ b/Bundle-Data/linux/Data/Tor/torrc-defaults
@@ -8,4 +8,3 @@ Log notice stdout
SocksPort 9150
ControlPort 9151
CookieAuthentication 1
-MaxCircuitDirtiness 7199
diff --git a/Bundle-Data/mac/TorBrowser/Data/Tor/torrc-defaults b/Bundle-Data/mac/TorBrowser/Data/Tor/torrc-defaults
index e502356..819b9e8 100644
--- a/Bundle-Data/mac/TorBrowser/Data/Tor/torrc-defaults
+++ b/Bundle-Data/mac/TorBrowser/Data/Tor/torrc-defaults
@@ -8,4 +8,3 @@ Log notice stdout
SocksPort 9150
ControlPort 9151
CookieAuthentication 1
-MaxCircuitDirtiness 7199
diff --git a/Bundle-Data/windows/Data/Tor/torrc-defaults b/Bundle-Data/windows/Data/Tor/torrc-defaults
index e502356..819b9e8 100644
--- a/Bundle-Data/windows/Data/Tor/torrc-defaults
+++ b/Bundle-Data/windows/Data/Tor/torrc-defaults
@@ -8,4 +8,3 @@ Log notice stdout
SocksPort 9150
ControlPort 9151
CookieAuthentication 1
-MaxCircuitDirtiness 7199
1
0

[tor-browser-bundle/master] Update update manifest config for 4.5a5.
by mikeperry@torproject.org 27 Mar '15
by mikeperry@torproject.org 27 Mar '15
27 Mar '15
commit d7473d644091e3c94eb494567d6a080d970e555d
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Thu Mar 26 19:54:14 2015 -0700
Update update manifest config for 4.5a5.
---
tools/update-responses/config.yml | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/tools/update-responses/config.yml b/tools/update-responses/config.yml
index 403be5c..d06be81 100644
--- a/tools/update-responses/config.yml
+++ b/tools/update-responses/config.yml
@@ -9,14 +9,14 @@ build_targets:
osx32: Darwin_x86-gcc3
osx64: Darwin_x86_64-gcc3
channels:
- alpha: 4.5a4
+ alpha: 4.5a5
versions:
- 4.5a4:
- platformVersion: 31.5.0
+ 4.5a5:
+ platformVersion: 31.6.0
detailsURL: https://www.torproject.org/projects/torbrowser.html.en
- download_url: https://www.torproject.org/dist/torbrowser/4.5a4
+ download_url: https://www.torproject.org/dist/torbrowser/4.5a5
incremental_from:
- - 4.5a3
+ - 4.5a4
migrate_archs:
osx32: osx64
osx32:
1
0

27 Mar '15
commit 0a1a75b3c3a8142e285a0c2dc38a0746c65b67f9
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Thu Mar 26 19:49:39 2015 -0700
Bump Tor Launcher to 0.2.7.3.
---
Bundle-Data/Docs/ChangeLog.txt | 2 ++
gitian/versions.alpha | 2 +-
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/Bundle-Data/Docs/ChangeLog.txt b/Bundle-Data/Docs/ChangeLog.txt
index edbd748..f357766 100644
--- a/Bundle-Data/Docs/ChangeLog.txt
+++ b/Bundle-Data/Docs/ChangeLog.txt
@@ -5,6 +5,8 @@ Tor Browser 4.5a5 -- Mar 31 2015
* Update Tor to 0.2.6.6
* Update NoScript to 2.6.9.19
* Update meek to 0.16
+ * Update Tor Launcher to 0.2.7.3
+ * Bug 13983: Directory search path fix for Tor Messanger+TorBirdy
* Update Torbutton to 1.9.1.0
* Bug 9387: "Security Slider 1.0"
* Include descriptions and tooltip hints for security levels
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index 12c16cc..5c9ffb9 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -10,7 +10,7 @@ TORBROWSER_UPDATE_CHANNEL=alpha
TORBROWSER_TAG=tor-browser-${FIREFOX_VERSION}-4.5-1-build1
TOR_TAG=tor-0.2.6.6
-TORLAUNCHER_TAG=0.2.7.2
+TORLAUNCHER_TAG=0.2.7.3
TORBUTTON_TAG=1.9.1.0
HTTPSE_TAG=3.5.3 # XXX: HTTPSE_VER is used instead, pending #11630
NSIS_TAG=v0.3
1
0

[tor-launcher/master] Update translations and bump version for 0.2.7.3.
by mikeperry@torproject.org 27 Mar '15
by mikeperry@torproject.org 27 Mar '15
27 Mar '15
commit 7382cc7c462e39afa0ec320c63e10ab88db01630
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Thu Mar 26 19:45:24 2015 -0700
Update translations and bump version for 0.2.7.3.
---
src/chrome/locale/ar/network-settings.dtd | 6 +-
src/chrome/locale/bg/network-settings.dtd | 2 +-
src/chrome/locale/bn/network-settings.dtd | 6 +-
src/chrome/locale/bn/torlauncher.properties | 28 +++----
src/chrome/locale/ca/network-settings.dtd | 8 +-
src/chrome/locale/da/network-settings.dtd | 8 +-
src/chrome/locale/da/torlauncher.properties | 4 +-
src/chrome/locale/de/progress.dtd | 4 +-
src/chrome/locale/es/network-settings.dtd | 30 +++----
src/chrome/locale/es/torlauncher.properties | 10 +--
src/chrome/locale/fi/network-settings.dtd | 20 ++---
src/chrome/locale/fi/progress.dtd | 4 +-
src/chrome/locale/fi/torlauncher.properties | 20 ++---
src/chrome/locale/fr/network-settings.dtd | 8 +-
src/chrome/locale/fr/progress.dtd | 2 +-
src/chrome/locale/hi/progress.dtd | 8 +-
src/chrome/locale/hi/torlauncher.properties | 2 +-
src/chrome/locale/hu/network-settings.dtd | 8 +-
src/chrome/locale/id/network-settings.dtd | 8 +-
src/chrome/locale/it/network-settings.dtd | 6 +-
src/chrome/locale/lo/torlauncher.properties | 2 +-
src/chrome/locale/nb/network-settings.dtd | 8 +-
src/chrome/locale/pt/network-settings.dtd | 8 +-
src/chrome/locale/pt/torlauncher.properties | 38 ++++-----
src/chrome/locale/sq/network-settings.dtd | 80 +++++++++---------
src/chrome/locale/sq/progress.dtd | 8 +-
src/chrome/locale/sq/torlauncher.properties | 116 +++++++++++++-------------
src/chrome/locale/sv/network-settings.dtd | 6 +-
src/chrome/locale/uk/network-settings.dtd | 8 +-
src/chrome/locale/zh-CN/network-settings.dtd | 8 +-
src/chrome/locale/zh-TW/network-settings.dtd | 8 +-
src/install.rdf | 2 +-
32 files changed, 242 insertions(+), 242 deletions(-)
diff --git a/src/chrome/locale/ar/network-settings.dtd b/src/chrome/locale/ar/network-settings.dtd
index a4d92b1..81dc4e2 100644
--- a/src/chrome/locale/ar/network-settings.dtd
+++ b/src/chrome/locale/ar/network-settings.dtd
@@ -15,9 +15,9 @@
<!ENTITY torSettings.connectPrompt3 "سيصلح هذا في معظم الحالات.">
<!ENTITY torSettings.connect "اتصل">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "هل يحتاج هذا الكمبيوتر لاستخدام وكيل محلي للاتصال بالإنترنت؟">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
+<!ENTITY torSettings.proxyHelp "إذا كنت غير متأكد من كيفية الإجابة على هذا السؤال، أنظر الى إعدادات الإنترنت في متصفح آخر لمعرفة ما إذا تمت تهيئتة لاستخدام وكيل محلي.">
<!ENTITY torSettings.enterProxy "أدخل إعدادات البروكسي.">
<!ENTITY torSettings.bridgeQuestion "هل يقوم مقدم خدمة الإنترنت (ISP) الذي تتعامل معه بحجب الاتصالات بشبكة Tor أو مراقبتها بطريقة أخرى؟">
<!ENTITY torSettings.bridgeHelp "إذا لم تكن متأكدا من إجابة هذا السؤال، قم باختيار لا.   إذا قمت باختيار نعم، فسيطلب منك تكوين جسور Tor والتي هي منافذ ترحيل غير مدرجة تصعب عملية حظر الاتصالات بشبكة Tor.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "اختياري">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "يحتاج هذا الكمبيوتر لاستخدام وكيل محلي للاتصال بالإنترنت">
<!ENTITY torsettings.useProxy.type "نوع البروكسي:">
<!ENTITY torsettings.useProxy.address "العنوان:">
<!ENTITY torsettings.useProxy.address.placeholder "عنوان الإنترنت IP أو اسم المضيف">
diff --git a/src/chrome/locale/bg/network-settings.dtd b/src/chrome/locale/bg/network-settings.dtd
index 56f17d4..3813505 100644
--- a/src/chrome/locale/bg/network-settings.dtd
+++ b/src/chrome/locale/bg/network-settings.dtd
@@ -15,7 +15,7 @@
<!ENTITY torSettings.connectPrompt3 "Това ще работи при повечето ситуации.">
<!ENTITY torSettings.connect "Свържи се">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Този компютър използва ли локално прокси за достъп до Интернет?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
<!ENTITY torSettings.enterProxy "Въведете настройките за прокси.">
diff --git a/src/chrome/locale/bn/network-settings.dtd b/src/chrome/locale/bn/network-settings.dtd
index e8ccb67..5cb5821 100644
--- a/src/chrome/locale/bn/network-settings.dtd
+++ b/src/chrome/locale/bn/network-settings.dtd
@@ -4,8 +4,8 @@
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
-<!ENTITY torSettings.yes "Yes">
-<!ENTITY torSettings.no "No">
+<!ENTITY torSettings.yes "হ্যা">
+<!ENTITY torSettings.no "না">
<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
@@ -13,7 +13,7 @@
<!ENTITY torSettings.configure "Configure">
<!ENTITY torSettings.connectPrompt2 "I would like to connect directly to the Tor network.">
<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
-<!ENTITY torSettings.connect "Connect">
+<!ENTITY torSettings.connect "সংযোগ করুন">
<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
diff --git a/src/chrome/locale/bn/torlauncher.properties b/src/chrome/locale/bn/torlauncher.properties
index c745e20..fd9face 100644
--- a/src/chrome/locale/bn/torlauncher.properties
+++ b/src/chrome/locale/bn/torlauncher.properties
@@ -6,14 +6,14 @@ torlauncher.error_title=Tor Launcher
torlauncher.tor_exited=Tor unexpectedly exited. This might be due to a bug in Tor itself, another program on your system, or faulty hardware. Until you restart Tor, the Tor Browser will not able to reach any websites. If the problem persists, please send a copy of your Tor Log to the support team.
torlauncher.tor_exited2=Restarting Tor will not close your browser tabs.
torlauncher.tor_controlconn_failed=Could not connect to Tor control port.
-torlauncher.tor_failed_to_start=Tor failed to start.
+torlauncher.tor_failed_to_start=টর শুরু হতে ব্যর্থ হয়েছে
torlauncher.tor_control_failed=Failed to take control of Tor.
-torlauncher.tor_bootstrap_failed=Tor failed to establish a Tor network connection.
-torlauncher.tor_bootstrap_failed_details=%1$S failed (%2$S).
+torlauncher.tor_bootstrap_failed=টর নেটওয়ার্ক সংযোগ সৃষ্টি করতে হতে ব্যর্থ হয়েছে।
+torlauncher.tor_bootstrap_failed_details=%1$S ব্যর্থ হয়েছে (%2$S).
-torlauncher.unable_to_start_tor=Unable to start Tor.\n\n%S
-torlauncher.tor_missing=The Tor executable is missing.
-torlauncher.torrc_missing=The torrc file is missing.
+torlauncher.unable_to_start_tor=টর শুরু করা সম্ভব নয়।\n\n%S
+torlauncher.tor_missing= Tor executable নথিটি পাওয়া যাচ্ছে না।
+torlauncher.torrc_missing=torrc নথিটি পাওয়া যাচ্ছে না।
torlauncher.datadir_missing=The Tor data directory does not exist.
torlauncher.password_hash_missing=Failed to get hashed password.
@@ -27,15 +27,15 @@ torlauncher.error_bridges_missing=You must specify one or more bridges.
torlauncher.error_default_bridges_type_missing=You must select a transport type for the provided bridges.
torlauncher.error_bridge_bad_default_type=No provided bridges that have the transport type %S are available. Please adjust your settings.
-torlauncher.recommended_bridge=(recommended)
+torlauncher.recommended_bridge=( সুপারিশকৃত )
-torlauncher.connect=Connect
+torlauncher.connect=সংযোগ করুন
torlauncher.restart_tor=Restart Tor
-torlauncher.quit=Quit
-torlauncher.quit_win=Exit
-torlauncher.done=Done
+torlauncher.quit=বেরিয়ে যান
+torlauncher.quit_win=বেরিয়ে যান
+torlauncher.done=সমাপ্ত
-torlauncher.forAssistance=For assistance, contact %S
+torlauncher.forAssistance=সাহায্যের জন্য , যোগাযোগ করুনঃ %S
torlauncher.copiedNLogMessages=Copy complete. %S Tor log messages are ready to be pasted into a text editor or an email message.
@@ -48,9 +48,9 @@ torlauncher.bootstrapStatus.requesting_descriptors=Requesting relay information
torlauncher.bootstrapStatus.loading_descriptors=Loading relay information
torlauncher.bootstrapStatus.conn_or=টর নেটওয়ার্কের সাথে সংযুক্ত হচ্ছে
torlauncher.bootstrapStatus.handshake_or=Establishing a Tor circuit
-torlauncher.bootstrapStatus.done=Connected to the Tor network!
+torlauncher.bootstrapStatus.done=টর নেটওয়ার্কের সাথে সংযুক্ত হয়েছে!
-torlauncher.bootstrapWarning.done=done
+torlauncher.bootstrapWarning.done=সম্পূর্ণ
torlauncher.bootstrapWarning.connectrefused=connection refused
torlauncher.bootstrapWarning.misc=miscellaneous
torlauncher.bootstrapWarning.resourcelimit=insufficient resources
diff --git a/src/chrome/locale/ca/network-settings.dtd b/src/chrome/locale/ca/network-settings.dtd
index 15025b4..a8996f7 100644
--- a/src/chrome/locale/ca/network-settings.dtd
+++ b/src/chrome/locale/ca/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Quina de les següuens descriula teva situació?">
<!ENTITY torSettings.configurePrompt1 "La connexió a internet d'aquest ordinador està censurada o configurada amb un proxy. ">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "He de configurar preferències de ponts o de proxy local.">
<!ENTITY torSettings.configure "Configura">
<!ENTITY torSettings.connectPrompt2 "M'agradaria conectar-me directament a la xarxa Tor.">
<!ENTITY torSettings.connectPrompt3 "Això funciona en la majoria dels casos.">
<!ENTITY torSettings.connect "Conectar">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Aquest ordinador ha de fer servir un proxy local per accedir a internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
+<!ENTITY torSettings.proxyHelp "Si no esteu segurs de com respondre aquesta pregunta, mireu les preferències d'internet d'un altre navegador per veure si està configurat per usar un proxy local. ">
<!ENTITY torSettings.enterProxy "Introdueix les opcions del proxy.">
<!ENTITY torSettings.bridgeQuestion "El vostre proveïdor d'Internet (ISP) bloqueja o censura les connexions a la Xarxa Tor?">
<!ENTITY torSettings.bridgeHelp "Si no esteu segurs de com respondre a aquesta pregunta, escolliu No.  Si escolliu Sí, se us demanarà que configureu Ponts Tor, que són relés no llistats que fan més dificil de bloquejar les connexions a la Xarxa Tor">
@@ -31,7 +31,7 @@
<!ENTITY torsettings.optional "Opcional
">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "Aquest ordinador ha de fer servir un proxy local per accedir a internet. ">
<!ENTITY torsettings.useProxy.type "Tipus de Proxy:">
<!ENTITY torsettings.useProxy.address "Adreça:">
<!ENTITY torsettings.useProxy.address.placeholder "Direcció IP o nom del host">
diff --git a/src/chrome/locale/da/network-settings.dtd b/src/chrome/locale/da/network-settings.dtd
index b7ca021..4eff2c2 100644
--- a/src/chrome/locale/da/network-settings.dtd
+++ b/src/chrome/locale/da/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Hvilke af de følgende beskriver bedst din situation?">
<!ENTITY torSettings.configurePrompt1 "Denne computers internetforbindelse er censureret eller er etableret gennem en proxy.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "Jeg har brug for at konfigurere bro eller lokale proxy indstillinger.">
<!ENTITY torSettings.configure "Indstil">
<!ENTITY torSettings.connectPrompt2 "Jeg vil forbinde direkte til Tor netværket.">
<!ENTITY torSettings.connectPrompt3 "Dette vil virker i de fleste situationer">
<!ENTITY torSettings.connect "Tilslut">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Behøver denne computer bruge en lokal proxy for at tilgå Internettet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
+<!ENTITY torSettings.proxyHelp "Hvis du ikke er sikker på svaret på dette spørgsmål, så kig på Internetindstillingerne i en anden browser for at se om den er konfigureret til at bruge en lokal proxy. ">
<!ENTITY torSettings.enterProxy "Indtast proxy-indstillinger.">
<!ENTITY torSettings.bridgeQuestion "Blokerer eller censurerer din internetudbyder (ISP) forbindelser til Tor netværket?">
<!ENTITY torSettings.bridgeHelp "Hvis du er usikker på svaret til dette spørgsmål, vælg No.  Hvis du vælger Ja, vil du blive bedt om at konfigurere Tor Broer, der er ulistede relays, som gør det sværere at blokere forbindelser til Tor Netværket.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Valgfri">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "Denne computer skal bruge en lokal proxy for at tilgå Internettet">
<!ENTITY torsettings.useProxy.type "Proxy type:">
<!ENTITY torsettings.useProxy.address "Adresse:">
<!ENTITY torsettings.useProxy.address.placeholder "IP adresse eller værtsnavn">
diff --git a/src/chrome/locale/da/torlauncher.properties b/src/chrome/locale/da/torlauncher.properties
index 8d2d084..2c7c9ca 100644
--- a/src/chrome/locale/da/torlauncher.properties
+++ b/src/chrome/locale/da/torlauncher.properties
@@ -4,7 +4,7 @@
torlauncher.error_title=Tor starter
torlauncher.tor_exited=Tor lukkede uventet. Dette kan skyldes en fejl i selve Tor, et andet program i dit system eller en hardware-fejl. Tor-browseren vil ikke være i stand til at forbinde til noget som helst website før du genstarter Tor. Send en kopi af din Tor-log til support-teamet hvis problemet fortsætter.
-torlauncher.tor_exited2=Fanebladene i din browser vil ikke blive lukket af at du genstarter Tor.
+torlauncher.tor_exited2=Fanebladene i din browser vil ikke blive lukket ved af at du genstarter Tor.
torlauncher.tor_controlconn_failed=Kunne ikke forbinde til Tor kontrol-porten.
torlauncher.tor_failed_to_start=Tor kunne ikke starte.
torlauncher.tor_control_failed=Det lykkedes ikke at tage kontrol over Tor.
@@ -57,5 +57,5 @@ torlauncher.bootstrapWarning.resourcelimit=utilstrækkelige ressourcer
torlauncher.bootstrapWarning.identity=identitet matcher ikke
torlauncher.bootstrapWarning.timeout=forbindelse timeout
torlauncher.bootstrapWarning.noroute=ingen rute til vært
-torlauncher.bootstrapWarning.ioerror=læs/skriv fejl
+torlauncher.bootstrapWarning.ioerror=læse/skrive fejl
torlauncher.bootstrapWarning.pt_missing=mangler udskiftelig transport
diff --git a/src/chrome/locale/de/progress.dtd b/src/chrome/locale/de/progress.dtd
index 3386f46..9433d6f 100644
--- a/src/chrome/locale/de/progress.dtd
+++ b/src/chrome/locale/de/progress.dtd
@@ -1,4 +1,4 @@
<!ENTITY torprogress.dialog.title "Tor-Status">
<!ENTITY torprogress.openSettings "Einstellungen öffnen">
-<!ENTITY torprogress.heading "Mit dem Tor-Netzwerk wird verbinden">
-<!ENTITY torprogress.pleaseWait "Bitte warten, während die Verbindung zum Tor-Netzwerk hergestellt wird.">
+<!ENTITY torprogress.heading "Verbindung mit dem Tor-Netzwerk wird hergestellt">
+<!ENTITY torprogress.pleaseWait "Bitte warten Sie, während eine Verbindung zum Tor-Netzwerk hergestellt wird">
diff --git a/src/chrome/locale/es/network-settings.dtd b/src/chrome/locale/es/network-settings.dtd
index 246fe19..6aa47b2 100644
--- a/src/chrome/locale/es/network-settings.dtd
+++ b/src/chrome/locale/es/network-settings.dtd
@@ -1,4 +1,4 @@
-<!ENTITY torsettings.dialog.title "Configuración de red de Tor">
+<!ENTITY torsettings.dialog.title "Configuración de la red Tor">
<!-- For "first run" wizard: -->
@@ -7,11 +7,11 @@
<!ENTITY torSettings.yes "Si">
<!ENTITY torSettings.no "No">
-<!ENTITY torSettings.firstQuestion "¿Cuál de las siguientes describe mejor su situación?">
-<!ENTITY torSettings.configurePrompt1 "La conexión a Internet de este equipo está censurada o proxyficada.">
-<!ENTITY torSettings.configurePrompt2 "Necesito ajustar la configuración de repetidor puente (bridge) o de proxy local.">
+<!ENTITY torSettings.firstQuestion "¿Cuál de las siguientes opciones describe mejor su situación?">
+<!ENTITY torSettings.configurePrompt1 "La conexión a Internet de este equipo está censurada o proxificada.">
+<!ENTITY torSettings.configurePrompt2 "Necesito ajustar la configuración del repetidor puente(bridge) o del proxy local.">
<!ENTITY torSettings.configure "Configurar">
-<!ENTITY torSettings.connectPrompt2 "Me gustaría conectar directamente a la red Tor.">
+<!ENTITY torSettings.connectPrompt2 "Me gustaría conectarme directamente a la red Tor.">
<!ENTITY torSettings.connectPrompt3 "Esto funcionará en la mayoría de las situaciones.">
<!ENTITY torSettings.connect "Conectar">
@@ -20,8 +20,8 @@
<!ENTITY torSettings.proxyHelp "Si no está seguro de cómo responder a esta pregunta, mire la configuración de Internet en otro navegador para ver si está configurado para utilizar un proxy (interpuesto) local.">
<!ENTITY torSettings.enterProxy "Introduzca los ajustes del proxy.">
<!ENTITY torSettings.bridgeQuestion "Su proveedor de servicios de Internet (ISP) bloquea o censura de alguna forma las conexiones hacia la red Tor?">
-<!ENTITY torSettings.bridgeHelp "Si no está seguro como responder a esta pregunta, elija No.  Si usted elige Sí, se le pedirá configurar puentes Tor, los cuales son repetidores no listados que hacen más difícil el bloqueo de conexiones hacia la red Tor.">
-<!ENTITY torSettings.bridgeSettingsPrompt "Puede usar el juego de repetidores puente ('bridge') proporcionado, o puede obtener e introducir un juego de puentes personalizado.">
+<!ENTITY torSettings.bridgeHelp "Si no está seguro de como responder a esta pregunta, elija No.  Si usted elige Sí, se le pedirá configurar puentes Tor, los cuales son repetidores no listados que hacen más difícil el bloqueo de las conexiones hacia la red Tor.">
+<!ENTITY torSettings.bridgeSettingsPrompt "Puede utilizar el conjunto de repetidores puente (bridge) proporcionado, o puede obtener e introducir un juego de puentes personalizado.">
<!-- Other: -->
@@ -40,24 +40,24 @@
<!ENTITY torsettings.useProxy.type.socks4 "SOCKS 4">
<!ENTITY torsettings.useProxy.type.socks5 "SOCKS 5">
<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
-<!ENTITY torsettings.firewall.checkbox "Esta computadora va a través de un cortafuegos ('firewall') que sólo permite conexiones a ciertos puertos">
+<!ENTITY torsettings.firewall.checkbox "Esta computadora va a través de un cortafuegos(firewall) que sólo permite conexiones a ciertos puertos">
<!ENTITY torsettings.firewall.allowedPorts "Puertos permitidos:">
<!ENTITY torsettings.useBridges.checkbox "Mi Proveedor de Servicios de Internet (ISP) bloquea las conexiones a la red Tor">
<!ENTITY torsettings.useBridges.default "Conectar con los puentes proporcionados">
<!ENTITY torsettings.useBridges.type "Tipo de transporte:">
<!ENTITY torsettings.useBridges.custom "Introducir puentes personalizados">
-<!ENTITY torsettings.useBridges.label "Introduzca uno o más repetidores puente ('bridge', uno por línea).">
+<!ENTITY torsettings.useBridges.label "Introduzca uno o más repetidores puente(uno por línea).">
<!ENTITY torsettings.useBridges.placeholder "introduzca dirección:puerto">
-<!ENTITY torsettings.copyLog "Copiar el registro de mensajes ('log') de Tor al portapapeles">
+<!ENTITY torsettings.copyLog "Copiar el registro de mensajes(log) de Tor al portapapeles">
<!ENTITY torsettings.bridgeHelpTitle "Ayuda de repetidores puente ('bridge relays')">
-<!ENTITY torsettings.bridgeHelp1 "Si no puede conectar a la red Tor, podría ser que su proveedor de servicios de Internet (ISP) u otra agencia, esté bloqueando Tor.  A menudo, puede evitar este problema usando puentes ('bridges') de Tor, que son repetidores ('relays') de salida de la red Tor que no son publicitados, y es más difícil que sean bloqueados.">
-<!ENTITY torsettings.bridgeHelp1B "Puede usar el juego de direcciones de repetidores puente ('bridge') preconfigurado proporcionado, o puede obtener un juego de direcciones personalizado usando uno de estos tres métodos:">
+<!ENTITY torsettings.bridgeHelp1 "Si no puede conectarse a la red Tor, podría ser que su proveedor de servicios de Internet (ISP) u otra agencia, esté bloqueando Tor.  A menudo, puede evitar este problema usando puentes ('bridges') de Tor, que son repetidores ('relays') de salida de la red Tor que no son públicos, y es más difícil que sean bloqueados.">
+<!ENTITY torsettings.bridgeHelp1B "Puede usar el conjunto de direcciones de repetidores puente ('bridge') preconfigurado proporcionado, o puede obtener un conjunto de direcciones personalizado usando uno de estos tres métodos:">
<!ENTITY torsettings.bridgeHelp2Heading "Mediante la web">
<!ENTITY torsettings.bridgeHelp2 "Use un navegador web para visitar https://bridges.torproject.org">
<!ENTITY torsettings.bridgeHelp3Heading "Mediante el correo electrónico automático">
-<!ENTITY torsettings.bridgeHelp3.emailDesc "Envíe un correo electrónico a bridges(a)torproject.org únicamente con la línea 'get bridges' en el cuerpo del mensaje.  Sin embargo, para ponerle más difícil a un atacante adquirir muchas direcciones de puentes, tiene que enviar esta petición desde uno de los siguientes proveedores de correo electrónico (listados en orden de preferencia):">
+<!ENTITY torsettings.bridgeHelp3.emailDesc "Envíe un correo electrónico a bridges(a)torproject.org únicamente con la línea 'get bridges' en el cuerpo del mensaje.  Sin embargo, para ponerle más difícil a un atacante el poder adquirir muchas direcciones de puentes, tiene que enviar esta petición desde uno de los siguientes proveedores de correo electrónico (listados en orden de preferencia):">
<!ENTITY torsettings.bridgeHelp3.emailList "https://www.riseup.net, https://mail.google.com o https://mail.yahoo.com">
-<!ENTITY torsettings.bridgeHelp4Heading "Mediante el gabinete de ayuda">
+<!ENTITY torsettings.bridgeHelp4Heading "Mediante el soporte de usuario">
<!ENTITY torsettings.bridgeHelp4 "Como último recurso, puede pedir direcciones de repetidores puente enviando un cortés mensaje de correo a help(a)rt.torproject.org . 
-Por favor observe que es una persona la que tendrá que responder a cada petición.">
+Por favor tenga en cuenta que es una persona la que tendrá que responder a cada petición.">
diff --git a/src/chrome/locale/es/torlauncher.properties b/src/chrome/locale/es/torlauncher.properties
index 6f1c18a..42780e5 100644
--- a/src/chrome/locale/es/torlauncher.properties
+++ b/src/chrome/locale/es/torlauncher.properties
@@ -3,8 +3,8 @@
torlauncher.error_title=Arranque de Tor
-torlauncher.tor_exited=Tor se cerró inesperadamente. Esto podría deberse a un fallo con el propio Tor, con otro programa de su sistema, o a hardware defectuoso. Hasta que reinicie Tor, el Navegador Tor no podrá alcanzar ningún sitio web. Si el problema persiste, por favor envíe una copia de su Registro de Tor (log) al equipo de soporte.
-torlauncher.tor_exited2=Al reiniciar Tor no cerrará las pestañas de su navegador.
+torlauncher.tor_exited=Tor se cerró inesperadamente. Esto podría deberse a un fallo con el propio Tor, con otro programa de su sistema, o por hardware defectuoso. Hasta que reinicie Tor, el Navegador Tor no podrá abrir ningún sitio web. Si el problema persiste, por favor envíe una copia de su Registro de Tor (log) al equipo de soporte.
+torlauncher.tor_exited2=Al reiniciar Tor no se cerrarán las pestañas de su navegador.
torlauncher.tor_controlconn_failed=No se pudo conectar al puerto de control de Tor
torlauncher.tor_failed_to_start=Tor no pudo iniciarse.
torlauncher.tor_control_failed=Fallo al tomar control de Tor.
@@ -21,7 +21,7 @@ torlauncher.failed_to_get_settings=No se pudo recuperar las preferencias de Tor.
torlauncher.failed_to_save_settings=No fue posible guardar los ajustes de Tor.\n\n%S
torlauncher.ensure_tor_is_running=Por favor, asegúrese de que Tor se está ejecutando.
-torlauncher.error_proxy_addr_missing=Debe especificar tanto una dirección IP o nombre de máquina ('hostname') como un número de puerto para configurar Tor para que utilice un 'proxy' para acceder a la Internet.
+torlauncher.error_proxy_addr_missing=Tiene que especificar tanto una dirección IP o nombre de máquina ('hostname') como un número de puerto para configurar Tor para que utilice un 'proxy' para acceder a la Internet.
torlauncher.error_proxy_type_missing=Debe seleccionar el tipo de 'proxy'.
torlauncher.error_bridges_missing=Debe especificar uno o más puentes ('bridges').
torlauncher.error_default_bridges_type_missing=Debe seleccionar un tipo de transporte para los repetidores puente ('bridges') proporcionados.
@@ -37,7 +37,7 @@ torlauncher.done=Listo
torlauncher.forAssistance=Para obtener ayuda, contacte con %S
-torlauncher.copiedNLogMessages=Copia completada. %S mensajes de registro ('log') de Tor están listos para ser pegados en un editor de texto o un mensaje de correo electrónico.
+torlauncher.copiedNLogMessages=Copia completada. %S mensajes de registro ('log') de Tor están listos para ser pegados en un editor de texto o en un mensaje de correo electrónico.
torlauncher.bootstrapStatus.conn_dir=Conectando a un repositorio ('Directory') de repetidores ('relays')
torlauncher.bootstrapStatus.handshake_dir=Estableciendo una conexión cifrada con el repositorio de repetidores
@@ -58,4 +58,4 @@ torlauncher.bootstrapWarning.identity=las identidades no coinciden
torlauncher.bootstrapWarning.timeout=tiempo de espera de conexión agotado
torlauncher.bootstrapWarning.noroute=no hay ruta hacia el servidor ('host')
torlauncher.bootstrapWarning.ioerror=error de lectura/escritura
-torlauncher.bootstrapWarning.pt_missing=transporte enchufable desaparecido
+torlauncher.bootstrapWarning.pt_missing=transporte plugable no encontrado
diff --git a/src/chrome/locale/fi/network-settings.dtd b/src/chrome/locale/fi/network-settings.dtd
index 92d2dfe..3b70e7f 100644
--- a/src/chrome/locale/fi/network-settings.dtd
+++ b/src/chrome/locale/fi/network-settings.dtd
@@ -2,35 +2,35 @@
<!-- For "first run" wizard: -->
-<!ENTITY torsettings.prompt "Ennen kuin voit yhdistää Tor verkkoon, sinun pitää antaa tietoa tietokoneesi internet yhteydestä.">
+<!ENTITY torsettings.prompt "Ennen kuin voit yhdistää Tor-verkkoon, sinun on annettava tietoja tietokoneesi internet-yhteydestä.">
<!ENTITY torSettings.yes "Kyllä">
<!ENTITY torSettings.no "Ei">
<!ENTITY torSettings.firstQuestion "Mikä seuraavista kuvailee parhaiten tilannettasi?">
<!ENTITY torSettings.configurePrompt1 "Tämän tietokoneen internet-yhteys on sensuroitu tai kulkee välityspalvelimen kautta.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "Minun on asetettava sillan tai paikallisen välityspalvelimen asetukset">
<!ENTITY torSettings.configure "Määritä">
<!ENTITY torSettings.connectPrompt2 "Haluan yhdistää suoraan Tor-verkkoon.">
<!ENTITY torSettings.connectPrompt3 "Tämä toimii useimmissa tilanteissa.">
<!ENTITY torSettings.connect "Yhdistä">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Tarvitseeko tämän tietokoneen käyttää paikallista välityspalvelinta Internet-pääsyyn?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
+<!ENTITY torSettings.proxyHelp "Jos et ole varma, kuinka vastata tähän kysymykseen, katso toisen selaimen Internet-asetuksista, onko se asetettu käyttämään paikallista välityspalvelinta.">
<!ENTITY torSettings.enterProxy "Kirjoita välityspalvelinasetukset.">
<!ENTITY torSettings.bridgeQuestion "Sensuroiko tai estääkö sinun operaattorisi (ISP) yhteydet Tor-verkkoon?">
-<!ENTITY torSettings.bridgeHelp "Ellet ole varma kuinka vastata tähän kysymykseen, valitse No.  Jos valitset Kyllä, sinua pyydetään määrittämään Torin Sillat, jotka ovat listaamattomia releitä, jotta yhteyksiä olisi vaikeampi estää Torin verkkoon yhdistettäessä.">
+<!ENTITY torSettings.bridgeHelp "Ellet ole varma kuinka vastata tähän kysymykseen, valitse Ei.  Jos valitset Kyllä, sinua pyydetään määrittämään Tor-sillat, jotka ovat listaamattomia välityspalvelimia, jotta yhteyksiä olisi vaikeampi estää Tor-verkkoon yhdistettäessä.">
<!ENTITY torSettings.bridgeSettingsPrompt "Voit käyttää tarjottua siltajoukkoa tai voit hankkia ja kirjoittaa oman siltojen joukon.">
<!-- Other: -->
-<!ENTITY torsettings.startingTor "Odotetaan Torin käynnistymistä...">
+<!ENTITY torsettings.startingTor "Odotetaan Tor-sovelluksen käynnistymistä...">
<!ENTITY torsettings.restartTor "Käynnistä Tor uudelleen">
<!ENTITY torsettings.optional "Vaihtoehtoinen">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "Tämä tietokone tarvitsee paikallisen välityspalvelimen Internet-pääsyyn">
<!ENTITY torsettings.useProxy.type "Välityspalvelintyyppi:">
<!ENTITY torsettings.useProxy.address "Osoite:">
<!ENTITY torsettings.useProxy.address.placeholder "IP-osoite tai palvelinnimi">
@@ -46,12 +46,12 @@
<!ENTITY torsettings.useBridges.default "Yhdistä tarjotuilla silloilla">
<!ENTITY torsettings.useBridges.type "Siirtotyyppi:">
<!ENTITY torsettings.useBridges.custom "Kirjoita omat sillat">
-<!ENTITY torsettings.useBridges.label "Kirjoita yksi tai useampi siltarele (yksi per rivi).">
+<!ENTITY torsettings.useBridges.label "Kirjoita yksi tai useampi siltavälityspalvelin (yksi per rivi).">
<!ENTITY torsettings.useBridges.placeholder "kirjoita osoite:portti">
<!ENTITY torsettings.copyLog "Kopioi Tor-loki leikepöydälle">
-<!ENTITY torsettings.bridgeHelpTitle "Siltareleopaste">
-<!ENTITY torsettings.bridgeHelp1 "Jos et pysty yhdistämään Tor-verkkoon, syy voi olla, että Internet palveluntarjoajasi (ISP) tai muu taho estää Torin.  Usein voit kiertää tämän ongelman käyttämällä Tor-siltoja, jotka ovat listaamattomia releitä, joita on vaikeampi estää.">
+<!ENTITY torsettings.bridgeHelpTitle "Siltavälityspalvelinopaste">
+<!ENTITY torsettings.bridgeHelp1 "Jos et pysty yhdistämään Tor-verkkoon, syy voi olla, että Internet palveluntarjoajasi (ISP) tai muu taho estää Tor-sovelluksen.  Usein voit kiertää tämän ongelman käyttämällä Tor-siltoja, jotka ovat listaamattomia välityspalvelimia, joita on vaikeampi estää.">
<!ENTITY torsettings.bridgeHelp1B "Voit käyttää esiasetettuja, tarjottuja siltaosoitejoukkoja tai voit hankkia oman osoitejoukon käyttämällä yhtä näistä kolmesta menetelmästä:">
<!ENTITY torsettings.bridgeHelp2Heading "Verkon yli">
<!ENTITY torsettings.bridgeHelp2 "Käytä internet-selainta vieraillaksesi osoitteessa: https://bridges.torproject.org">
diff --git a/src/chrome/locale/fi/progress.dtd b/src/chrome/locale/fi/progress.dtd
index 957640e..1ddad9b 100644
--- a/src/chrome/locale/fi/progress.dtd
+++ b/src/chrome/locale/fi/progress.dtd
@@ -1,4 +1,4 @@
-<!ENTITY torprogress.dialog.title "Torin tila">
-<!ENTITY torprogress.openSettings "Avaa Asetukset">
+<!ENTITY torprogress.dialog.title "Tor-tila">
+<!ENTITY torprogress.openSettings "Avaa asetukset">
<!ENTITY torprogress.heading "Yhdistetään Tor-verkkoon">
<!ENTITY torprogress.pleaseWait "Odota hetki yhteyden muodostamista Tor-verkkoon.">
diff --git a/src/chrome/locale/fi/torlauncher.properties b/src/chrome/locale/fi/torlauncher.properties
index b5bb23c..533f596 100644
--- a/src/chrome/locale/fi/torlauncher.properties
+++ b/src/chrome/locale/fi/torlauncher.properties
@@ -3,15 +3,15 @@
torlauncher.error_title=Tor-käynnistin
-torlauncher.tor_exited=Tor sammui odottamatta. Tämä voi olla virhe Torissa itsessään, tai toisen ohjelman järjestelmässäsi aiheuttama, tai laitteistovirhe. Tor ei kykene tavoittamaan yhtään verkkosivua, jos et käynnistä Toria uudelleen. Jos tämä ongelma jatkuu, lähetä kopio Torin lokitiedostosta tukiryhmälle.
-torlauncher.tor_exited2=Torin käynnistäminen uudestaan ei sulje selaimesi välilehtiä.
-torlauncher.tor_controlconn_failed=Yhteydenotto Torin hallintaporttiin epäonnistui.
-torlauncher.tor_failed_to_start=Torin käynnistys epäonnistui.
-torlauncher.tor_control_failed=Torin haltuun ottaminen epäonnistui.
+torlauncher.tor_exited=Tor sammui odottamatta. Tämä voi olla virhe Tor-sovelluksessa itsessään, tai toisen ohjelman järjestelmässäsi aiheuttama, tai laitteistovirhe. Tor ei kykene tavoittamaan yhtään verkkosivua, jos et käynnistä Tor-sovellusta uudelleen. Jos tämä ongelma jatkuu, lähetä kopio Tor-lokitiedostosta tukiryhmälle.
+torlauncher.tor_exited2=Tor-sovelluksen käynnistäminen uudestaan ei sulje selaimesi välilehtiä.
+torlauncher.tor_controlconn_failed=Yhteydenotto Tor-sovelluksen hallintaporttiin epäonnistui.
+torlauncher.tor_failed_to_start=Tor-sovelluksen käynnistys epäonnistui.
+torlauncher.tor_control_failed=Tor-sovelluksen haltuun ottaminen epäonnistui.
torlauncher.tor_bootstrap_failed=Yhteyden muodostaminen Tor-verkkoon epäonnistui.
torlauncher.tor_bootstrap_failed_details=%1$S epäonnistui (%2$S).
-torlauncher.unable_to_start_tor=Torin käynnistys epäonnistui.\n\n%S
+torlauncher.unable_to_start_tor=Tor-sovelluksen käynnistys epäonnistui.\n\n%S
torlauncher.tor_missing=Suoritettava Tor-tiedosto puuttuu.
torlauncher.torrc_missing=Tiedosto torrc puuttuu.
torlauncher.datadir_missing=Tor-tietohakemistoa ei ole.
@@ -21,7 +21,7 @@ torlauncher.failed_to_get_settings=Tor-asetusten noutaminen epäonnistui.\n\n%S
torlauncher.failed_to_save_settings=Tor-asetusten tallentaminen epäonnistui.\n\n%S
torlauncher.ensure_tor_is_running=Varmista, että Tor on käynnissä.
-torlauncher.error_proxy_addr_missing=Sinun on määriteltävä sekä IP-osoite että porttinumero tai sekä verkkonimi että porttinumero, jotta Tor voi yhdistää välityspalvelimen kautta Internetiin.
+torlauncher.error_proxy_addr_missing=Sinun on määriteltävä sekä IP-osoite että porttinumero tai sekä verkkonimi että porttinumero, jotta Tor-sovelluksen voi yhdistää välityspalvelimen kautta Internetiin.
torlauncher.error_proxy_type_missing=Sinun on valittava välityspalvelimen tyyppi.
torlauncher.error_bridges_missing=Määrittele yksi tai useampi silta.
torlauncher.error_default_bridges_type_missing=Sinun täytyy valita siirtotyyppi tarjotuille silloille.
@@ -35,9 +35,9 @@ torlauncher.quit=Lopeta
torlauncher.quit_win=Lopeta
torlauncher.done=Valmis
-torlauncher.forAssistance=Tukea saat ottamalla yhteyttä %S
+torlauncher.forAssistance=Tukea saat ottamalla yhteyttä osoitteeseen %S
-torlauncher.copiedNLogMessages=Kopionti suoritettu. %S Tor loki viesti on valmis kopiotavaksi textieditoriin tai sähköposti viestiin.
+torlauncher.copiedNLogMessages=Kopionti suoritettu. %S Tor-lokiviestiä on valmiina kopiotavaksi tekstimuokkaimeen tai sähköpostiviestiin.
torlauncher.bootstrapStatus.conn_dir=Yhdistetään reititinhakemistoon
torlauncher.bootstrapStatus.handshake_dir=Muodostetaan suojattu yhteys hakemistoon
@@ -47,7 +47,7 @@ torlauncher.bootstrapStatus.loading_keys=Ladataan juurivarmenteita
torlauncher.bootstrapStatus.requesting_descriptors=Pyydetään reititintietoja
torlauncher.bootstrapStatus.loading_descriptors=Ladataan reititintietoja
torlauncher.bootstrapStatus.conn_or=Yhdistetään Tor-verkkoon
-torlauncher.bootstrapStatus.handshake_or=Muodostetaan Tor-reitti
+torlauncher.bootstrapStatus.handshake_or=Muodostetaan Tor-kiertotie
torlauncher.bootstrapStatus.done=Yhdistetty Tor-verkkoon!
torlauncher.bootstrapWarning.done=valmis
diff --git a/src/chrome/locale/fr/network-settings.dtd b/src/chrome/locale/fr/network-settings.dtd
index b9c5b7d..877dc1a 100644
--- a/src/chrome/locale/fr/network-settings.dtd
+++ b/src/chrome/locale/fr/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Laquelle des phrases suivantes décrit le mieux votre situation ?">
<!ENTITY torSettings.configurePrompt1 "Le connexion internet de cet ordinateur est bloqué ou utilise un proxy.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "Je dois configurer le pont réseau ou les paramètres du proxy.">
<!ENTITY torSettings.configure "Configurer">
<!ENTITY torSettings.connectPrompt2 "Je souhaite me connecter directement au réseau Tor.">
<!ENTITY torSettings.connectPrompt3 "Cela fonctionnera dans la plupart des situations.">
<!ENTITY torSettings.connect "Se connecter">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Est-ce que cet ordinateur a besoin d'utiliser un proxy pour accéder à internet ?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
+<!ENTITY torSettings.proxyHelp "Si vous n'êtes pas sure de la réponse à cette question, regardez les paramètres internet dans un autre navigateur pour voir si il est configuré pour l'utilisation d'un proxy.">
<!ENTITY torSettings.enterProxy "Entrez les paramètres de votre proxy.">
<!ENTITY torSettings.bridgeQuestion "Est-ce que votre Fournisseur d'Accès Internet (FAI) bloque les connexions au réseau Tor ?">
<!ENTITY torSettings.bridgeHelp "Si vous ne savez pas comment répondre à cette question, choisissez Non.  Si vous choisissez Oui, il vous sera demandé de configurer les bridges Tor qui sont des relais non listés et qui rendent plus difficile le blocage du réseau Tor.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Optionnel">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "Cet ordinateur a besoin d'utiliser un proxy pour accéder à internet.">
<!ENTITY torsettings.useProxy.type "Type de proxy :">
<!ENTITY torsettings.useProxy.address "Adresse :">
<!ENTITY torsettings.useProxy.address.placeholder "Adresse IP ou nom d'hôte">
diff --git a/src/chrome/locale/fr/progress.dtd b/src/chrome/locale/fr/progress.dtd
index 936d220..d028d4c 100644
--- a/src/chrome/locale/fr/progress.dtd
+++ b/src/chrome/locale/fr/progress.dtd
@@ -1,4 +1,4 @@
<!ENTITY torprogress.dialog.title "État de Tor">
<!ENTITY torprogress.openSettings "Ouvrir les paramètres">
<!ENTITY torprogress.heading "Connexion au réseau Tor">
-<!ENTITY torprogress.pleaseWait "Veuillez patienter pendant que la connexion au réseau Tor est établie.">
+<!ENTITY torprogress.pleaseWait "Veuillez patienter pendant que la connexion au réseau Tor s'établit.">
diff --git a/src/chrome/locale/hi/progress.dtd b/src/chrome/locale/hi/progress.dtd
index ebd9cef..87f2f41 100644
--- a/src/chrome/locale/hi/progress.dtd
+++ b/src/chrome/locale/hi/progress.dtd
@@ -1,4 +1,4 @@
-<!ENTITY torprogress.dialog.title "Tor Status">
-<!ENTITY torprogress.openSettings "Open Settings">
-<!ENTITY torprogress.heading "Connecting to the Tor network">
-<!ENTITY torprogress.pleaseWait "Please wait while we establish a connection to the Tor network.">
+<!ENTITY torprogress.dialog.title "टोर स्थिति">
+<!ENTITY torprogress.openSettings "व्यवस्था खोलें">
+<!ENTITY torprogress.heading "टोर संजाल से जुड़ रहा है">
+<!ENTITY torprogress.pleaseWait "टोर संजाल से संचार स्थापित होने तक प्रतीक्षा करें।">
diff --git a/src/chrome/locale/hi/torlauncher.properties b/src/chrome/locale/hi/torlauncher.properties
index 2bea597..f093ec6 100644
--- a/src/chrome/locale/hi/torlauncher.properties
+++ b/src/chrome/locale/hi/torlauncher.properties
@@ -46,7 +46,7 @@ torlauncher.bootstrapStatus.loading_status=Loading network status
torlauncher.bootstrapStatus.loading_keys=Loading authority certificates
torlauncher.bootstrapStatus.requesting_descriptors=Requesting relay information
torlauncher.bootstrapStatus.loading_descriptors=Loading relay information
-torlauncher.bootstrapStatus.conn_or=Connecting to the Tor network
+torlauncher.bootstrapStatus.conn_or=टोर संजाल से जुड़ रहा है
torlauncher.bootstrapStatus.handshake_or=Establishing a Tor circuit
torlauncher.bootstrapStatus.done=Connected to the Tor network!
diff --git a/src/chrome/locale/hu/network-settings.dtd b/src/chrome/locale/hu/network-settings.dtd
index 2f95130..5d9c56a 100644
--- a/src/chrome/locale/hu/network-settings.dtd
+++ b/src/chrome/locale/hu/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "A következők közül melyik illik jobban a szituációhoz?">
<!ENTITY torSettings.configurePrompt1 "Ennek a számítógépnek a forgalma cenzorált vagy proxizott.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "Szükségem van híd vagy helyi proxy beállítására.">
<!ENTITY torSettings.configure "Beállít">
<!ENTITY torSettings.connectPrompt2 "Szeretnék közvetlenül kapcsolódni a Tor hálózathoz.">
<!ENTITY torSettings.connectPrompt3 "A legtöbb esetben ez működni fog.">
<!ENTITY torSettings.connect "Csatlakozás">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Ez a számítgép helyi proxyn keresztül éri el az Internetet? ">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
+<!ENTITY torSettings.proxyHelp "Ha nem biztos ennek a kérdésnek a megválaszolásában, kattintson az Internet beállításokra a másik böngészőjében, és tekintse meg, hog van-e benne beállítva helyiproxy.">
<!ENTITY torSettings.enterProxy "Adja meg a proxy beállításokat.">
<!ENTITY torSettings.bridgeQuestion "Az internet szolgáltatód (ISP) blokkolja vagy cenzúrázza a kapcsolatot a Tor hálózathoz?">
<!ENTITY torSettings.bridgeHelp "Ha nem vagy biztos a válaszban, válaszd a Nem-et.  Ha az Igen-t választod neked kell konfigurálni a Tor bridges amik nem listázott átjátszók és nehezebbé teszik a Tor hálózat kapcsolódásának a blokkolását.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Opcionális">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "Ez a számítógép helyi proxyn keresztül kell éri el az Internetet">
<!ENTITY torsettings.useProxy.type "Proxy Típus:">
<!ENTITY torsettings.useProxy.address "Cím:">
<!ENTITY torsettings.useProxy.address.placeholder "IP cím vagy gépnév">
diff --git a/src/chrome/locale/id/network-settings.dtd b/src/chrome/locale/id/network-settings.dtd
index 1acf78d..428626b 100644
--- a/src/chrome/locale/id/network-settings.dtd
+++ b/src/chrome/locale/id/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Yang mana dari di bawah ini cocok dengan situasi anda?">
<!ENTITY torSettings.configurePrompt1 "Koneksi internet komputer ini disensor atau terproksi.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "Saya membutuhkan konfigurasi jembatan atau seting proksi lokal">
<!ENTITY torSettings.configure "Konfigur">
<!ENTITY torSettings.connectPrompt2 "Saya ingin menghubungkan secara langsung ke jaringan Tor.">
<!ENTITY torSettings.connectPrompt3 "Hal ini akan bekerja dalam kebanyakan situasi.">
<!ENTITY torSettings.connect "Hubungi">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Apakah komputer ini membutuhkan proksi lokal untuk dapat mengakses internet ?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
+<!ENTITY torSettings.proxyHelp "Jika anda tidak yakin untuk menjawab pertanyaan ini, llihatlah pada setelan jaringan di browser lain apakah terkonfigurasi dengan proksi lokal.">
<!ENTITY torSettings.enterProxy "Masukkan pengaturan proxy.">
<!ENTITY torSettings.bridgeQuestion "Apakah Internet Service Provider (ISP) blok atau sensor koneksi lain ke Tor Jaringan?">
<!ENTITY torSettings.bridgeHelp "Jika Anda tidak yakin bagaimana untuk menjawab pertanyaan ini, pilih No.  Jika Anda memilih Ya, Anda akan diminta untuk mengkonfigurasi Tor Bridges, yang relai terdaftar yang membuat lebih sulit untuk memblokir koneksi ke jaringan Tor.">
@@ -53,7 +53,7 @@
<!ENTITY torsettings.bridgeHelpTitle "Bantuan Bridge Relay">
<!ENTITY torsettings.bridgeHelp1 "Jika Anda tidak dapat terhubung ke jaringan Tor, bisa jadi Provider Layanan Internet (ISP) atau lembaga lain yang menghalangi Tor.   Sering kali, Anda dapat mengatasi masalah ini dengan menggunakan Tor Bridges, yang relai terdaftar yang lebih sulit untuk memblokir.">
<!ENTITY torsettings.bridgeHelp1B "Anda dapat menggunakan prekonfigurasi, disediakan alamat set bridge atau Anda mungkin mendapatkan satu set kebiasaan alamat dengan menggunakan salah satu dari tiga metode ini:">
-<!ENTITY torsettings.bridgeHelp2Heading "Through the Web">
+<!ENTITY torsettings.bridgeHelp2Heading "Lewat web">
<!ENTITY torsettings.bridgeHelp2 "Use a web browser to visit https://bridges.torproject.org">
<!ENTITY torsettings.bridgeHelp3Heading "Through the Email Autoresponder">
<!ENTITY torsettings.bridgeHelp3.emailDesc "Send email to bridges(a)torproject.org with the line 'get bridges' by itself in the body of the message.  However, to make it harder for an attacker to learn a lot of bridge addresses, you must send this request from one of the following email providers (listed in order of preference):">
diff --git a/src/chrome/locale/it/network-settings.dtd b/src/chrome/locale/it/network-settings.dtd
index 3343dec..4d866db 100644
--- a/src/chrome/locale/it/network-settings.dtd
+++ b/src/chrome/locale/it/network-settings.dtd
@@ -15,9 +15,9 @@
<!ENTITY torSettings.connectPrompt3 "Questo funzionerà nella maggior parte delle situazioni.">
<!ENTITY torSettings.connect "Connetti">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Questo computer richiede l'uso di un proxy locale per accedere ad Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
+<!ENTITY torSettings.proxyHelp "Se non sei sicuro su come rispondere a questa domanda, guarda alle impostazioni Internet in un altro browser per vedere come è configurato per l'uso di un proxy locale.">
<!ENTITY torSettings.enterProxy "Inserisci le impostazioni del proxy.">
<!ENTITY torSettings.bridgeQuestion "Il tuo fornitore di servizi internet (ISP) blocca o censura la connessione alla rete Tor?">
<!ENTITY torSettings.bridgeHelp "Se non sei sicuro di come rispondere alla domanda, scegli No.  Se scegli Sì, ti verrà chiesto di configurare Tor Bridges, che consiste in relay non elencati che rendono più difficile bloccare le connessioni alla Rete Tor.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Facoltativo">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "Questo computer richiede l'uso di un proxy locale per accedere a Internet">
<!ENTITY torsettings.useProxy.type "Tipo di proxy:">
<!ENTITY torsettings.useProxy.address "Indirizzo:">
<!ENTITY torsettings.useProxy.address.placeholder "Indirizzo IP oppure hostname">
diff --git a/src/chrome/locale/lo/torlauncher.properties b/src/chrome/locale/lo/torlauncher.properties
index a849dfe..10e34b0 100644
--- a/src/chrome/locale/lo/torlauncher.properties
+++ b/src/chrome/locale/lo/torlauncher.properties
@@ -27,7 +27,7 @@ torlauncher.error_bridges_missing=You must specify one or more bridges.
torlauncher.error_default_bridges_type_missing=You must select a transport type for the provided bridges.
torlauncher.error_bridge_bad_default_type=No provided bridges that have the transport type %S are available. Please adjust your settings.
-torlauncher.recommended_bridge=(recommended)
+torlauncher.recommended_bridge=(ແນະນໍາ)
torlauncher.connect=ເຊື່ອມຕໍ່
torlauncher.restart_tor=Restart Tor
diff --git a/src/chrome/locale/nb/network-settings.dtd b/src/chrome/locale/nb/network-settings.dtd
index 1371170..94b7875 100644
--- a/src/chrome/locale/nb/network-settings.dtd
+++ b/src/chrome/locale/nb/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Hvilket av følgende beskriver best din situasjon?">
<!ENTITY torSettings.configurePrompt1 "Computeren's internett tilkobling er sensurert eller under proxy.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "Jeg trenger å konfigurere en bro eller lokale mellomtjener innstillinger.">
<!ENTITY torSettings.configure "Konfigurer">
<!ENTITY torSettings.connectPrompt2 "Jeg vil koble direkte til Tor-nettverket.">
<!ENTITY torSettings.connectPrompt3 "Dette vil fungere i de fleste situasjoner.">
<!ENTITY torSettings.connect "Koble til">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Trenger denne maskinen å bruke en lokal mellomtjener for å nå Internett?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
+<!ENTITY torSettings.proxyHelp "Dersom du er usikker på hvordan du skal svare på dette spørsmålet, sjekk Internett innstillingene i en annen nettleser for å se om den er konfigurert til å bruke en lokal mellomtjener.">
<!ENTITY torSettings.enterProxy "Skriv inn proxy-innstillingene.">
<!ENTITY torSettings.bridgeQuestion "Blokkerer eller sensurerer internettleverandøren (ISP) din tilkoblinger til Tor-nettverket?">
<!ENTITY torSettings.bridgeHelp "Hvis du er usikker på hva du skal svare på dette spørsmålet, velg Nei.  Hvis du velger Ja, vil du bli bedt om å konfigurere Tor-broer, som er ulistede reléer som gjør det vanskeligere å blokkere tilkoblinger til Tor-nettverket.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Valgfritt">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "Denne maskinen trenger å bruke en mellomtjener for å nå Internett">
<!ENTITY torsettings.useProxy.type "Proxytype:">
<!ENTITY torsettings.useProxy.address "Adresse:">
<!ENTITY torsettings.useProxy.address.placeholder "IP-adresse, eller vertsnavn">
diff --git a/src/chrome/locale/pt/network-settings.dtd b/src/chrome/locale/pt/network-settings.dtd
index 68cf442..d8093f2 100644
--- a/src/chrome/locale/pt/network-settings.dtd
+++ b/src/chrome/locale/pt/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Qual das seguintes frases melhor descreve a sua situação?">
<!ENTITY torSettings.configurePrompt1 "Esta ligação à Internet deste computador está censurada ou é efetuada via proxy.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "Preciso de configurar a ponte ou as definições locais de proxy.">
<!ENTITY torSettings.configure "Configurar">
<!ENTITY torSettings.connectPrompt2 "Eu gostaria de me ligar diretamente à rede Tor.">
<!ENTITY torSettings.connectPrompt3 "Isto funciona na maior parte das situações.">
<!ENTITY torSettings.connect "Ligar">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Este computador precisa de usar um acesso proxy à Intrnet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
+<!ENTITY torSettings.proxyHelp "Se não tem a certeza da resposta, veja as definições de Internet noutro navegador para confirmar se está configurado para usar um proxy local.">
<!ENTITY torSettings.enterProxy "Insira as definições do proxy.">
<!ENTITY torSettings.bridgeQuestion "O seu fornecedor de serviços de internet bloqueia ou censura ligações à rede Tor ?">
<!ENTITY torSettings.bridgeHelp "Se não tem a certeza de como responder a esta questão, escolha o Nº.  Se escolher Sim, vai-lhe ser pedido para configurar as Tor Bridges, que são pontos de passagem não listados mais difíceis de bloquear ligações à rede Tor.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Opcional">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "Este computador precisa de usar um proxy local para aceder à Internet.">
<!ENTITY torsettings.useProxy.type "Tipo de Proxy:">
<!ENTITY torsettings.useProxy.address "Endereço:">
<!ENTITY torsettings.useProxy.address.placeholder "Endereço de IP ou nome do anfitrião">
diff --git a/src/chrome/locale/pt/torlauncher.properties b/src/chrome/locale/pt/torlauncher.properties
index 78b4729..45b7a61 100644
--- a/src/chrome/locale/pt/torlauncher.properties
+++ b/src/chrome/locale/pt/torlauncher.properties
@@ -1,14 +1,14 @@
### Copyright (c) 2014, The Tor Project, Inc.
### See LICENSE for licensing information.
-torlauncher.error_title=Iniciador Tor
-
-torlauncher.tor_exited=O tor encerrou inesperadamente. Pode ser devido a erro dentro o Tor, noutro programa no seu sistema ou falha no equipamento. Até reiniciar, o Tor não será capaz de aceder a nenhum website. Se o problema persistir, por favor envie uma cópia do diário do seu Tor à equipa de assistência.
-torlauncher.tor_exited2=Reiniciar o Tor não fecha os seus separadores.
-torlauncher.tor_controlconn_failed=Não foi possível ligar ao porto de controlo do Tor.
-torlauncher.tor_failed_to_start=O Tor falhou a inicialização.
-torlauncher.tor_control_failed=Falha ao tentar controlar o Tor
-torlauncher.tor_bootstrap_failed=O Tor falhou ao estabelecer uma ligação de rede Tor.
+torlauncher.error_title=Executor Tor
+
+torlauncher.tor_exited=O Tor encerrou inesperadamente. Isto pode ter acontecido devido a erro dentro do Tor, outro programa no seu sistema ou falha de hardware. Até que reinicie o Tor, o Navegador Tor não irá poder aceder a quaisquer sítios da Web. Se o problema persistir, por favor, envie uma cópia do Registo de Eventos do seu Tor para a equipa de suporte.
+torlauncher.tor_exited2=Ao reiniciar o Tor não irá fechar os separadores do seu navegador.
+torlauncher.tor_controlconn_failed=Não foi possível conetar à porta de controlo do Tor.
+torlauncher.tor_failed_to_start=O Tor não foi iniciado.
+torlauncher.tor_control_failed=Não foi possível obter o controlo do Tor
+torlauncher.tor_bootstrap_failed=O Tor não conseguiu estabelecer uma ligação de rede Tor.
torlauncher.tor_bootstrap_failed_details=%1$S falhou (%2$S).
torlauncher.unable_to_start_tor=Não é possível iniciar o Tor.\n\n %S
@@ -19,13 +19,13 @@ torlauncher.password_hash_missing=Não foi possível obter a senha "hashed".
torlauncher.failed_to_get_settings=Não é possível obter as definições do Tor\n\n %S
torlauncher.failed_to_save_settings=Não é possível guardar as definições do Tor\n\n %S
-torlauncher.ensure_tor_is_running=Por favor, verifique se o Tor está em execução.
+torlauncher.ensure_tor_is_running=Por favor, assegure que o Tor está em execução.
-torlauncher.error_proxy_addr_missing=Deve especificar tanto um endereço IP ou nome do hospedeiro como um número de porto, para configurar o Tor para utilizar um proxy para aceder à Internet.
+torlauncher.error_proxy_addr_missing=Deve especificar ambos, um endereço de IP ou o nome de hospedeiro e um número de porta para configurar o Tor, para utilizar um proxy para aceder à Internet.
torlauncher.error_proxy_type_missing=Deve selecionar o tipo de proxy.
torlauncher.error_bridges_missing=Deve especificar uma ou mais pontes.
torlauncher.error_default_bridges_type_missing=Deve selecionar o tipo de transporte para as pontes fornecidas
-torlauncher.error_bridge_bad_default_type=Não há pontes disponíveis que tenham o tipo de transport %S. Por favor ajuste as configurações.
+torlauncher.error_bridge_bad_default_type=Não estão disponíveis as pontes fornecidas que têm o tipo de transporte %S. Por favor, ajuste as suas configurações.
torlauncher.recommended_bridge=(recomendado)
@@ -33,19 +33,19 @@ torlauncher.connect=Ligar
torlauncher.restart_tor=Reiniciar o Tor
torlauncher.quit=Sair
torlauncher.quit_win=Sair
-torlauncher.done=Completo
+torlauncher.done=Concluído
torlauncher.forAssistance=Para assistência, contacte %S
-torlauncher.copiedNLogMessages=Cópia completa. %S mensagens de diário estão prontas para ser coladas num editor de texto ou numa mensagem de correio eletrónico.
+torlauncher.copiedNLogMessages=Cópia completa. Estão prontas %S mensagens do registo de eventos do Tor para serem coladas num editor de texto ou numa mensagem de correio eletrónico.
torlauncher.bootstrapStatus.conn_dir=A ligar ao diretório do retransmissor
-torlauncher.bootstrapStatus.handshake_dir=A estabelecer uma ligação de diretório encriptada
+torlauncher.bootstrapStatus.handshake_dir=A estabelecer uma ligação de diretoria encriptada
torlauncher.bootstrapStatus.requesting_status=A obter o estado da rede
torlauncher.bootstrapStatus.loading_status=A carregar o estado da rede
torlauncher.bootstrapStatus.loading_keys=A carregar os certificados de autoridade
-torlauncher.bootstrapStatus.requesting_descriptors=A pedir informação do retransmissor
-torlauncher.bootstrapStatus.loading_descriptors=A carregar informações do retransmissor
+torlauncher.bootstrapStatus.requesting_descriptors=A solicitar a informação do retransmissor
+torlauncher.bootstrapStatus.loading_descriptors=A carregar a informação do retransmissor
torlauncher.bootstrapStatus.conn_or=A ligar à rede Tor
torlauncher.bootstrapStatus.handshake_or=A estabelecer um circuito Tor
torlauncher.bootstrapStatus.done=Ligado à rede Tor
@@ -55,7 +55,7 @@ torlauncher.bootstrapWarning.connectrefused=ligação recusada
torlauncher.bootstrapWarning.misc=diversos
torlauncher.bootstrapWarning.resourcelimit=recursos insuficientes
torlauncher.bootstrapWarning.identity=identidade não correspondente
-torlauncher.bootstrapWarning.timeout=Tempo de ligação expirado
+torlauncher.bootstrapWarning.timeout=ligação expirada
torlauncher.bootstrapWarning.noroute=sem rota para o hospedeiro
-torlauncher.bootstrapWarning.ioerror=Erro de leitura/escrita
-torlauncher.bootstrapWarning.pt_missing=Transporte de ligacao ausente
+torlauncher.bootstrapWarning.ioerror=Erro de leitura/gravação
+torlauncher.bootstrapWarning.pt_missing=transporte de ligação em falta
diff --git a/src/chrome/locale/sq/network-settings.dtd b/src/chrome/locale/sq/network-settings.dtd
index d8eafe3..85b0cae 100644
--- a/src/chrome/locale/sq/network-settings.dtd
+++ b/src/chrome/locale/sq/network-settings.dtd
@@ -1,62 +1,62 @@
-<!ENTITY torsettings.dialog.title "Parametrat e rrjetit Tor">
+<!ENTITY torsettings.dialog.title "Konfigurimi i Rrjetit të Tor">
<!-- For "first run" wizard: -->
-<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
+<!ENTITY torsettings.prompt "Përpara se të lidheni me rrjetin e Tor, ju nevojitet të ofroni informacion rreth lidhjes së Internetit të këtij kompjuteri.">
<!ENTITY torSettings.yes "Po">
<!ENTITY torSettings.no "Jo">
-<!ENTITY torSettings.firstQuestion "Cila nga këto i përshtatet më shumë situatës tuaj aktuale?">
-<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
-<!ENTITY torSettings.configure "Konfiguro">
-<!ENTITY torSettings.connectPrompt2 "Do të dëshiroja të lidhesha direkt me rrjetin Tor.">
-<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
-<!ENTITY torSettings.connect "Lidhu">
+<!ENTITY torSettings.firstQuestion "Cila nga këto e përshkruan më mirë situatën tuaj të tanishme?">
+<!ENTITY torSettings.configurePrompt1 "Lidhja e Internetit të këtij kompjuteri është e censuruar ose me proxy">
+<!ENTITY torSettings.configurePrompt2 "Më duhet të konfiguroj urën ose parametrat e proxy-t.">
+<!ENTITY torSettings.configure "Konfiguroni">
+<!ENTITY torSettings.connectPrompt2 "Do të dëshiroja të lidhesha drejtpërdrejt me rrjetin e Tor.">
+<!ENTITY torSettings.connectPrompt3 "Kjo do të funksionojë në shumë situata.">
+<!ENTITY torSettings.connect "Lidhuni">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "A i nevojitet këtij kompjuteri që të përdorë një proxy lokal, për t'u qasur në Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
-<!ENTITY torSettings.enterProxy "Jepni parametrat e përfaqësimit 'proxy'.">
-<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
-<!ENTITY torSettings.bridgeHelp "If you are not sure how to answer this question, choose No.  If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
-<!ENTITY torSettings.bridgeSettingsPrompt "You may use the provided set of bridges or you may obtain and enter a custom set of bridges.">
+<!ENTITY torSettings.proxyHelp "Nëse s'jeni i sigurt sesi t'i përgjigjeni kësaj pyetje, shikoni tek konfigurimi i Internetit në një tjetër shfletues, për të parë nëse ai është i konfiguruar për të përdorur një proxy lokal.">
+<!ENTITY torSettings.enterProxy "Futni konfigurimin e proxy-t.">
+<!ENTITY torSettings.bridgeQuestion "A i pengon ose censuron lidhjet për tek Rrjeti Tor, Ofruesi juaj i Shërbimit Internet (ISP)?">
+<!ENTITY torSettings.bridgeHelp "Nëse s'jeni i sigurt sesi t'i përgjigjeni kësaj pyetje, përzgjidhni "Jo".  Nëse përzgjidhni "Po", do t'ju kërkohet të konfiguroni Tor bridges, të cilat janë rele të palistuara, që e bëjnë më të vështirë pengimin e lidhjeve për tek Rrjeti Tor.">
+<!ENTITY torSettings.bridgeSettingsPrompt "Ju mund të përdorni grupin e dhënë të urave, ose mund të përftoni dhe futni një sasi të personalizuar urash.">
<!-- Other: -->
<!ENTITY torsettings.startingTor "Duke pritur që Tor të nisë...">
-<!ENTITY torsettings.restartTor "Restart Tor">
+<!ENTITY torsettings.restartTor "Riniseni Tor-in">
-<!ENTITY torsettings.optional "Fakultativ">
+<!ENTITY torsettings.optional "Me zgjedhje">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
-<!ENTITY torsettings.useProxy.type "Tipi i përfaqësuesit:">
+<!ENTITY torsettings.useProxy.checkbox "Ky kompjuter nevojitet që të përdorë një proxy lokal, që të ketë qasje në Internet">
+<!ENTITY torsettings.useProxy.type "Lloji i Proxy-t:">
<!ENTITY torsettings.useProxy.address "Adresa:">
<!ENTITY torsettings.useProxy.address.placeholder "Adresa IP ose emri i pritësit">
<!ENTITY torsettings.useProxy.port "Porta:">
-<!ENTITY torsettings.useProxy.username "Përdoruesi:">
-<!ENTITY torsettings.useProxy.password "Password:">
+<!ENTITY torsettings.useProxy.username "Emri i përdoruesit:">
+<!ENTITY torsettings.useProxy.password "Fjalëkalimi:">
<!ENTITY torsettings.useProxy.type.socks4 "SOCKS 4">
<!ENTITY torsettings.useProxy.type.socks5 "SOCKS 5">
<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
-<!ENTITY torsettings.firewall.checkbox "Ky kompjuter kalon nëpërmjet një mbrojtësi 'firewall' i cili lejon lidhje vetëm në disa porta.">
-<!ENTITY torsettings.firewall.allowedPorts "Portat e lejuara:">
-<!ENTITY torsettings.useBridges.checkbox "Ofruesi im i shërbimit të internetit (ISP) bllokon lidhjet drejt rrjetit Tor">
-<!ENTITY torsettings.useBridges.default "Connect with provided bridges">
-<!ENTITY torsettings.useBridges.type "Transport type:">
-<!ENTITY torsettings.useBridges.custom "Enter custom bridges">
-<!ENTITY torsettings.useBridges.label "Jepni një ose më shumë rele urash (një për çdo rresht)">
-<!ENTITY torsettings.useBridges.placeholder "type address:port">
-
-<!ENTITY torsettings.copyLog "Kopjo ditarin e Tor në Clipboard">
-<!ENTITY torsettings.bridgeHelpTitle "Ndihmë mbi relenë e urës">
-<!ENTITY torsettings.bridgeHelp1 "If you are unable to connect to the Tor network, it could be that your Internet Service Provider (ISP) or another agency is blocking Tor.  Often, you can work around this problem by using Tor Bridges, which are unlisted relays that are more difficult to block.">
-<!ENTITY torsettings.bridgeHelp1B "You may use the preconfigured, provided set of bridge addresses or you may obtain a custom set of addresses by using one of these three methods:">
-<!ENTITY torsettings.bridgeHelp2Heading "Through the Web">
-<!ENTITY torsettings.bridgeHelp2 "Use a web browser to visit https://bridges.torproject.org">
-<!ENTITY torsettings.bridgeHelp3Heading "Through the Email Autoresponder">
-<!ENTITY torsettings.bridgeHelp3.emailDesc "Send email to bridges(a)torproject.org with the line 'get bridges' by itself in the body of the message.  However, to make it harder for an attacker to learn a lot of bridge addresses, you must send this request from one of the following email providers (listed in order of preference):">
+<!ENTITY torsettings.firewall.checkbox "Ky kompjuter kalon përmes një muri mbrojtës, që i lejon lidhje vetëm me disa porta.">
+<!ENTITY torsettings.firewall.allowedPorts "Portat e Lejuara:">
+<!ENTITY torsettings.useBridges.checkbox "Ofruesi im i Shërbimit të Internetit (ISP) pengon lidhjet drejt rrjetit Tor">
+<!ENTITY torsettings.useBridges.default "Lidhuni me urat e ofruara">
+<!ENTITY torsettings.useBridges.type "Lloji i Transportit:">
+<!ENTITY torsettings.useBridges.custom "Futini urat e përshtatura">
+<!ENTITY torsettings.useBridges.label "Futni një ose më shumë rele urë (një për rresht)">
+<!ENTITY torsettings.useBridges.placeholder "lloji i adresës:portë">
+
+<!ENTITY torsettings.copyLog "Kopjojeni Regjistrin e Tor në Kujtesën e fragmenteve">
+<!ENTITY torsettings.bridgeHelpTitle "Ndihma mbi Relenë e Urë">
+<!ENTITY torsettings.bridgeHelp1 "Nëse s'mundeni të lidheni me rrjetin Tor, mund të jetë sepse Ofruesi juaj i Shërbimit të Internetit (ISP), ose ndonjë agjenci tjetër po pengojnë Tor.  Shpesh, ju mund ta shmangni këtë problem, duke përdorur urat e Tor, të cilat janë rele të palistuara, që janë shumë më të vështira për t'u penguar.">
+<!ENTITY torsettings.bridgeHelp1B "Ju mund të përdorni grupin e ofruar e të parakonfiguruar të adresave ura, ose mund të përftoni një grup adresash të përshtatura, duke përdorur një nga këto tre metoda:">
+<!ENTITY torsettings.bridgeHelp2Heading "Përmes Web-it">
+<!ENTITY torsettings.bridgeHelp2 "Përdorni një shfletues web-i që të vizitoni https://bridges.torproject.org">
+<!ENTITY torsettings.bridgeHelp3Heading "Përmes Vetëpërgjigjes se E-postës">
+<!ENTITY torsettings.bridgeHelp3.emailDesc "Dërgoni e-postë tek bridges(a)torproject.org me reshtin 'get bridges' të veçuar në trupin e mesazhit.  Megjithatë, për ta bërë më të vështirë që një sulmues të mësojë shumë adresa ura, ju duhet ta dërgoni këtë kërkesë nga njëri prej ofruesve të e-postës (listuar sipas rendit të parapëlqimit):">
<!ENTITY torsettings.bridgeHelp3.emailList "https://www.riseup.net, https://mail.google.com, or https://mail.yahoo.com">
-<!ENTITY torsettings.bridgeHelp4Heading "Through the Help Desk">
-<!ENTITY torsettings.bridgeHelp4 "As a last resort, you can request bridge addresses by sending a polite email message to help(a)rt.torproject.org.  Please note that a person will need to respond to each request.">
+<!ENTITY torsettings.bridgeHelp4Heading "Përmes Help Desk-ut">
+<!ENTITY torsettings.bridgeHelp4 "Si mjet të fundit, ju mund të kërkoni adresat urë, duke dërguar një mesazh e-poste me politesë tek help(a)rt.torproject.org.  Ju lutemi vini re se një person do të duhet t'i përgjigjet çdo kërkese.">
diff --git a/src/chrome/locale/sq/progress.dtd b/src/chrome/locale/sq/progress.dtd
index b127352..8138a00 100644
--- a/src/chrome/locale/sq/progress.dtd
+++ b/src/chrome/locale/sq/progress.dtd
@@ -1,4 +1,4 @@
-<!ENTITY torprogress.dialog.title "Statusi i Tor">
-<!ENTITY torprogress.openSettings "Hap parametrat">
-<!ENTITY torprogress.heading "Duke u lidhur me rrjetin e Tor">
-<!ENTITY torprogress.pleaseWait "Ju lutem prisni deri sa të vendoset nje lidhje me rrjetin e Tor">
+<!ENTITY torprogress.dialog.title "Gjendja e Tor">
+<!ENTITY torprogress.openSettings "Hapeni Konfigurimin">
+<!ENTITY torprogress.heading "Duke u lidhur me rrjetin Tor">
+<!ENTITY torprogress.pleaseWait "Ju lutemi prisni derisa të vendoset një lidhje me rrjetin Tor">
diff --git a/src/chrome/locale/sq/torlauncher.properties b/src/chrome/locale/sq/torlauncher.properties
index 0b3ae2d..b32ee99 100644
--- a/src/chrome/locale/sq/torlauncher.properties
+++ b/src/chrome/locale/sq/torlauncher.properties
@@ -1,61 +1,61 @@
### Copyright (c) 2014, The Tor Project, Inc.
### See LICENSE for licensing information.
-torlauncher.error_title=Tor Launcher
-
-torlauncher.tor_exited=Tor unexpectedly exited. This might be due to a bug in Tor itself, another program on your system, or faulty hardware. Until you restart Tor, the Tor Browser will not able to reach any websites. If the problem persists, please send a copy of your Tor Log to the support team.
-torlauncher.tor_exited2=Restarting Tor will not close your browser tabs.
-torlauncher.tor_controlconn_failed=Could not connect to Tor control port.
-torlauncher.tor_failed_to_start=Tor failed to start.
-torlauncher.tor_control_failed=Failed to take control of Tor.
-torlauncher.tor_bootstrap_failed=Tor failed to establish a Tor network connection.
-torlauncher.tor_bootstrap_failed_details=%1$S failed (%2$S).
-
-torlauncher.unable_to_start_tor=Unable to start Tor.\n\n%S
-torlauncher.tor_missing=The Tor executable is missing.
-torlauncher.torrc_missing=The torrc file is missing.
-torlauncher.datadir_missing=The Tor data directory does not exist.
-torlauncher.password_hash_missing=Failed to get hashed password.
-
-torlauncher.failed_to_get_settings=Unable to retrieve Tor settings.\n\n%S
-torlauncher.failed_to_save_settings=Unable to save Tor settings.\n\n%S
-torlauncher.ensure_tor_is_running=Please ensure that Tor is running.
-
-torlauncher.error_proxy_addr_missing=Ju duhet të përcaktoni si adresën IP ose emrin e serverit edhe numrin e portës për të konfiguruar Torin të përdori një proxy për tu lidhur në Internet.
-torlauncher.error_proxy_type_missing=You must select the proxy type.
-torlauncher.error_bridges_missing=You must specify one or more bridges.
-torlauncher.error_default_bridges_type_missing=You must select a transport type for the provided bridges.
-torlauncher.error_bridge_bad_default_type=No provided bridges that have the transport type %S are available. Please adjust your settings.
-
-torlauncher.recommended_bridge=(recommended)
-
-torlauncher.connect=Lidhu
-torlauncher.restart_tor=Restart Tor
-torlauncher.quit=Dil
-torlauncher.quit_win=Dil
-torlauncher.done=Done
-
-torlauncher.forAssistance=For assistance, contact %S
-
-torlauncher.copiedNLogMessages=Copy complete. %S Tor log messages are ready to be pasted into a text editor or an email message.
-
-torlauncher.bootstrapStatus.conn_dir=Connecting to a relay directory
-torlauncher.bootstrapStatus.handshake_dir=Establishing an encrypted directory connection
-torlauncher.bootstrapStatus.requesting_status=Retrieving network status
-torlauncher.bootstrapStatus.loading_status=Loading network status
-torlauncher.bootstrapStatus.loading_keys=Loading authority certificates
-torlauncher.bootstrapStatus.requesting_descriptors=Requesting relay information
-torlauncher.bootstrapStatus.loading_descriptors=Loading relay information
-torlauncher.bootstrapStatus.conn_or=Duke u lidhur me rrjetin Tor
-torlauncher.bootstrapStatus.handshake_or=Establishing a Tor circuit
-torlauncher.bootstrapStatus.done=Connected to the Tor network!
-
-torlauncher.bootstrapWarning.done=done
-torlauncher.bootstrapWarning.connectrefused=connection refused
-torlauncher.bootstrapWarning.misc=miscellaneous
-torlauncher.bootstrapWarning.resourcelimit=insufficient resources
-torlauncher.bootstrapWarning.identity=identity mismatch
-torlauncher.bootstrapWarning.timeout=connection timeout
-torlauncher.bootstrapWarning.noroute=no route to host
-torlauncher.bootstrapWarning.ioerror=read/write error
-torlauncher.bootstrapWarning.pt_missing=missing pluggable transport
+torlauncher.error_title=Lëshuesi Tor
+
+torlauncher.tor_exited=Tor doli papritmas. Kjo mund të jetë për shkak të një gabimi të vetë Tor, të një tjetër programi në sistemin tuaj, ose të të metave të diskut të ngurtë. Derisa ta rinisni Tor, Tor Browser nuk do mund të arrijë asnjë webfaqe. Nëse problemi vijon, ju lutemi dërgoni një kopje të Regjistrit tuaj të Tor, tek ekipi i mbështetjes.
+torlauncher.tor_exited2=Rinisja e Tor s'do t'i mbyllë skedat e shfletuesit tuaj.
+torlauncher.tor_controlconn_failed=E pamundur lidhja me portin e kontrollit të Tor.
+torlauncher.tor_failed_to_start=Tor dështoi të nisë.
+torlauncher.tor_control_failed=Dështim në marrjen në kontroll të Tor.
+torlauncher.tor_bootstrap_failed=Tor dështoi që të vendoste një lidhje me rrjetin e Tor.
+torlauncher.tor_bootstrap_failed_details=%1$S dështoi (%2$S).
+
+torlauncher.unable_to_start_tor=E pamundur që të niset Tor.\n\n%S
+torlauncher.tor_missing=Skedari i ekzekutueshëm Tor, mungon.
+torlauncher.torrc_missing=Skedari torrc mungon.
+torlauncher.datadir_missing=Direktoria e të dhënave të Tor nuk ekziston.
+torlauncher.password_hash_missing=Dështuam të përftonim fjalëkalimin me thurje.
+
+torlauncher.failed_to_get_settings=Dështuam të gjenim konfigurimin e Tor.\n\n%S
+torlauncher.failed_to_save_settings=Dështuam të ruanim konfigurimin e Tor.\n\n%S
+torlauncher.ensure_tor_is_running=Ju lutemi sigurohuni që Tor është në ekzekutim.
+
+torlauncher.error_proxy_addr_missing=Ju duhet të përcaktoni një adresë IP ose emër pritësi, si edhe një numër porte, për të konfiguruar Tor në mënyrë që të përdorë një proxy për t'u qasur në Internet.
+torlauncher.error_proxy_type_missing=Duhet të përzgjidhni tipin proxy.
+torlauncher.error_bridges_missing=Duhet të specifikoni një ose më shumë ura.
+torlauncher.error_default_bridges_type_missing=Duhet të përzgjidhni një lloj transport për urat e parashikuara
+torlauncher.error_bridge_bad_default_type=S'ka ura të parashikuara, që kanë transport të llojit %S, të disponueshme. Ju lutemi ndreqni parametrat tuaj.
+
+torlauncher.recommended_bridge=(rekomandohet)
+
+torlauncher.connect=Lidhuni
+torlauncher.restart_tor=Riniseni Tor
+torlauncher.quit=Ndërpriteni
+torlauncher.quit_win=Dilni
+torlauncher.done=Kryer
+
+torlauncher.forAssistance=Për ndihmë, kontaktoni %S
+
+torlauncher.copiedNLogMessages=Kopjimi u krye. Mesazhet e regjistrit të Tor për %S, janë gati për t'u ngjitur në një redaktues teksti, ose në një mesazh e-poste.
+
+torlauncher.bootstrapStatus.conn_dir=Lidhja me një direktori releje
+torlauncher.bootstrapStatus.handshake_dir=Krijimi i një lidhje me direktori të shifruar
+torlauncher.bootstrapStatus.requesting_status=Rigjetja e statusit të rrjetit
+torlauncher.bootstrapStatus.loading_status=Ngarkimi i statusit të rrjetit
+torlauncher.bootstrapStatus.loading_keys=Ngarkimi i certifikatave të autoritetit
+torlauncher.bootstrapStatus.requesting_descriptors=Kërkimi i informacionit të relesë
+torlauncher.bootstrapStatus.loading_descriptors=Ngarkimi i informacionit të relesë
+torlauncher.bootstrapStatus.conn_or=Të lidhesh me rrjetin Tor
+torlauncher.bootstrapStatus.handshake_or=Krijimi i një cirkuiti të Tor
+torlauncher.bootstrapStatus.done=I lidhur me rrjetin e Tor!
+
+torlauncher.bootstrapWarning.done=kryer
+torlauncher.bootstrapWarning.connectrefused=lidhja u refuzua
+torlauncher.bootstrapWarning.misc=i përzier
+torlauncher.bootstrapWarning.resourcelimit=burime të pamjaftueshme
+torlauncher.bootstrapWarning.identity=mospërputhje identiteti
+torlauncher.bootstrapWarning.timeout=pezullim i lidhjes
+torlauncher.bootstrapWarning.noroute=asnjë rrugë për tek pritësi
+torlauncher.bootstrapWarning.ioerror=gabim leximi/shkrimi
+torlauncher.bootstrapWarning.pt_missing=mungon transporti me ngulje
diff --git a/src/chrome/locale/sv/network-settings.dtd b/src/chrome/locale/sv/network-settings.dtd
index 311f336..52e22a6 100644
--- a/src/chrome/locale/sv/network-settings.dtd
+++ b/src/chrome/locale/sv/network-settings.dtd
@@ -15,9 +15,9 @@
<!ENTITY torSettings.connectPrompt3 "Detta fungerar i de flesta situationer.">
<!ENTITY torSettings.connect "Anslut">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Behöver den här datorn använda en lokal proxy för att ansluta till Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
+<!ENTITY torSettings.proxyHelp "Om du är osäker på svaret på frågan, titta på Internetinställningarna i en annan webbläsare för att se om den är konfigurerad att använda en lokal proxy.">
<!ENTITY torSettings.enterProxy "Ange proxyinställningarna.">
<!ENTITY torSettings.bridgeQuestion "Blockerar eller censurerar din internetleverantör anslutningar till Tor-nätverket?">
<!ENTITY torSettings.bridgeHelp "Om du är osäker på hur du ska svara på den här frågan, välj Nej.  Om du väljer Ja kommer du ombes att konfigurera Tor-bryggor, vilka är olistade reläer som gör det svårare att blockera anslutningar till Tor-nätverket.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Valfri">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "Den här datorn behöver använda en lokal proxy för att ansluta till Internet">
<!ENTITY torsettings.useProxy.type "Typ av proxy:">
<!ENTITY torsettings.useProxy.address "Adress:">
<!ENTITY torsettings.useProxy.address.placeholder "IP-adress eller värdnamn">
diff --git a/src/chrome/locale/uk/network-settings.dtd b/src/chrome/locale/uk/network-settings.dtd
index a4c0644..0e62106 100644
--- a/src/chrome/locale/uk/network-settings.dtd
+++ b/src/chrome/locale/uk/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "Яке з наступних тверджень найкраще описує Вашу ситуацію?">
<!ENTITY torSettings.configurePrompt1 "Мережеве з'єднання цього комп'ютера цензурується або йде через проксі-сервер.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "Мені потрібно налаштувати міст або локальний проксі.">
<!ENTITY torSettings.configure "Налаштування">
<!ENTITY torSettings.connectPrompt2 "Я бажаю підключатися до Tor напряму ">
<!ENTITY torSettings.connectPrompt3 "Це має працювати у більшості ситуацій.">
<!ENTITY torSettings.connect "З'єднатися">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "Чи потрібно цьому комп'ютеру використовувати локальний проксі для доступу в Інтернет?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
+<!ENTITY torSettings.proxyHelp "Якщо ви не знаєте, як відповісти на це питання, перевірте налаштування Інтернету в іншому браузері, щоб побачити чи він налаштований на використання локального проксі.">
<!ENTITY torSettings.enterProxy "Задати параметри проксі">
<!ENTITY torSettings.bridgeQuestion "Ваш Інтернет-провайдер (ISP) блокує чи яким-небудь чином цензурує підключення до Tor мережі?">
<!ENTITY torSettings.bridgeHelp "Якщо Ви не знаєте, як відповісти на це питання, виберіть Ні.  Якщо Ви виберете Так, Вам буде запропоновано налаштувати мости Tor, що є приватними трансляторами, які роблять більш важким блокування з'єднань з Tor мережі.">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "Додатково">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "Цей комп'ютер повинен використовувати локальний проксі для доступу в Інтернет">
<!ENTITY torsettings.useProxy.type "Тип проксі:">
<!ENTITY torsettings.useProxy.address "Адреса:">
<!ENTITY torsettings.useProxy.address.placeholder "ІР адреса або ім'я хосту">
diff --git a/src/chrome/locale/zh-CN/network-settings.dtd b/src/chrome/locale/zh-CN/network-settings.dtd
index 29a5f00..4e6d5e1 100644
--- a/src/chrome/locale/zh-CN/network-settings.dtd
+++ b/src/chrome/locale/zh-CN/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "以下哪个描述与你的情况最为匹配?">
<!ENTITY torSettings.configurePrompt1 "网络连接受到审查或需要代理。">
-<!ENTITY torSettings.configurePrompt2 "我需要添加网桥或对本地代理进行配置。">
+<!ENTITY torSettings.configurePrompt2 "需要添加网桥或对本地代理进行配置。">
<!ENTITY torSettings.configure "配置">
<!ENTITY torSettings.connectPrompt2 "我想要直接连接 Tor 网络。">
<!ENTITY torSettings.connectPrompt3 "通常这种方式是有效的。">
<!ENTITY torSettings.connect "连接">
-<!ENTITY torSettings.proxyQuestion "请问这台计算机需要使用一个本地代理来访问互联网吗?">
+<!ENTITY torSettings.proxyQuestion "是否需要本地代理访问互联网?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "如果您不知道如何回答这个问题,看看其他浏览器中的 Internet 设置,看它是否有配置为使用一个本地代理。">
+<!ENTITY torSettings.proxyHelp "如果不知道如何回答该问题,请检查其他浏览器中的互联网设置,查看是否使用本地代理。">
<!ENTITY torSettings.enterProxy "输入代理设置。">
<!ENTITY torSettings.bridgeQuestion "互联网服务提供商 (ISP) 是否对 Tor 网络连接进行了封锁或审查?">
<!ENTITY torSettings.bridgeHelp "如果不理解该问题,请选择“否”。如果选择“是”,那么需要对 Tor 网桥进行配置。网桥指用于连接 Tor 网络的非公开网络中继,更难于封锁。">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "可选">
-<!ENTITY torsettings.useProxy.checkbox "这台计算机需要使用一个本地代理来访问互联网">
+<!ENTITY torsettings.useProxy.checkbox "需要本地代理来访问互联网">
<!ENTITY torsettings.useProxy.type "代理类型:">
<!ENTITY torsettings.useProxy.address "地址:">
<!ENTITY torsettings.useProxy.address.placeholder "IP 地址或主机名">
diff --git a/src/chrome/locale/zh-TW/network-settings.dtd b/src/chrome/locale/zh-TW/network-settings.dtd
index 65a5d51..7abb064 100644
--- a/src/chrome/locale/zh-TW/network-settings.dtd
+++ b/src/chrome/locale/zh-TW/network-settings.dtd
@@ -9,15 +9,15 @@
<!ENTITY torSettings.firstQuestion "下列哪一項最符合您的情況?">
<!ENTITY torSettings.configurePrompt1 "這部電腦的網路連線是被審查或是有代理的。">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings.">
+<!ENTITY torSettings.configurePrompt2 "我需要設定橋接或本地代理設定">
<!ENTITY torSettings.configure "設定">
<!ENTITY torSettings.connectPrompt2 "我想直接連接到 Tor 網路。">
<!ENTITY torSettings.connectPrompt3 "這將在大多數情況下生效。">
<!ENTITY torSettings.connect "連接">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
+<!ENTITY torSettings.proxyQuestion "這台電腦需要使用本地代理伺服器來存取網路嗎?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyHelp "If you are not sure how to answer this question, look at the Internet settings in another browser to see whether it is configured to use a local proxy.">
+<!ENTITY torSettings.proxyHelp "若您無法確定如何回答這個問題,請查看其他瀏覽器的網路設定,看它是否設定為透過代理伺服器連線。">
<!ENTITY torSettings.enterProxy "輸入代理伺服器設定。">
<!ENTITY torSettings.bridgeQuestion "您的網際網路服務提供者(ISP)阻擋或審查員連接到 Tor 網路?">
<!ENTITY torSettings.bridgeHelp "如果您不確定如何回答此問題,請選擇「否」。  如果您選擇「是」,您將被要求設定Tor 橋接,這讓阻止連接到 Tor 網路更加困難。">
@@ -30,7 +30,7 @@
<!ENTITY torsettings.optional "選用">
-<!ENTITY torsettings.useProxy.checkbox "This computer needs to use a local proxy to access the Internet">
+<!ENTITY torsettings.useProxy.checkbox "這台電腦需要使用代理伺服器存取網際網路">
<!ENTITY torsettings.useProxy.type "代理伺服器類型:">
<!ENTITY torsettings.useProxy.address "位址:">
<!ENTITY torsettings.useProxy.address.placeholder "IP 位址或主機名稱">
diff --git a/src/install.rdf b/src/install.rdf
index 8825190..c27be00 100644
--- a/src/install.rdf
+++ b/src/install.rdf
@@ -7,7 +7,7 @@
<em:creator>The Tor Project, Inc.</em:creator>
<em:contributor>Pearl Crescent, LLC</em:contributor>
<em:id>tor-launcher(a)torproject.org</em:id>
- <em:version>0.2.7.2</em:version>
+ <em:version>0.2.7.3</em:version>
<em:homepageURL>https://www.torproject.org/projects/torbrowser.html</em:homepageURL>
<em:updateURL>https://127.0.0.1/</em:updateURL>
<!--
1
0

[torbutton/master] Bug #14429: Quantize content window inner width, height
by mikeperry@torproject.org 27 Mar '15
by mikeperry@torproject.org 27 Mar '15
27 Mar '15
commit ddd8a6a78c56feeba2c8d5493edb6970ec148588
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Sun Feb 8 00:13:36 2015 -0800
Bug #14429: Quantize content window inner width, height
---
src/chrome/content/content-sizer.js | 286 +++++++++++++++++++++++++++++
src/chrome/content/tor-circuit-display.js | 35 +---
src/chrome/content/torbutton.js | 2 +
src/chrome/content/torbutton.xul | 1 +
src/defaults/preferences/preferences.js | 1 +
src/modules/utils.js | 43 +++++
6 files changed, 336 insertions(+), 32 deletions(-)
diff --git a/src/chrome/content/content-sizer.js b/src/chrome/content/content-sizer.js
new file mode 100644
index 0000000..af6bc80
--- /dev/null
+++ b/src/chrome/content/content-sizer.js
@@ -0,0 +1,286 @@
+// The purpose of this file is to ensure that window.innerWidth and window.innerHeight
+// always return rounded values.
+
+// This file is formatted for docco.js. Later functions call earlier ones.
+
+/* jshint esnext: true */
+
+// __quantizeBrowserSizeOnLoad(window, xStep, yStep)__.
+// Once a window is fully loaded, ensures that gBrowser width and height are multiples of
+// xStep and yStep.
+let quantizeBrowserSizeOnLoad = function (window, xStep, yStep) {
+
+// Use Task.jsm to avoid callback hell.
+Cu.import("resource://gre/modules/Task.jsm");
+
+// Make the TorButton logger available.
+let logger = Cc["@torproject.org/torbutton-logger;1"]
+ .getService(Components.interfaces.nsISupports).wrappedJSObject;
+
+// Utility function
+let { bindPrefAndInit } = Cu.import("resource://torbutton/modules/utils.js");
+
+// __largestMultipleLessThan(factor, max)__.
+// Returns the largest number that is a multiple of factor
+// and is less or equal to max.
+let largestMultipleLessThan = function (factor, max) {
+ return Math.max(1, Math.floor((1 + max) / factor, 1)) * factor;
+};
+
+// __listen(target, eventType, useCapture, timeoutMs)__.
+// Listens for a single event of eventType on target.
+// Returns a Promise that resolves to an Event object, if the event fires.
+// If a timeout occurs, then Promise is rejected with a "Timed out" error.
+let listen = function (target, eventType, useCapture, timeoutMs) {
+ return new Promise(function (resolve, reject) {
+ let listenFunction = function (event) {
+ target.removeEventListener(eventType, listenFunction, useCapture);
+ resolve(event);
+ };
+ target.addEventListener(eventType, listenFunction, useCapture);
+ if (timeoutMs !== undefined && timeoutMs !== null) {
+ window.setTimeout(function () {
+ target.removeEventListener(eventType, listenFunction, useCapture);
+ resolve(new Event("timeout"));
+ }, timeoutMs);
+ }
+ });
+};
+
+// __sleep(time_ms)__.
+// Returns a Promise that sleeps for the specified time interval,
+// and returns an Event object of type "wake".
+let sleep = function (timeoutMs) {
+ return new Promise(function (resolve, reject) {
+ window.setTimeout(function () {
+ resolve(new Event("wake"));
+ }, timeoutMs);
+ });
+};
+
+// __isNumber(value)__.
+// Returns true iff the value is a number.
+let isNumber = x => typeof x === "number";
+
+// __reshape(window, {left, top, width, height}, timeoutMs)__.
+// Reshapes the window to rectangle {left, top, width, height} and yields
+// until the window reaches its target size, or the timeout occurs.
+let reshape = function* (window, {left, top, width, height}, timeoutMs) {
+ let finishTime = Date.now() + timeoutMs,
+ x = isNumber(left) ? left : window.screenX,
+ y = isNumber(top) ? top : window.screenY,
+ w = isNumber(width) ? width : window.outerWidth,
+ h = isNumber(height) ? height : window.outerHeight;
+ // Make sure we are in a new event.
+ yield sleep(0);
+ if (w !== window.outerWidth || h !== window.outerWidth) {
+ window.resizeTo(w, h);
+ }
+ if (x !== window.screenX || y !== window.screenY) {
+ window.moveTo(x, y);
+ }
+ // Yield until we have the correct screen position and size, or
+ // we timeout. Multiple resize events often fire in a resize.
+ while (x !== window.screenX ||
+ y !== window.screenY ||
+ w !== window.outerWidth ||
+ h !== window.outerHeight) {
+ let timeLeft = finishTime - Date.now();
+ if (timeLeft <= 0) break;
+ yield listen(window, "resize", true, timeLeft);
+ }
+};
+
+// __rebuild(window)__.
+// Jog the size of the window slightly, to remind the window manager
+// to redraw the window.
+let rebuild = function* (window) {
+ let h = window.outerHeight;
+ yield reshape(window, {height : (h + 1)}, 300);
+ yield reshape(window, {height : h}, 300);
+};
+
+// __gaps(window)__.
+// Deltas between gBrowser and its container. Returns null if there is no gap.
+let gaps = function (window) {
+ let gBrowser = window.gBrowser,
+ container = gBrowser.parentElement,
+ deltaWidth = Math.max(0, container.clientWidth - gBrowser.clientWidth - 1),
+ deltaHeight = Math.max(0, container.clientHeight - gBrowser.clientHeight - 1);
+ //logger.eclog(3, "gaps " + deltaWidth + "," + deltaHeight);
+ return (deltaWidth === 0 && deltaHeight === 0) ? null
+ : { deltaWidth : deltaWidth, deltaHeight : deltaHeight };
+};
+
+// __shrinkwrap(window)__.
+// Shrinks the window so that it encloses the gBrowser with no gaps.
+let shrinkwrap = function* (window) {
+ // Maximized windows in Linux and Windows need to be demaximized first.
+ if (gaps(window) &&
+ window.windowState === 1 && /* maximized */
+ Services.appinfo.OS !== "Darwin") {
+ if (Services.appinfo.OS !== "WINNT") {
+ // Linux windows need an extra jolt out of maximized mode.
+ window.moveBy(1,1);
+ }
+ // If window has been maximized, demaximize by shrinking it to
+ // fit within the available screen area.
+ yield reshape(window,
+ {left : window.screen.availLeft + 1,
+ top : window.screen.availTop + 1,
+ width : window.screen.availWidth - 2,
+ height : window.screen.availHeight - 2},
+ 500);
+ }
+ // Figure out what size change we need.
+ let currentGaps = gaps(window);
+ if (currentGaps) {
+ // Now resize to close the gaps.
+ yield reshape(window,
+ {width : (window.outerWidth - currentGaps.deltaWidth),
+ height : (window.outerHeight - currentGaps.deltaHeight)},
+ 500);
+ }
+};
+
+// __updateContainerAppearance(container, on)__.
+// Get the color and position of margins right.
+let updateContainerAppearance = function (container, on) {
+ // Align the browser at top left, so any gray margin will be visible
+ // at right and bottom. Except in fullscreen, where we have black
+ // margins and gBrowser in top center.
+ container.align = on ? (window.fullScreen ? "center" : "start")
+ : "";
+ container.pack = on ? "start" : "";
+ container.style.backgroundColor = on ? (window.fullScreen ? "Black"
+ : "DimGray")
+ : "";
+};
+
+// __fixWindow(window)__.
+// An async function for Task.jsm. Makes sure the window looks okay
+// given the quantized browser element.
+let fixWindow = function* (window) {
+ updateContainerAppearance(window.gBrowser.parentElement, true);
+ if (!window.fullScreen) {
+ yield shrinkwrap(window);
+ if (Services.appinfo.OS !== "Darwin" && Services.appinfo.OS !== "WINNT") {
+ // Linux tends to require us to rebuild the window, or we might be
+ // left with a large useless white area on the screen.
+ yield rebuild(window);
+ }
+ }
+};
+
+// __autoresize(window, stepMs)__.
+// Do what it takes to eliminate the gray margin around the gBrowser inside
+// window. Periodically (stepMs) attempt to shrink the window. Runs
+// as a Task.jsm coroutine.
+let autoresize = function (window, stepMs) {
+ let stop = false;
+ Task.spawn(function* () {
+ while (!stop) {
+ // Do nothing until the user starts to resize window.
+ let event = yield listen(window, "resize", true);
+ // Here we wrestle with the window size. If the user has released the
+ // mouse cursor on the window's drag/resize handle, then fixWindow
+ // will resize the window on its first call. Unfortunately, on some
+ // OSs, the window resize fails if the user is still holding on
+ // to the drag-resize handle. Even more unfortunately, the
+ // only way to know that the user no longer has the mouse down
+ // on the window's drag/resize handle is if we detect the mouse
+ // cursor inside the window. So until the window fires a mousemove
+ // event, we repeatedly call fixWindow every stepMs.
+ while (event.type !== "mousemove") {
+ event = yield Promise.race(
+ [listen(window, "resize", true, stepMs),
+ listen(window, "mousemove", true, stepMs)]);
+ // If the user has stopped resizing the window after `stepMs`, then we can resize
+ // the window so no gray margin is visible.
+ if (event.type === "timeout" || event.type === "mousemove") {
+ yield fixWindow(window);
+ }
+ }
+ }
+ });
+ return () => { stop = true; };
+};
+
+// __updateDimensions(gBrowser, xStep, yStep)__.
+// Changes the width and height of the gBrowser XUL element to be a multiple of x/yStep.
+let updateDimensions = function (gBrowser, xStep, yStep) {
+ // TODO: Get zooming to work such that it doesn't cause the window
+ // to continuously shrink.
+ // We'll use something like:
+ // let winUtils = gBrowser.contentWindow
+ // .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
+ // .getInterface(Components.interfaces.nsIDOMWindowUtils),
+ // zoom = winUtils.screenPixelsPerCSSPixel,
+ let zoom = 1,
+ parentWidth = gBrowser.parentElement.clientWidth,
+ parentHeight = gBrowser.parentElement.clientHeight,
+ targetContentWidth = largestMultipleLessThan(xStep, parentWidth / zoom),
+ targetContentHeight = largestMultipleLessThan(yStep, parentHeight / zoom),
+ targetBrowserWidth = targetContentWidth * zoom,
+ targetBrowserHeight = targetContentHeight * zoom;
+ // Because gBrowser is inside a vbox, width and height behave differently. It turns
+ // out we need to set `gBrowser.width` and `gBrowser.maxHeight`.
+ gBrowser.width = targetBrowserWidth;
+ gBrowser.maxHeight = targetBrowserHeight;
+ // If the content window's innerWidth/innerHeight failed to updated correctly,
+ // then jog the gBrowser width/height. (With zoom there may also be a rounding
+ // error, but we can't do much about that.)
+ if (gBrowser.contentWindow.innerWidth !== targetContentWidth ||
+ gBrowser.contentWindow.innerHeight !== targetContentHeight) {
+ gBrowser.width = targetBrowserWidth + 1;
+ gBrowser.maxHeight = gBrowser.targetBrowserHeight + 1;
+ gBrowser.width = targetBrowserWidth;
+ gBrowser.maxHeight = targetBrowserHeight;
+ }
+ logger.eclog(3, "zoom " + zoom + "X" +
+ " chromeWin " + window.outerWidth + "x" + window.outerHeight +
+ " container " + parentWidth + "x" + parentHeight +
+ " gBrowser " + gBrowser.clientWidth + "x" + gBrowser.clientHeight +
+ " content " + gBrowser.contentWindow.innerWidth + "x" + gBrowser.contentWindow.innerHeight);
+};
+
+// __quantizeBrowserSizeNow(window, xStep, yStep)__.
+// Ensures that gBrowser width and height are multiples of xStep and yStep, and always as
+// large as possible inside the chrome window.
+let quantizeBrowserSizeNow = function (window, xStep, yStep) {
+ let gBrowser = window.gBrowser,
+ container = window.gBrowser.parentElement,
+ updater = event => updateDimensions(gBrowser, xStep, yStep),
+ originalMinWidth = gBrowser.minWidth,
+ originalMinHeight = gBrowser.minHeight,
+ stopAutoresizing,
+ activate = function (on) {
+ // Don't let the browser shrink below a single xStep x yStep size.
+ gBrowser.minWidth = on ? xStep : originalMinWidth;
+ gBrowser.minHeight = on ? yStep : originalMinHeight;
+ updateContainerAppearance(container, on);
+ if (on) {
+ // Quantize browser size on activation.
+ updateDimensions(gBrowser, xStep, yStep);
+ shrinkwrap(window);
+ // Quantize browser size at subsequent resize events.
+ window.addEventListener("resize", updater, false);
+ stopAutoresizing = autoresize(window, 250);
+ } else {
+ if (stopAutoresizing) stopAutoresizing();
+ // Ignore future resize events.
+ window.removeEventListener("resize", updater, false);
+ // Let gBrowser expand with its parent vbox.
+ gBrowser.width = "";
+ gBrowser.maxHeight = "";
+ }
+ };
+ bindPrefAndInit("extensions.torbutton.resize_windows", activate);
+};
+
+let onLoad = () => quantizeBrowserSizeNow(window, xStep, yStep);
+window.gBrowser.addEventListener("load", onLoad, true);
+return () => window.gBrowser.removeEventListener("load", onLoad, true);
+
+// quantizeBrowserSizeOnLoad
+};
diff --git a/src/chrome/content/tor-circuit-display.js b/src/chrome/content/tor-circuit-display.js
index 8997757..917f1f0 100644
--- a/src/chrome/content/tor-circuit-display.js
+++ b/src/chrome/content/tor-circuit-display.js
@@ -32,6 +32,9 @@ Cu.import("resource://gre/modules/Task.jsm");
// Import the controller code.
let { controller } = Cu.import("resource://torbutton/modules/tor-control-port.js");
+// Utility functions
+let { bindPrefAndInit } = Cu.import("resource://torbutton/modules/utils.js");
+
// Make the TorButton logger available.
let logger = Cc["@torproject.org/torbutton-logger;1"]
.getService(Components.interfaces.nsISupports).wrappedJSObject;
@@ -303,38 +306,6 @@ let syncDisplayWithSelectedTab = (function() {
};
})();
-// ## Pref utils
-
-// __prefs__. A shortcut to Mozilla Services.prefs.
-let prefs = Services.prefs;
-
-// __getPrefValue(prefName)__
-// Returns the current value of a preference, regardless of its type.
-let getPrefValue = function (prefName) {
- switch(prefs.getPrefType(prefName)) {
- case prefs.PREF_BOOL: return prefs.getBoolPref(prefName);
- case prefs.PREF_INT: return prefs.getIntPref(prefName);
- case prefs.PREF_STRING: return prefs.getCharPref(prefName);
- default: return null;
- }
-};
-
-// __bindPrefAndInit(prefName, prefHandler)__
-// Applies prefHandler to the current value of pref specified by prefName.
-// Re-applies prefHandler whenever the value of the pref changes.
-// Returns a zero-arg function that unbinds the pref.
-let bindPrefAndInit = function (prefName, prefHandler) {
- let update = () => { prefHandler(getPrefValue(prefName)); },
- observer = { observe : function (subject, topic, data) {
- if (data === prefName) {
- update();
- }
- } };
- prefs.addObserver(prefName, observer, false);
- update();
- return () => { prefs.removeObserver(prefName, observer); };
-};
-
// ## Main function
// setupDisplay(host, port, password, enablePrefName)__.
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index 83ea395..44f62aa 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -636,6 +636,8 @@ function torbutton_init() {
createTorCircuitDisplay(m_tb_control_host, m_tb_control_port, m_tb_control_pass,
"extensions.torbutton.display_circuit");
+ quantizeBrowserSizeOnLoad(window, 200, 100);
+
torbutton_log(3, 'init completed');
}
diff --git a/src/chrome/content/torbutton.xul b/src/chrome/content/torbutton.xul
index 5da3439..a9d60f6 100644
--- a/src/chrome/content/torbutton.xul
+++ b/src/chrome/content/torbutton.xul
@@ -9,6 +9,7 @@
<script type="application/x-javascript" src="chrome://torbutton/content/torbutton_util.js" />
<script type="application/x-javascript" src="chrome://torbutton/content/tor-circuit-display.js" />
+ <script type="application/x-javascript" src="chrome://torbutton/content/content-sizer.js" />
<script type="application/x-javascript" src="chrome://torbutton/content/torbutton.js" />
<script language="JavaScript">
//onLoad Hander
diff --git a/src/defaults/preferences/preferences.js b/src/defaults/preferences/preferences.js
index 2c109ee..85fd953 100644
--- a/src/defaults/preferences/preferences.js
+++ b/src/defaults/preferences/preferences.js
@@ -159,6 +159,7 @@ pref("extensions.torbutton.close_newnym",true);
pref("extensions.torbutton.block_js_history",true);
pref("extensions.torbutton.resize_on_toggle",true);
pref("extensions.torbutton.resize_new_windows",true);
+pref("extensions.torbutton.resize_windows",true);
pref("extensions.torbutton.banned_ports","9050,9051,9150,9151");
pref("extensions.torbutton.block_tor_file_net",true);
pref("extensions.torbutton.block_nontor_file_net",false);
diff --git a/src/modules/utils.js b/src/modules/utils.js
new file mode 100644
index 0000000..7a27326
--- /dev/null
+++ b/src/modules/utils.js
@@ -0,0 +1,43 @@
+// # Utils.js
+// Various helpful utility functions.
+
+// ### Shortcut
+const Cu = Components.utils;
+
+// ### Import Mozilla Services
+Cu.import("resource://gre/modules/Services.jsm");
+
+// ## Pref utils
+
+// __prefs__. A shortcut to Mozilla Services.prefs.
+let prefs = Services.prefs;
+
+// __getPrefValue(prefName)__
+// Returns the current value of a preference, regardless of its type.
+let getPrefValue = function (prefName) {
+ switch(prefs.getPrefType(prefName)) {
+ case prefs.PREF_BOOL: return prefs.getBoolPref(prefName);
+ case prefs.PREF_INT: return prefs.getIntPref(prefName);
+ case prefs.PREF_STRING: return prefs.getCharPref(prefName);
+ default: return null;
+ }
+};
+
+// __bindPrefAndInit(prefName, prefHandler)__
+// Applies prefHandler to the current value of pref specified by prefName.
+// Re-applies prefHandler whenever the value of the pref changes.
+// Returns a zero-arg function that unbinds the pref.
+let bindPrefAndInit = function (prefName, prefHandler) {
+ let update = () => { prefHandler(getPrefValue(prefName)); },
+ observer = { observe : function (subject, topic, data) {
+ if (data === prefName) {
+ update();
+ }
+ } };
+ prefs.addObserver(prefName, observer, false);
+ update();
+ return () => { prefs.removeObserver(prefName, observer); };
+};
+
+// Export utility functions for external use.
+let EXPORTED_SYMBOLS = ["bindPrefAndInit", "getPrefValue"];
1
0

[torbutton/master] Bump version to 1.9.1.0 and add Changelog entries.
by mikeperry@torproject.org 27 Mar '15
by mikeperry@torproject.org 27 Mar '15
27 Mar '15
commit 96b56ba026b19269c08251aa0e7e2887a10c68c2
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Thu Mar 26 19:35:10 2015 -0700
Bump version to 1.9.1.0 and add Changelog entries.
---
src/CHANGELOG | 20 ++++++++++++++++++++
src/install.rdf | 2 +-
2 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/src/CHANGELOG b/src/CHANGELOG
index 97db954..e9b5c6b 100644
--- a/src/CHANGELOG
+++ b/src/CHANGELOG
@@ -1,3 +1,23 @@
+1.9.1.0:
+ * Bug 9387: "Security Slider 1.0"
+ * Include descriptions and tooltip hints for security levels
+ * Notify users that the security slider exists
+ * Flip slider so that "low" is on the bottom
+ * Make use of new SVG and MathML prefs
+ * Bug 13766: Set a 10 minute circuit lifespan for non-content requests
+ * Bug 15460: Ensure FTP urls use content-window circuit isolation
+ * Bug 13650: Clip initial window height to 1000px
+ * Bug 14429: Ensure windows can only be resized to 200x100px multiples
+ * Bug 15334: Display Cookie Protections menu if disk records are enabled
+ * Bug 14324: Show HS circuit in Tor circuit display
+ * Bug 15086: Handle RTL text in Tor circuit display
+ * Bug 15085: Fix about:tor RTL text alignment problems
+ * Bug 10216: Add a pref to disable the local tor control port test
+ * Bug 14937: Show meek and flashproxy bridges in tor circuit display
+ * Bugs 13891+15207: Fix exceptions/errors in circuit display with bridges
+ * Bug 13019: Change locale hiding pref to boolean
+ * Bug 7255: Warn users about maximizing windows (off by default)
+
1.9.0.0
* Bug 13882: Fix display of bridges after bridge settings have been changed
* Bug 5698: Use "Tor Browser" branding in "About Tor Browser" dialog
diff --git a/src/install.rdf b/src/install.rdf
index b5a8e88..94245a0 100644
--- a/src/install.rdf
+++ b/src/install.rdf
@@ -6,7 +6,7 @@
<em:name>Torbutton</em:name>
<em:creator>Mike Perry</em:creator>
<em:id>torbutton(a)torproject.org</em:id>
- <em:version>1.9.0.0</em:version>
+ <em:version>1.9.1.0</em:version>
<em:homepageURL>https://www.torproject.org/projects/torbrowser.html.en</em:homepageURL>
<em:optionsURL>chrome://torbutton/content/preferences.xul</em:optionsURL>
<em:iconURL>chrome://torbutton/skin/tor.png</em:iconURL>
1
0

27 Mar '15
commit 0dbb6e57791c171c54d6aadcce56f9953e4ae7a6
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Thu Mar 26 19:39:44 2015 -0700
Update translations for 1.9.1.0.
---
src/chrome/locale/ar/aboutTor.dtd | 28 ++--
src/chrome/locale/ar/brand.dtd | 8 +-
src/chrome/locale/ar/brand.properties | 2 +-
src/chrome/locale/ar/torbutton.dtd | 151 +++++++++++++---------
src/chrome/locale/ar/torbutton.properties | 36 ++++--
src/chrome/locale/de/aboutTor.dtd | 4 +-
src/chrome/locale/de/torbutton.dtd | 31 ++++-
src/chrome/locale/de/torbutton.properties | 20 ++-
src/chrome/locale/es/aboutTor.dtd | 12 +-
src/chrome/locale/es/torbutton.dtd | 27 ++++
src/chrome/locale/es/torbutton.properties | 14 ++
src/chrome/locale/eu/torbutton.dtd | 29 ++++-
src/chrome/locale/eu/torbutton.properties | 14 ++
src/chrome/locale/fa/aboutTor.dtd | 2 +-
src/chrome/locale/fa/torbutton.dtd | 51 ++++++--
src/chrome/locale/fa/torbutton.properties | 14 ++
src/chrome/locale/fr/torbutton.dtd | 39 +++++-
src/chrome/locale/fr/torbutton.properties | 24 +++-
src/chrome/locale/it/aboutTor.dtd | 2 +-
src/chrome/locale/it/torbutton.dtd | 39 +++++-
src/chrome/locale/it/torbutton.properties | 22 +++-
src/chrome/locale/ja/torbutton.dtd | 27 ++++
src/chrome/locale/ja/torbutton.properties | 14 ++
src/chrome/locale/ko/torbutton.dtd | 27 ++++
src/chrome/locale/ko/torbutton.properties | 22 +++-
src/chrome/locale/nl/torbutton.dtd | 27 ++++
src/chrome/locale/nl/torbutton.properties | 14 ++
src/chrome/locale/pl/torbutton.dtd | 27 ++++
src/chrome/locale/pl/torbutton.properties | 14 ++
src/chrome/locale/pt/aboutTor.dtd | 30 ++---
src/chrome/locale/pt/browser.properties | 2 +-
src/chrome/locale/pt/torbutton.dtd | 39 +++++-
src/chrome/locale/pt/torbutton.properties | 28 +++-
src/chrome/locale/ru/aboutTor.dtd | 32 ++---
src/chrome/locale/ru/brand.dtd | 2 +-
src/chrome/locale/ru/torbutton.dtd | 177 +++++++++++++++-----------
src/chrome/locale/ru/torbutton.properties | 18 ++-
src/chrome/locale/sv/torbutton.dtd | 39 +++++-
src/chrome/locale/sv/torbutton.properties | 20 ++-
src/chrome/locale/tr/torbutton.dtd | 33 ++++-
src/chrome/locale/tr/torbutton.properties | 20 ++-
src/chrome/locale/vi/torbutton.dtd | 27 ++++
src/chrome/locale/vi/torbutton.properties | 14 ++
src/chrome/locale/zh-CN/aboutTor.dtd | 2 +-
src/chrome/locale/zh-CN/torbutton.dtd | 31 ++++-
src/chrome/locale/zh-CN/torbutton.properties | 18 ++-
46 files changed, 985 insertions(+), 288 deletions(-)
diff --git a/src/chrome/locale/ar/aboutTor.dtd b/src/chrome/locale/ar/aboutTor.dtd
index da6be21..4ca0c02 100644
--- a/src/chrome/locale/ar/aboutTor.dtd
+++ b/src/chrome/locale/ar/aboutTor.dtd
@@ -6,15 +6,15 @@
<!ENTITY aboutTor.title "عن تور">
-<!ENTITY aboutTor.outOfDateTorOn.label "ومع ذلك، هذا المتصفح قديم.">
-<!ENTITY aboutTor.outOfDateTorOff.label "أيضاً، هذا المتصفح قديم.">
-<!ENTITY aboutTor.outOfDate2.label "Click on the onion and then choose Check for Tor Browser Update.">
+<!ENTITY aboutTor.outOfDateTorOn.label "ومع ذلك، هذه نسخة قديمة من المتصفح.">
+<!ENTITY aboutTor.outOfDateTorOff.label "أيضاً، هذه نسخة قديمة من المتصفح.">
+<!ENTITY aboutTor.outOfDate2.label "اضغط على رمز البصلة ثم اختر "تحقق من تحديثات متصفح تور"">
<!ENTITY aboutTor.check.label "اختبر إعدادات شبكة تور.">
<!ENTITY aboutTor.success.label "تهانينا!">
-<!ENTITY aboutTor.success2.label "هذا المتصفح معد لاستخدام شبكة تور.">
-<!ENTITY aboutTor.success3.label "انت الآن حر في تصفح شبكة الإنترنت بشكل مجهول.">
+<!ENTITY aboutTor.success2.label "هذا المتصفح معدّ لاستخدام شبكة تور.">
+<!ENTITY aboutTor.success3.label "يمكنك الآن تصفح الانترنت بشكل يحمي هويتك.">
<!ENTITY aboutTor.failure.label "حدث خطأ ما!">
<!ENTITY aboutTor.failure2.label "تور لا يعمل في هذا المتصفح.">
<!ENTITY aboutTor.failure3prefix.label "للمساعدة، يرجى مراسلة ">
@@ -25,25 +25,25 @@
<!ENTITY aboutTor.searchSPPost.link "https://startpage.com/rth/search">
<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
-<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
+<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
<!ENTITY aboutTor.torInfo1.label "معلومات إضافية:">
<!ENTITY aboutTor.torInfo2.label "الدولة وعنوان الإنترنت:">
<!ENTITY aboutTor.torInfo3.label "نقطة الخروج:">
-<!ENTITY aboutTor.torInfo4.label "هذا الخادم لا يسجل أي معلومات عن الزوار.">
+<!ENTITY aboutTor.torInfo4.label "هذا المخدم لا يحتفظ بأي معلومات عن زواره.">
<!ENTITY aboutTor.whatnextQuestion.label "ماذا بعد؟">
-<!ENTITY aboutTor.whatnextAnswer.label "تور ليس كل شيء تحتاجه حتى تتصفح بصفة مجهولة! قد تحتاج لتغيير بعد عاداتك أثناء التصفح لضمان اخفاء هويتك.">
-<!ENTITY aboutTor.whatnext.label "نصائح للبقاء مجهولاً »">
+<!ENTITY aboutTor.whatnextAnswer.label "لا يمثل تور كل ما تحتاجه للتصفح بشكل يحمي هويتك! قد تحتاج لتغيير بعد عاداتك أثناء التصفّح لضمان سرية هويتك.">
+<!ENTITY aboutTor.whatnext.label "نصائح للحفاظ على سريّة هويتك »">
<!ENTITY aboutTor.whatnext.link "https://www.torproject.org/download/download.html.en#warning">
-<!ENTITY aboutTor.helpInfo1.label "يمكنك المساعدة!">
-<!ENTITY aboutTor.helpInfo2.label "يمكنك مساعدة شبكة تور و جعلها اسرع و اقوي بإحدي الطرق الآتية:">
-<!ENTITY aboutTor.helpInfo3.label "شغل نقطة تور مُرحله »">
+<!ENTITY aboutTor.helpInfo1.label "بإمكانك المساعدة!">
+<!ENTITY aboutTor.helpInfo2.label "يمكنك مساعدة شبكة تور و جعلها أكثر سرعة و قوّة بإحدي الطرق الآتية:">
+<!ENTITY aboutTor.helpInfo3.label "شغّل نقطة تور »">
<!ENTITY aboutTor.helpInfo3.link "https://www.torproject.org/docs/tor-doc-relay.html.en">
<!ENTITY aboutTor.helpInfo4.label "تبرع بخدماتك »">
<!ENTITY aboutTor.helpInfo4.link "https://www.torproject.org/getinvolved/volunteer.html.en">
<!ENTITY aboutTor.helpInfo5.label "تبرع »">
<!ENTITY aboutTor.helpInfo5.link "https://www.torproject.org/donate/donate.html.en">
-<!ENTITY aboutTor.footer.label "مشروع تور هو ‭US 501(c)(3)‬ غير ربحي مُكرس للبحث، و التطوير، و التوعية بإخفاء الهوية والخصوصية.">
-<!ENTITY aboutTor.learnMore.label "تعلم المزيد عن مشروع تور »">
+<!ENTITY aboutTor.footer.label "مشروع تور هو مشروع غير ربحي (حسب US 501(c)(3)) مُكرس للبحث، والتطوير، والتوعية حول موضوع إخفاء الهوية والخصوصية.">
+<!ENTITY aboutTor.learnMore.label "اقرأ المزيد عن مشروع تور »">
<!ENTITY aboutTor.learnMore.link "https://www.torproject.org/about/overview.html.en">
diff --git a/src/chrome/locale/ar/brand.dtd b/src/chrome/locale/ar/brand.dtd
index b599c91..4504761 100644
--- a/src/chrome/locale/ar/brand.dtd
+++ b/src/chrome/locale/ar/brand.dtd
@@ -8,7 +8,7 @@
<!ENTITY trademarkInfo.part1 "فايرفوكس وشعارات فايرفوكس علامات تجارية مسجلة لمؤسسة موزيلا.">
<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
-<!ENTITY plugins.installed.find "Click to load installed system plugins">
-<!ENTITY plugins.installed.enable "Enable plugins">
-<!ENTITY plugins.installed.disable "Disable plugins">
-<!ENTITY plugins.installed.disable.tip "Click to prevent loading system plugins">
+<!ENTITY plugins.installed.find "اضغط لتحميل الإضافات المثبتة على المتصفح">
+<!ENTITY plugins.installed.enable "تمكين الإضافات">
+<!ENTITY plugins.installed.disable "تعطيل الإضافات ">
+<!ENTITY plugins.installed.disable.tip "انقر لمنع تحميل الإضافات المثبتة على المتصفح">
diff --git a/src/chrome/locale/ar/brand.properties b/src/chrome/locale/ar/brand.properties
index 8f783fa..b1b159d 100644
--- a/src/chrome/locale/ar/brand.properties
+++ b/src/chrome/locale/ar/brand.properties
@@ -10,6 +10,6 @@ homePageSingleStartMain=صفحة بدء فايرفوكس، صفحة رئيسية
homePageImport=استورد الصفحة الرئيسية من %S
homePageMigrationPageTitle=اختيار الصفحة الرئيسية
-homePageMigrationDescription=فضلاً، قم باختيار الصفحة الرئيسية التي ترغب في استعمالها:
+homePageMigrationDescription=لو سمحت، قم باختيار الصفحة الرئيسية التي ترغب في استعمالها:
syncBrandShortName=مزامنة
diff --git a/src/chrome/locale/ar/torbutton.dtd b/src/chrome/locale/ar/torbutton.dtd
index 2928c62..bf5e04f 100644
--- a/src/chrome/locale/ar/torbutton.dtd
+++ b/src/chrome/locale/ar/torbutton.dtd
@@ -1,80 +1,80 @@
<!ENTITY torbutton.prefs.title "تفضيلات زر تور">
-<!ENTITY torbutton.prefs.tor_settings "إعدادات الوسيط">
-<!ENTITY torbutton.prefs.recommended_settings "استخدم إعدادات الوسيط المحبّذة لنسختي من فيرفكس">
+<!ENTITY torbutton.prefs.tor_settings "إعدادات البروكسي">
+<!ENTITY torbutton.prefs.recommended_settings "استخدم إعدادات البروكسي المحبّذة لهذه النسخة من فايرفكس">
<!ENTITY torbutton.prefs.use_privoxy "استخدم Privoxy">
<!ENTITY torbutton.prefs.use_polipo "استخدم Polipo">
-<!ENTITY torbutton.prefs.custom_settings "استخدم إعدادات وسيط مخصصة">
-<!ENTITY torbutton.prefs.proxy.host.http "وسيط HTTP:">
-<!ENTITY torbutton.prefs.proxy.host.https "وسيط SSL:">
-<!ENTITY torbutton.prefs.proxy.host.ftp "وسيط FTP:">
-<!ENTITY torbutton.prefs.proxy.host.gopher "وسيط Gopher:">
-<!ENTITY torbutton.prefs.proxy.host.socks "وسيط SOCKS:">
-<!ENTITY torbutton.prefs.proxy.port "المنفذ:">
+<!ENTITY torbutton.prefs.custom_settings "استخدم إعدادات بروكسي مخصصة">
+<!ENTITY torbutton.prefs.proxy.host.http "بروكسي HTTP:">
+<!ENTITY torbutton.prefs.proxy.host.https "بروكسي SSL:">
+<!ENTITY torbutton.prefs.proxy.host.ftp "بروكسي FTP:">
+<!ENTITY torbutton.prefs.proxy.host.gopher "بروكسي Gopher:">
+<!ENTITY torbutton.prefs.proxy.host.socks "بروكسي SOCKS:">
+<!ENTITY torbutton.prefs.proxy.port "البوابة:">
<!ENTITY torbutton.about.title "عن زر تور">
<!ENTITY torbutton.about.version "الإصدار :">
-<!ENTITY torbutton.about.summary "إحمي خصوصية تصفحك لتور">
-<!ENTITY torbutton.about.code "المساهمون في الشفرة المصدرية :">
-<!ENTITY torbutton.about.maintainer "صائن:">
-<!ENTITY torbutton.about.security_review "المراجعة الامنية :">
-<!ENTITY torbutton.about.donate "إذا كنت تحب إستخدام تور ، قد تفكر في">
-<!ENTITY torbutton.about.make_donation "قم بالتبرع .">
-<!ENTITY torbutton.pref_connection.notice "عطل زر تور لتغيير هذه الإعدادات.">
+<!ENTITY torbutton.about.summary "يحمي خصوصية تصفحك عبر تور">
+<!ENTITY torbutton.about.code "المساهمون في كتابة وتطوير تعليمات البرمجة:">
+<!ENTITY torbutton.about.maintainer "المشرف على الصيانة:">
+<!ENTITY torbutton.about.security_review "المراجعة الأمنية :">
+<!ENTITY torbutton.about.donate "إذا كنت تحب استخدام تور، قد تفكّر في">
+<!ENTITY torbutton.about.make_donation "التبرّع.">
+<!ENTITY torbutton.pref_connection.notice "عطّل زر تور لتغيير هذه الإعدادات.">
<!ENTITY torbutton.pref_connection.more_info "مزيد من المعلومات">
<!ENTITY torbutton.pref_connection_more_info.title "التعليمات">
-<!ENTITY torbutton.pref_connection_more_info.text "زر تور مفعّل حاليًا. إن كنت تريد تغيير إعدادات الوسيط غير المتعلقة بتور، فضلاً عطل زر تور أولاً ثم عد إلى هنا. إن كنت تريد تعديل إعدادات زر تور فاستخدم نافذة تفضيلات زر تور.">
+<!ENTITY torbutton.pref_connection_more_info.text "زر تور مفعّل حاليًا. إذا كنت تريد تغيير إعدادات البروكسي غير المتعلقة بتور، فضلاً عطل زر تور أولاً ثم عد إلى هنا. إن كنت تريد تعديل إعدادات زر تور فاستخدم نافذة تفضيلات زر تور.">
<!ENTITY torbutton.context_menu.new_identity "هوية جديدة">
-<!ENTITY torbutton.context_menu.new_identity_key "أنا">
-<!ENTITY torbutton.context_menu.new_circuit "New Tor Circuit for this Site">
+<!ENTITY torbutton.context_menu.new_identity_key "I">
+<!ENTITY torbutton.context_menu.new_circuit "دائرة تور جديدة لهذا الموقع">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
-<!ENTITY torbutton.context_menu.toggle "بدّل حالة تور">
-<!ENTITY torbutton.context_menu.toggle.key "ت">
-<!ENTITY torbutton.context_menu.preferences "Privacy and Security Settings…">
-<!ENTITY torbutton.context_menu.preferences.key "ف">
+<!ENTITY torbutton.context_menu.toggle "بدّل حالة تفعيل تور">
+<!ENTITY torbutton.context_menu.toggle.key "T">
+<!ENTITY torbutton.context_menu.preferences "إعدادات الخصوصية والأمان...">
+<!ENTITY torbutton.context_menu.preferences.key "P">
<!ENTITY torbutton.context_menu.about "عن زر تور...">
-<!ENTITY torbutton.context_menu.about.key "ح">
-<!ENTITY torbutton.context_menu.networksettings "Tor Network Settings…">
-<!ENTITY torbutton.context_menu.networksettings.key "ح">
-<!ENTITY torbutton.context_menu.downloadUpdate "Check for Tor Browser Update…">
-<!ENTITY torbutton.context_menu.downloadUpdate.key "ت">
-<!ENTITY torbutton.context_menu.cookieProtections "Cookie Protections…">
+<!ENTITY torbutton.context_menu.about.key "A">
+<!ENTITY torbutton.context_menu.networksettings "إعدادات شبكة تور...">
+<!ENTITY torbutton.context_menu.networksettings.key "S">
+<!ENTITY torbutton.context_menu.downloadUpdate "تحقق من تحديثات متصفح تور...">
+<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
+<!ENTITY torbutton.context_menu.cookieProtections "إعدادات أمان ملفات تعريف الارتباط...">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.context_menu.copyTor "نسخ رابط تور">
<!ENTITY torbutton.context_menu.copyTor.key "p">
-<!ENTITY torbutton.context_menu.openTorTab "فتح عنوان تور في علامة تبويب جديدة">
+<!ENTITY torbutton.context_menu.openTorTab "فتح عنوان تور في صفحة تبويب جديدة">
<!ENTITY torbutton.context_menu.openTorTab.key "r">
<!ENTITY torbutton.context_menu.openTorWindow "فتح عنوان تور في نافذة جديدة">
<!ENTITY torbutton.context_menu.openTorWindow.key "d">
<!ENTITY torbutton.button.label "زر تور">
<!ENTITY torbutton.button.tooltip "انقر لبدء زر تور">
-<!ENTITY torbutton.prefs.privacy_security_settings "إعدادات الأمان والخصوصية">
-<!ENTITY torbutton.prefs.block_thread "امنع قراءة تاريخ التصفح أثناء عمل تور (حَرِج)">
-<!ENTITY torbutton.prefs.block_thwrite "امنع كتابة تاريخ التصفح أثناء عمل تور (محبّذ)">
-<!ENTITY torbutton.prefs.block_nthread "امنع قراءة تاريخ التصفح أثناء توقف تور (اختياري)">
-<!ENTITY torbutton.prefs.block_nthwrite "امنع كتابة تاريخ التصفح أثناء توقف تور (اختياري)">
-<!ENTITY torbutton.prefs.clear_history "امسح تاريخ التصفح عند تغير حالة تور (اختياري)">
-<!ENTITY torbutton.prefs.clear_cache "امنع الاختزان على القرص مع تور وامسح كل البيانات عند تبديل حالة تور">
+<!ENTITY torbutton.prefs.privacy_security_settings "إعدادات الأمان والخصوصيّة">
+<!ENTITY torbutton.prefs.block_thread "امنع قراءة سجل التصفح أثناء عمل تور (ضروري جدا)">
+<!ENTITY torbutton.prefs.block_thwrite "امنع كتابة سجل التصفح أثناء عمل تور (محبّذ)">
+<!ENTITY torbutton.prefs.block_nthread "امنع قراءة سجل التصفح أثناء توقف تور (اختياري)">
+<!ENTITY torbutton.prefs.block_nthwrite "امنع كتابة سجل التصفح أثناء توقف تور (اختياري)">
+<!ENTITY torbutton.prefs.clear_history "امسح سجل التصفح عند تغير حالة تفعيل تور (اختياري)">
+<!ENTITY torbutton.prefs.clear_cache "امنع Tor من تخزين البيانات بشكل مؤقت على القرص وامسح كل البيانات المؤقتة عند تبديل حالة تور">
<!ENTITY torbutton.prefs.block_cache "امنع الولوج إلى بيانات تور على القرص و الذاكرة أثناء عمل تور">
-<!ENTITY torbutton.prefs.cookie_jars "احفظ كعكات سوى تور في وعاء آمن ">
-<!ENTITY torbutton.prefs.cookie_protection "استخدام حوار كعكة الحماية للاختيار">
-<!ENTITY torbutton.prefs.mmm_cookies "سأدير الكعكات يدويًا (حَرِج)">
-<!ENTITY torbutton.prefs.clear_cookies "امسح الكعكات عند تبديل حالة تور">
+<!ENTITY torbutton.prefs.cookie_jars "احفظ ملفات تعريف الارتباط (كوكيز) غير المرتبطة بتصفح تور في وعاء آمن ">
+<!ENTITY torbutton.prefs.cookie_protection "استخدام نافذة حوار إعدادات حماية ملفات تعريف الارتابط لاختيار">
+<!ENTITY torbutton.prefs.mmm_cookies "سأدير ملفات تعريف الارتباط بشكل يدوي (خطر)">
+<!ENTITY torbutton.prefs.clear_cookies "امسح ملفات تعريف الارتباط (كوكيز) عند تبديل حالة تفييل تور">
<!ENTITY torbutton.prefs.disable_plugins "عطّل الملحقات أثناء عمل التور (حَرِج)">
<!ENTITY torbutton.prefs.kill_bad_js "احجز جافاسكربت الخطرة (حَرِج)">
<!ENTITY torbutton.prefs.isolate_content "اعزل المحتوى الحركي عن حالة تور (حَرِج)">
<!ENTITY torbutton.prefs.no_updates "عطل التحديثات أثناء استخدام تور">
<!ENTITY torbutton.prefs.set_uagent "اضبط وكبل المستخدم لعمل التور (حَرِج)">
-<!ENTITY torbutton.prefs.dynamic "المحتوى الحركي">
-<!ENTITY torbutton.prefs.cookies "الكعكات">
-<!ENTITY torbutton.prefs.cache "المخبأ">
+<!ENTITY torbutton.prefs.dynamic "المحتوى الديناميكي">
+<!ENTITY torbutton.prefs.cookies "ملفات تعريف الارتباط (كوكيز)">
+<!ENTITY torbutton.prefs.cache "البيانات المخزنة بشكل مؤقت">
<!ENTITY torbutton.prefs.history "السجل">
<!ENTITY torbutton.prefs.no_search "امنع اقتراحات البحث أثناء عمل التور (محبّذ)">
<!ENTITY torbutton.prefs.shutdown "أغلق المتصفح">
-<!ENTITY torbutton.prefs.tor_shutdown "امسح الكعكات عند إغلاق المتصفح أثناء عمل التور">
-<!ENTITY torbutton.prefs.all_shutdown "امسح الكعكات عند أي إغلاق للمتصفح">
-<!ENTITY torbutton.prefs.no_shutdown "لا تمسح الكعكات عند إغلاق المتصفح">
+<!ENTITY torbutton.prefs.tor_shutdown "امسح ملفات تعريف الارتباط (كوكيز) عند إغلاق المتصفح أثناء عمل التور">
+<!ENTITY torbutton.prefs.all_shutdown "امسح ملفات تعريف الارتباط (كوكيز) عند أي إغلاق للمتصفح">
+<!ENTITY torbutton.prefs.no_shutdown "لا تمسح ملفات تعريف الارتباط (كوكيز) عند إغلاق المتصفح">
<!ENTITY torbutton.prefs.disable_sessionstore "عطّل حفظ الجلسة (محبّذ)">
<!ENTITY torbutton.prefs.headers "الترويسات">
-<!ENTITY torbutton.prefs.spoof_english "انتحل متصفحًا إنجليزيًا أمريكيًا">
+<!ENTITY torbutton.prefs.spoof_english "انتحل صفة متصفح إنجليزي أمريكي">
<!ENTITY torbutton.prefs.refererspoofing "تزييف المرجع">
<!ENTITY torbutton.prefs.spoofblank "Spoof blank referer during Tor usage (may break some sites)">
<!ENTITY torbutton.prefs.smartspoof "محاكاة ساخرة ذكية للتحويل أثناء عمل تور (سخرية المجال المرجعي المتقاطع)">
@@ -83,10 +83,10 @@
<!ENTITY torbutton.prefs.forms "الإكمال التلقائي">
<!ENTITY torbutton.prefs.block_tforms "امنع حفظ كلمات السر و والإكمال التلقائي أثناء عمل التور (محبّذ)">
<!ENTITY torbutton.prefs.block_ntforms "امنع حفظ كلمات السر والإكمال التلقائي أثناء تعطل التور (اختياري)">
-<!ENTITY torbutton.prefs.tor "التور">
+<!ENTITY torbutton.prefs.tor "تور">
<!ENTITY torbutton.prefs.non_tor "التور معطل">
<!ENTITY torbutton.prefs.restore_tor "خلال بدء استعادة الجلسة، اضبط حالة التور إلى:">
-<!ENTITY torbutton.prefs.startup_tor "عند بدء التشغيل المتصفح ، تعيين جالة تور إلى:">
+<!ENTITY torbutton.prefs.startup_tor "عند بدء التشغيل المتصفح، غيّر جالة تور إلى:">
<!ENTITY torbutton.prefs.reload_crashed_jar "أعد تحميل وعاء الكعكات/امسح الكعكات عند انهيار فيرفكس (محبّذ)">
<!ENTITY torbutton.prefs.dual_cookie_jars "احفظ الكعكات عن تفعيل تور وعند تعطيله في أوعية محمية (خطر)">
<!ENTITY torbutton.prefs.clear_http_auth "امسح جلسات المصادقة لـ HTTP (محبّذ)">
@@ -107,11 +107,11 @@
<!ENTITY torbutton.prefs.test_settings "فحص الإعدادات">
<!ENTITY torbutton.prefs.test_auto "افحص إعدادات تور بعد أول تشغيل كل مرة يتم تشغيل فيرفكس">
<!ENTITY torbutton.prefs.disable_livemarks "Disable livemarks updates during Tor usage">
-<!ENTITY torbutton.prefs.tor_memory_jar "لا تحفظ الكعكات في القرص إذا كان التور مفعلًا">
-<!ENTITY torbutton.prefs.nontor_memory_jar "لا تحفظ الكعكات في القرص إن كان تور معطلًا">
+<!ENTITY torbutton.prefs.tor_memory_jar "لا تحفظ ملفات تعريف الارتباط (كوكيز) في القرص إذا كان التور مفعلًا">
+<!ENTITY torbutton.prefs.nontor_memory_jar "لا تحفظ ملفات تعريف الارتباط (كوكيز) في القرص إن كان تور معطلًا">
<!ENTITY torbutton.prefs.session_restore "حفظ الجلسة واستعادة هذه التبويبات:">
<!ENTITY torbutton.prefs.nontor_tabs "تبويبات محملة في وضع التور معطل">
-<!ENTITY torbutton.prefs.tor_tabs "تبويبات محملة باستخدام التور">
+<!ENTITY torbutton.prefs.tor_tabs "تبويبات محملة في وضع تور مفعل">
<!ENTITY torbutton.prefs.socks_vfour "SOCKS v4">
<!ENTITY torbutton.prefs.socks_vfive "SOCKS v5">
<!ENTITY torbutton.prefs.no_proxies_on "لا وسيط ل:">
@@ -122,27 +122,27 @@
<!ENTITY torbutton.prefs.spoofroot "محاكاة ساخرة المجلد الذي يحتوي على الصفحة">
<!ENTITY torbutton.prefs.spoofdomain "محاكاة ساخرة المجال مثل المرجعية">
<!ENTITY torbutton.prefs.spoofblank "Spoof blank referer during Tor usage (may break some sites)">
-<!ENTITY torbutton.cookiedialog.title "إدارة كعكات الحماية">
+<!ENTITY torbutton.cookiedialog.title "إدارة إعدادت الحماية لملفات تعريف الارتباط">
<!ENTITY torbutton.cookiedialog.lockCol "محمية">
<!ENTITY torbutton.cookiedialog.domainCol "استضافة">
<!ENTITY torbutton.cookiedialog.nameCol "اسم">
<!ENTITY torbutton.cookiedialog.pathCol "المسار">
-<!ENTITY torbutton.cookiedialog.protectCookie "كعكة الحماية">
-<!ENTITY torbutton.cookiedialog.removeCookie "إزالة الكعك">
-<!ENTITY torbutton.cookiedialog.unprotectCookie "إلغاء كعكة الحماية">
+<!ENTITY torbutton.cookiedialog.protectCookie "احم ملف تعريف الارتباط (كوكي)">
+<!ENTITY torbutton.cookiedialog.removeCookie "إزالة ملف تعريف الارتباط (كوكي)">
+<!ENTITY torbutton.cookiedialog.unprotectCookie "إلغاء حماية ملف تعريف الارتباط (كوكي)">
<!ENTITY torbutton.cookiedialog.removeAllBut "إزالة الكل لكن استمر في الحماية">
-<!ENTITY torbutton.cookiedialog.saveAllCookies "كعكة حماية جديدة">
-<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "لا تحمي الكعكات الجديدة">
+<!ENTITY torbutton.cookiedialog.saveAllCookies "احم ملفات تعريف الارتباط الجديدة">
+<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "لا تحم ملفات تعريف الارتباط الجديدة">
<!ENTITY torbutton.prefs.disable_livemarks "Disable livemarks updates during Tor usage">
<!ENTITY torbutton.prefs.dtd_recommended "(محبّذ)">
<!ENTITY torbutton.prefs.dtd_optional "(اختياري)">
-<!ENTITY torbutton.prefs.dtd_crucial "(حَرِج)">
+<!ENTITY torbutton.prefs.dtd_crucial "(ضروري جدا)">
<!ENTITY torbutton.prefs.update_torbutton_via_tor "أعد توجيه تحديثات زر تور خلال شبكة التور">
<!ENTITY torbutton.prefs.dodge_google_captcha "تلقائياً استخدم محرك بحث بديل عندما يتم إظهار كلمة التحقق الخاصة بقوقل (Google):">
<!ENTITY torbutton.prefs.engine1 "ixquick.com">
<!ENTITY torbutton.prefs.engine2 "Bing.com">
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
-<!ENTITY torbutton.prefs.engine4 "صفحة البداية">
+<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
<!ENTITY torbutton.prefs.fix_google_srch "أزل المنصة واللغة من استفسارات محرك بحث غوغل">
<!ENTITY torbutton.prefs.transparentTor "شفافية توريفكيشن (تحتاج موجه تور أو ترانسبوكسي مخصص)">
@@ -153,8 +153,35 @@
<!ENTITY torbutton.prefs.resist_fingerprinting "تغيير التفاصيل التي تميزك عن المستخدمين الآخرين لمتصفح تور">
<!ENTITY torbutton.prefs.sec_caption "مستوى الأمان">
<!ENTITY torbutton.prefs.sec_low "منخفض (افتراضي)">
+<!ENTITY torbutton.prefs.sec_low_usable_desc "This provides the most usable experience.">
+<!ENTITY torbutton.prefs.sec_low_desc "At this security level, all browser features are enabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_svg_tooltip "The SVG OpenType font rendering mechanism is disabled.">
<!ENTITY torbutton.prefs.sec_med_low "شبه منخفض">
+<!ENTITY torbutton.prefs.sec_gen_desc "At this security level, the following changes apply (mouseover for details):">
+<!ENTITY torbutton.prefs.sec_html5_desc "HTML5 video and audio media become click-to-play via NoScript.">
+<!ENTITY torbutton.prefs.sec_html5_tooltip "On some sites, you might need to use the NoScript toolbar button to enable these media objects.">
+<!ENTITY torbutton.prefs.sec_some_jit_desc "Some JavaScript performance optimizations are disabled.">
+<!ENTITY torbutton.prefs.sec_jit_desc_tooltip "ION JIT, Type Inference, ASM.JS.">
+<!ENTITY torbutton.prefs.sec_baseline_jit_desc_tooltip "Baseline JIT.">
+<!ENTITY torbutton.prefs.sec_jit_slower_desc "Scripts on some sites may run slower.">
+<!ENTITY torbutton.prefs.sec_jar_desc "Remote JAR files are blocked.">
+<!ENTITY torbutton.prefs.sec_jar_tooltip "JAR files are extremely rare on the web, but can be a source of XSS and other attacks.">
+<!ENTITY torbutton.prefs.sec_mathml_desc "Some mechanisms of displaying math equations are disabled.">
+<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML is disabled.">
<!ENTITY torbutton.prefs.sec_med_high "شبه عالٍ">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "All JavaScript performance optimizations are disabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_desc "بعض ميزات إظهار الخطوط معطلة ">
+<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "The Graphite font rendering mechanism is disabled.">
+<!ENTITY torbutton.prefs.sec_svg_desc "Some types of images are disabled.">
+<!ENTITY torbutton.prefs.sec_svg_desc_tooltip "SVG images are disabled.">
+<!ENTITY torbutton.prefs.sec_js_https_desc "JavaScript is disabled by default on all non-HTTPS sites.">
+<!ENTITY torbutton.prefs.sec_js_desc_tooltip "JavaScript can be enabled on a per-site basis via the NoScript toolbar button.">
<!ENTITY torbutton.prefs.sec_high "عالٍ">
+<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript is disabled by default on all sites.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc "Most audio and video formats are disabled.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc_tooltip "WebM is the only codec that remains enabled.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc "Some fonts and icons may display incorrectly.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Website-provided font files are blocked.">
<!ENTITY torbutton.prefs.sec_custom "قيم مخصصة">
-<!ENTITY torbutton.circuit_display.title "Tor circuit for this site">
+<!ENTITY torbutton.circuit_display.title "دائرة تور لهذا الموقع">
+
diff --git a/src/chrome/locale/ar/torbutton.properties b/src/chrome/locale/ar/torbutton.properties
index 8846f57..456399a 100644
--- a/src/chrome/locale/ar/torbutton.properties
+++ b/src/chrome/locale/ar/torbutton.properties
@@ -1,17 +1,19 @@
torbutton.button.tooltip.disabled = فعّل تور
torbutton.button.tooltip.enabled = عطّل تور
-torbutton.circuit_display.internet = Internet
-torbutton.circuit_display.ip_unknown = IP unknown
-torbutton.circuit_display.this_browser = This browser
-torbutton.circuit_display.tor_bridge = Bridge
-torbutton.circuit_display.unknown_country = Unknown country
+torbutton.circuit_display.internet = انترنت
+torbutton.circuit_display.ip_unknown = IP غير معروف
+torbutton.circuit_display.onion_site = Onion site
+torbutton.circuit_display.this_browser = هذا المتصفح
+torbutton.circuit_display.relay = relay
+torbutton.circuit_display.tor_bridge = جسر
+torbutton.circuit_display.unknown_country = بلد غير معروف
torbutton.panel.tooltip.disabled = انقر لتفعيل تور
torbutton.panel.tooltip.enabled = انقر لتعطيل تور
torbutton.panel.plugins.disabled = انقر لتفعيل الملحقات
torbutton.panel.plugins.enabled = انقر لتعطيل الملحقات
torbutton.panel.label.disabled = تور معطّل
torbutton.panel.label.enabled = تور مفعّل
-extensions.torbutton(a)torproject.org.description = زر تور يوفر زر لأعادة تكوين إعدادات تور وايضاً يمكنك بسهوله و بسرعة مسح بيانات التصفح الخاصة بك.
+extensions.torbutton(a)torproject.org.description = زر تور يوفر زر لتعديل إعدادات تور وايضاً لمسح بيانات التصفح الخاصة بك بسرعة وبسهولة.
torbutton.popup.history.warning = حجب مفتاح تور نشاطاً من تبويبة محملة في وضع تور مختلف.\n\nهذا الأمر للالتفاف حول مشاكل فايرفوكس رقم 409737 و417869.\n\nإذا ظهرت هذه الرسالة دون سبب، هناك إحدى تبويباتك تحاول إعادة تحميل نفسها في الخلفية، وتم حجب هذا.\n\nلإعادة تحميل التبويبة في حالة تور هذه يرجى أن تضغط 'Enter' في صندوق شريط العنوان.\n\n
torbutton.popup.plugin.warning = منع مفتاح تور تحميلا مباشراً لمحتوى برنامج إضافي بفايرفوكس.\n\nاستخدم 'احفظ باسم' كبديل.\n\n
torbutton.popup.confirm_ca_certs = ملاحظة من مفتاح تور: بما أنّك لا تملك ميثاق إصدار الشهادة الرقمي، وحيث أنّ عملية فحص قائمة مصدر الشهادة الرقمية عملية بطيئة وتسبب بطئاً في عمل مفتاح تور، فهل ترغب في تعطيل عملية عزل شهادات الإصدار الرقمي؟ (إن كنت لا تعلم او لا تفهم معنى ذلك، فإنه من المستحسن أن تختار خيار الموافقة)
@@ -23,14 +25,14 @@ torbutton.popup.test.confirm_toggle = فشل آخر اختبار لبروكسي
torbutton.popup.test.ff3_notice = اضغط "موافق" لاختبار إعدادات بروكسي تور. هذا الاختبار سيتم في الخلفية. يرجى الانتظار.
torbutton.panel.label.verified = تم التحقق والمصادقة على تور
torbutton.popup.test.auto_failed = الاختبار الآلي لبروكسي تور فشل.\n\nهل أنت متأكد أنك تريد التفعيل علي أي حال؟
-torbutton.prefs.recommended = (موصى به)
+torbutton.prefs.recommended = (محبّذ)
torbutton.prefs.optional = (إختياري)
-torbutton.prefs.crucial = (أساسي)
+torbutton.prefs.crucial = (ضروري جدا)
torbutton.popup.external.title = هل تريد تنزيل ملفاً من نوع الوصلة الخارجية؟
torbutton.popup.external.app = لا يمكن لمتصفّح تور عرض هذه الملف, يجب عليك أن تفتحه باستعمال تطبيق أخر.\n\n
torbutton.popup.external.note = بعض الأنواع من الملفات قد تعمل على إعطاء بعض التطبيقات الإمكانيّة للاتصال بالإنترنت دون استعمال تور.\n\n
torbutton.popup.external.suggest = لسلامتك, يجب عليك فتح الملفات المنزّلة مسبقاً عند كونك غير متصلاً بالإنترنت, أو استعمل قرص مضغوط لـ Tor Life , مثل Tails.\n
-torbutton.popup.launch = إنزال الملف
+torbutton.popup.launch = تحميل الملف
torbutton.popup.cancel = إلغاء
torbutton.popup.dontask = أنزل الملفات بشكلٍ أوتوماتيكيّ من الأن فصاعداً
torbutton.popup.test.no_http_proxy = فحص بروكسي تور: لا يمكن الوصول إلى بروكسي HTTP المحلي. هل يعمل Polipo بشكل صحيح؟
@@ -51,13 +53,25 @@ torbutton.popup.short_torbrowser = معلومات هامة عن زر تور \n\n
torbutton.popup.confirm_plugins = البرامج الإضافية مثل فلاش تستطيع ان تضر بخصوصيتك و تكشف هويتك.\n\nو تستطيع ايضا ان تتجنب تور و تكشف عن مكانك الحالي و عنوان الأي بي الخاص بك.\n\nهل أنت متأكد أنك تريد تفعيل البرامج الإضافية؟\n\n
torbutton.popup.never_ask_again = لا تسألني مرة اخري
-torbutton.popup.confirm_newnym = Tor Browser will close all windows and tabs. All website sessions will be lost.\n\nRestart Tor Browser now to reset your identity?\n\n
+torbutton.popup.confirm_newnym = متصفح تور
+
+torbutton.slider_notification = The green onion menu has now a security slider which lets you adjust your security level. Check it out!
+torbutton.slider_notification_button = Open security settings
+
+torbutton.maximize_warning = Maximizing Tor Browser can allow websites to determine your monitor size, which can be used to track you. We recommend that you leave Tor Browser windows in their original default size.
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=هذا الموقع (٪ S) حاول استخراج بيانات الصورة HTML5، والتي يمكن استخدامها لتحديد مكانك وتحديد الكومبيوتر.\n\nهل تريد أن يسمح متصفح Tor لهذا الموقع لاستخراج بيانات الصورة ؟
-canvas.notNow=ليس الان
+canvas.notNow=في وقت آخر
canvas.notNowAccessKey=النون
canvas.allow=السماح في المستقبل
canvas.allowAccessKey=ا
canvas.never=ليس للموقع هذا ابداً (مستحب)
canvas.neverAccessKey=ط
+
+# Profile/startup error messages. Strings are kept here for ease of translation.
+# LOCALIZATION NOTE: %S is the application name.
+profileProblemTitle=%S Profile Problem
+profileReadOnly=You cannot run %S from a read-only file system. Please copy %S to another location before trying to use it.
+profileReadOnlyMac=You cannot run %S from a read-only file system. Please copy %S to your Desktop or Applications folder before trying to use it.
+profileAccessDenied=%S does not have permission to access the profile. Please adjust your file system permissions and try again.
diff --git a/src/chrome/locale/de/aboutTor.dtd b/src/chrome/locale/de/aboutTor.dtd
index f757363..25366b0 100644
--- a/src/chrome/locale/de/aboutTor.dtd
+++ b/src/chrome/locale/de/aboutTor.dtd
@@ -8,7 +8,7 @@
<!ENTITY aboutTor.outOfDateTorOn.label "Dieser Browser ist nicht mehr aktuell.">
<!ENTITY aboutTor.outOfDateTorOff.label "DIESER Browser ist auch veraltet.">
-<!ENTITY aboutTor.outOfDate2.label "Klicke auf die Zwiebel und dann ">
+<!ENTITY aboutTor.outOfDate2.label "Klicken Sie auf die Zwiebel and wählen Sie dann Überprüfe auf Tor-Browser Aktualisierung.">
<!ENTITY aboutTor.check.label "Tor-Netzwerkeinstellungen testen">
@@ -25,7 +25,7 @@
<!ENTITY aboutTor.searchSPPost.link "https://startpage.com/rth/search">
<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
-<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
+<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
<!ENTITY aboutTor.torInfo1.label "Zusätzliche Informationen:">
<!ENTITY aboutTor.torInfo2.label "Land & IP-Adresse:">
diff --git a/src/chrome/locale/de/torbutton.dtd b/src/chrome/locale/de/torbutton.dtd
index 1772e47..622cfc1 100644
--- a/src/chrome/locale/de/torbutton.dtd
+++ b/src/chrome/locale/de/torbutton.dtd
@@ -1,6 +1,6 @@
<!ENTITY torbutton.prefs.title "Torbutton-Einstellungen">
-<!ENTITY torbutton.prefs.tor_settings "Vermittlungsservereinstellungen">
-<!ENTITY torbutton.prefs.recommended_settings "Die empfohlenen Vermittlungsservereinstellungen für meine Firefox-Version benutzen">
+<!ENTITY torbutton.prefs.tor_settings "Proxyserver-Einstellungen">
+<!ENTITY torbutton.prefs.recommended_settings "Benutze die empfohlenen Proxyserver-Einstellungen für meine Firefox-Version">
<!ENTITY torbutton.prefs.use_privoxy "Privoxy verwenden">
<!ENTITY torbutton.prefs.use_polipo "Polipo verwenden">
<!ENTITY torbutton.prefs.custom_settings "Individuelle Vermittlungsservereinstellungen verwenden">
@@ -153,8 +153,35 @@
<!ENTITY torbutton.prefs.resist_fingerprinting "Details ändern, die Sie von anderen Tor-Browser-Benutzern unterscheiden">
<!ENTITY torbutton.prefs.sec_caption "Sicherheitslevel">
<!ENTITY torbutton.prefs.sec_low "gering (Standard)">
+<!ENTITY torbutton.prefs.sec_low_usable_desc "Dies liefert die am meisten nutzbaren Erfahrungen.">
+<!ENTITY torbutton.prefs.sec_low_desc "Auf diesem Sicherheitsniveau sind alle Merkmale des Browsers freigegeben.">
+<!ENTITY torbutton.prefs.sec_font_rend_svg_tooltip "Der SVG-OpenType-Schriftart-Renderingvorgang ist deaktiviert.">
<!ENTITY torbutton.prefs.sec_med_low "unteres Mittel">
+<!ENTITY torbutton.prefs.sec_gen_desc "Auf dieser Sicherheitsstufe gelten die folgenden Änderungen (für weitere Details mit der Maus überfahren):">
+<!ENTITY torbutton.prefs.sec_html5_desc "HTML5-Video- und Audiomedien werden per Click-to-Play über NoScript abspielbar.">
+<!ENTITY torbutton.prefs.sec_html5_tooltip "Auf manchen Webseiten müssen Sie möglicherweise die NoScript-Schaltfläche in der Werkzeugleiste verwenden, um diese Medienobjekte zu aktivieren.">
+<!ENTITY torbutton.prefs.sec_some_jit_desc "Einige JavaScript Ausführungsoptimierungen sind unterbunden.">
+<!ENTITY torbutton.prefs.sec_jit_desc_tooltip "ION JIT, Typinferenz, ASM.JS.">
+<!ENTITY torbutton.prefs.sec_baseline_jit_desc_tooltip "JIT-Basis.">
+<!ENTITY torbutton.prefs.sec_jit_slower_desc "Scripts können auf manchen seiten langsamer laufen.">
+<!ENTITY torbutton.prefs.sec_jar_desc "JAR-Dateieen sind im Web extrem selten, können aaber eine Quelle von XSS und anderen Attacken sein.">
+<!ENTITY torbutton.prefs.sec_jar_tooltip "JAR-Dateien sind sehr selten im Internet, aber sie können eine Quelle von XSS (Webseitenübergreifendes Skripting) und anderer Angriffe sein.">
+<!ENTITY torbutton.prefs.sec_mathml_desc "Manche Vorgänge zur Anzeige von mathematischen Gleichungen sind deaktiviert.">
+<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML ist blockiert.">
<!ENTITY torbutton.prefs.sec_med_high "oberes Mittel">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "Alle JavaScript-Leistungsoptimierungen sind deaktiviert.">
+<!ENTITY torbutton.prefs.sec_font_rend_desc "Einige Schriftabbildungseigenschaften sind blockiert.">
+<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "Der Graphite-Schriftart-Renderingvorgang ist deaktiviert.">
+<!ENTITY torbutton.prefs.sec_svg_desc "Einige Arten von Bilddateien sind blockiert.">
+<!ENTITY torbutton.prefs.sec_svg_desc_tooltip "SVG-Bilder sind blockiert.">
+<!ENTITY torbutton.prefs.sec_js_https_desc "JavaScript ist standardmäßig auf allen Nicht-HTTPS-Webseiten deaktiviert.">
+<!ENTITY torbutton.prefs.sec_js_desc_tooltip "JavaScript kann über die NoScript-Schaltfläche in der Werkzeugleiste für jede Webseite einzeln aktiviert werden.">
<!ENTITY torbutton.prefs.sec_high "hoch">
+<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript ist standardmäßig auf allen Webseiten deaktiviert.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc "Die meisten Audio- und Videoformate sind deaktiviert.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc_tooltip "WebM ist der einzige Codec, der aktiviert bleibt.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc "Manche Schriftarten und Symbole könnten falsch angezeigt werden.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Von Webseiten bereitgestellte Schriftartdateien sind gesperrt.">
<!ENTITY torbutton.prefs.sec_custom "Eigene Werte">
<!ENTITY torbutton.circuit_display.title "Tor-Kanal für diese Seite">
+
diff --git a/src/chrome/locale/de/torbutton.properties b/src/chrome/locale/de/torbutton.properties
index ba20cf9..ed2941d 100644
--- a/src/chrome/locale/de/torbutton.properties
+++ b/src/chrome/locale/de/torbutton.properties
@@ -1,9 +1,11 @@
torbutton.button.tooltip.disabled = Tor aktivieren
torbutton.button.tooltip.enabled = Tor deaktivieren
torbutton.circuit_display.internet = Internet
-torbutton.circuit_display.ip_unknown = IP unbekannt
+torbutton.circuit_display.ip_unknown = IP ist unbekannt
+torbutton.circuit_display.onion_site = Onion-Seite
torbutton.circuit_display.this_browser = Dieser Browser
-torbutton.circuit_display.tor_bridge = Bridge
+torbutton.circuit_display.relay = Relais
+torbutton.circuit_display.tor_bridge = Brücke
torbutton.circuit_display.unknown_country = Unbekanntes Land
torbutton.panel.tooltip.disabled = Klicken, um Tor zu aktivieren
torbutton.panel.tooltip.enabled = Klicken, um Tor zu deaktivieren
@@ -51,7 +53,12 @@ torbutton.popup.short_torbrowser = Wichtige Torbutton-Information!\n\nTorbutton
torbutton.popup.confirm_plugins = Erweiterungen wie Flash können ihre Privatsphäre und Anonymität schädigen.\n\nSie können auch das Tor-Netzwerk umgehen, und Ihren derzeitigen Aufenthaltsort und ihre IP-Adresse verraten.\n\nSind Sie sicher, dass Sie Erweiterungen aktivieren wollen?\n\n
torbutton.popup.never_ask_again = Nicht mehr nachfragen
-torbutton.popup.confirm_newnym = Tor-Browser wird alle Fenster und Tabs schließen. Alle Webseiten-Sitzungen gehen verloren.\n\nTor-Browser jetzt neu starten um Ihre Identität zurückzusetzen?\n\n
+torbutton.popup.confirm_newnym = Tor-Browser wird alle Fenster und Reiter schließen. Alle Internetseitensitzungen gehen verloren.\n\nTor-Browser jetzt neu starten, um Ihre Identität zurückzusetzen?\n\n
+
+torbutton.slider_notification = Das grüne Onion Menü hat jetzt einen Sicherheits-Regler welches Ihr Sicherheits-Level einstellt. Probier's aus!
+torbutton.slider_notification_button = Öffne Sicherheits-Einstellungen
+
+torbutton.maximize_warning = Maximizing Tor Browser can allow websites to determine your monitor size, which can be used to track you. We recommend that you leave Tor Browser windows in their original default size.
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=Die Internetseite (%S) hat versucht, HTML5-Canvas-Bilddaten zu extrahieren, die verwendet werden können, um Ihren Rechner eindeutig zu identifizieren. \n\nSoll Tor-Browser es dieser Internetseite erlauben HTML5-Canvas-Bilddaten zu extrahieren?
@@ -61,3 +68,10 @@ canvas.allow=In der Zukunft erlauben
canvas.allowAccessKey=I
canvas.never=Niemals für diese Internetseite (empfohlen)
canvas.neverAccessKey=N
+
+# Profile/startup error messages. Strings are kept here for ease of translation.
+# LOCALIZATION NOTE: %S is the application name.
+profileProblemTitle=%S-Profilproblem
+profileReadOnly=Es ist nicht möglich %S auf einem nur lesbaren Dateisystem zu starten. Bitte kopiere %S an einen anderen Ort bevor Sie es benutzen.
+profileReadOnlyMac=Es ist nicht möglich %S auf einem nur lesbaren Dateisystem zu starten. Bitte %S auf Ihren Schreibtisch oder den Anwendungsordner kopieren, bevor Sie es benutzen.
+profileAccessDenied=%S hat keine Berechtigung um dieses Profil abzurufen. Bitte die Berechtigungen Ihres Dateisystems einstellen und es noch einmal probieren.
diff --git a/src/chrome/locale/es/aboutTor.dtd b/src/chrome/locale/es/aboutTor.dtd
index f2c865c..77d6c3c 100644
--- a/src/chrome/locale/es/aboutTor.dtd
+++ b/src/chrome/locale/es/aboutTor.dtd
@@ -19,27 +19,27 @@
<!ENTITY aboutTor.failure2.label "Tor no está funcionando en este navegador.">
<!ENTITY aboutTor.failure3prefix.label "Para obtener asistencia, por favor contacte">
<!ENTITY aboutTor.failure3Link "help(a)rt.torproject.org">
-<!ENTITY aboutTor.failure3suffix.label ",">
+<!ENTITY aboutTor.failure3suffix.label ".">
<!ENTITY aboutTor.search.label "Buscar">
<!ENTITY aboutTor.searchSPPost.link "https://startpage.com/rth/search">
<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
-<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
+<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
<!ENTITY aboutTor.torInfo1.label "Información adicional:">
<!ENTITY aboutTor.torInfo2.label "País y dirección IP:">
<!ENTITY aboutTor.torInfo3.label "Nodo de salida:">
-<!ENTITY aboutTor.torInfo4.label "Este servidor no registra información alguna de los visitantes.">
-<!ENTITY aboutTor.whatnextQuestion.label "¿Qué es lo siguiente?">
+<!ENTITY aboutTor.torInfo4.label "Este servidor no registra ninguna información sobre los visitantes.">
+<!ENTITY aboutTor.whatnextQuestion.label "¿Qué sigue?">
<!ENTITY aboutTor.whatnextAnswer.label "¡Tor NO es todo lo que necesita para navegar anónimamente! Puede necesitar cambiar alguno de sus hábitos de navegación para asegurar que su identidad permanezca segura.">
<!ENTITY aboutTor.whatnext.label "Consejos para permenecer anónimo »">
<!ENTITY aboutTor.whatnext.link "https://www.torproject.org/download/download.html.en#warning">
<!ENTITY aboutTor.helpInfo1.label "¡Usted puede ayudar!">
-<!ENTITY aboutTor.helpInfo2.label "Hay muchas formas en las puede ayudar a hacer la red Tor más rápida y fuerte.">
+<!ENTITY aboutTor.helpInfo2.label "Hay muchas formas en que las puede ayudar a hacer la red Tor más rápida y fuerte.">
<!ENTITY aboutTor.helpInfo3.label "Ejecutar un nodo de repetidor Tor »">
<!ENTITY aboutTor.helpInfo3.link "https://www.torproject.org/docs/tor-doc-relay.html.en">
-<!ENTITY aboutTor.helpInfo4.label "Ofrece voluntariamente tus servicios »">
+<!ENTITY aboutTor.helpInfo4.label "Ofrece sus servicios como voluntario »">
<!ENTITY aboutTor.helpInfo4.link "https://www.torproject.org/getinvolved/volunteer.html.en">
<!ENTITY aboutTor.helpInfo5.label "Realiza una donación »">
<!ENTITY aboutTor.helpInfo5.link "https://www.torproject.org/donate/donate.html.en">
diff --git a/src/chrome/locale/es/torbutton.dtd b/src/chrome/locale/es/torbutton.dtd
index c33695c..ac84de0 100644
--- a/src/chrome/locale/es/torbutton.dtd
+++ b/src/chrome/locale/es/torbutton.dtd
@@ -153,8 +153,35 @@
<!ENTITY torbutton.prefs.resist_fingerprinting "Cambiar los detalles que le distinguen de otros usuarios de Navegador Tor">
<!ENTITY torbutton.prefs.sec_caption "Nivel de Seguridad">
<!ENTITY torbutton.prefs.sec_low "Bajo (por defecto)">
+<!ENTITY torbutton.prefs.sec_low_usable_desc "Esto proporciona la mejor experiencia de usabilidad.">
+<!ENTITY torbutton.prefs.sec_low_desc "En este nivel de seguridad, todas las funciones del navegador están habilitadas.">
+<!ENTITY torbutton.prefs.sec_font_rend_svg_tooltip "El mecanismo de representación de fuentes SVG OpenType está deshabilitado.">
<!ENTITY torbutton.prefs.sec_med_low "Medio-Bajo">
+<!ENTITY torbutton.prefs.sec_gen_desc "En este nivel de seguridad, se aplican los siguientes cambios (ratón encima para detalles):">
+<!ENTITY torbutton.prefs.sec_html5_desc "Los medios de vídeo y audio HTML5 se vuelven tipo clic-para-reproducir mediante NoScript.">
+<!ENTITY torbutton.prefs.sec_html5_tooltip "En algunos sitios, podría necesitar usar el botón de barra de herramientas de NoScript para habilitar estos objetos de medios.">
+<!ENTITY torbutton.prefs.sec_some_jit_desc "Algunas optimizaciones de rendimiento de JavaScript están deshabilitadas.">
+<!ENTITY torbutton.prefs.sec_jit_desc_tooltip "ION JIT (compilador JS instantáneo optimizado), Type Inference (deducción del tipo de datos por el compilador), ASM.JS (JS intermedio para alto rendimiento de otros lenguajes)">
+<!ENTITY torbutton.prefs.sec_baseline_jit_desc_tooltip "Baseline JIT (compilador JS instantáneo)">
+<!ENTITY torbutton.prefs.sec_jit_slower_desc "Los scripts en algunos sitios puede que se ejecuten más lentamente.">
+<!ENTITY torbutton.prefs.sec_jar_desc "Los ficheros JAR remotos están bloqueados.">
+<!ENTITY torbutton.prefs.sec_jar_tooltip "Los ficheros JAR son extremadamente raros en la web, pero pueden ser una fuente de ataques XSS y de otros tipos.">
+<!ENTITY torbutton.prefs.sec_mathml_desc "Algunos mecanismos de representación de ecuaciones matemáticas están deshabilitados.">
+<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML está deshabilitado.">
<!ENTITY torbutton.prefs.sec_med_high "Medio-Alto">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "Todas las optimizaciones de rendimiento de JavaScript están deshabilitadas.">
+<!ENTITY torbutton.prefs.sec_font_rend_desc "Algunas características de representación de fuentes están deshabilitadas.">
+<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "El mecanismo de representación de fuentes Graphite está deshabilitado.">
+<!ENTITY torbutton.prefs.sec_svg_desc "Algunos tipos de imágenes están deshabilitados.">
+<!ENTITY torbutton.prefs.sec_svg_desc_tooltip "Las imágenes SVG están deshabilitadas.">
+<!ENTITY torbutton.prefs.sec_js_https_desc "JavaScript está deshabilitado por defecto en todos los sitios que no usan HTTPS.">
+<!ENTITY torbutton.prefs.sec_js_desc_tooltip "JavaScript puede habilitarse por sitios mediante el botón de barra de herramientas de NoScript.">
<!ENTITY torbutton.prefs.sec_high "Alto">
+<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript está deshabilitado por defecto en todos los sitios.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc "La mayoría de formatos de audio y vídeo están deshabilitados.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc_tooltip "WebM es el único codec que permanece habilitado.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc "Algunas fuentes e iconos pueden mostrarse de forma incorrecta.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Los ficheros de fuentes proporcionados por el sitio web están bloqueados.">
<!ENTITY torbutton.prefs.sec_custom "Valores Personalizados">
<!ENTITY torbutton.circuit_display.title "Circuito Tor para este sitio">
+
diff --git a/src/chrome/locale/es/torbutton.properties b/src/chrome/locale/es/torbutton.properties
index 957a8f9..6edea41 100644
--- a/src/chrome/locale/es/torbutton.properties
+++ b/src/chrome/locale/es/torbutton.properties
@@ -2,7 +2,9 @@ torbutton.button.tooltip.disabled = Habilitar Tor
torbutton.button.tooltip.enabled = Deshabilitar Tor
torbutton.circuit_display.internet = Internet
torbutton.circuit_display.ip_unknown = IP desconocida
+torbutton.circuit_display.onion_site = Sitio onion
torbutton.circuit_display.this_browser = Este navegador
+torbutton.circuit_display.relay = repetidor
torbutton.circuit_display.tor_bridge = Repetidor puente (bridge)
torbutton.circuit_display.unknown_country = País desconocido
torbutton.panel.tooltip.disabled = Haga clic para habilitar Tor
@@ -53,6 +55,11 @@ torbutton.popup.confirm_plugins = Complementos (plugins) como Flash pueden daña
torbutton.popup.never_ask_again = No volver a preguntar
torbutton.popup.confirm_newnym = El Navegador Tor cerrará todas las ventanas y pestañas. Todas las sesiones de sitios web se perderán.\n\n¿Reiniciar el Navegador Tor para restablecer su identidad?\n\n
+torbutton.slider_notification = El menú de la cebolla verde incluye ahora un panel deslizante que le permite ajustar el nivel de seguridad. ¡Pruébelo!
+torbutton.slider_notification_button = Abrir ajustes de seguridad
+
+torbutton.maximize_warning = Maximizar el navegador Tor puede permitir a los sitios web determinar el tamaño de su monitor, lo que se puede usar para rastrearle. Le recomendamos que deje las ventanas del navegador Tor a su tamaño predeterminado original.
+
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=Este sitio web (%s) intentó extraer datos de imagen de un lienzo HTML5, que podrían usarse para identificar de forma única su computadora.\n\n¿Debe permitir el Navegador Tor a este sitio web extraer los datos de imagen de lienzos HTML5?
canvas.notNow=Ahora no
@@ -61,3 +68,10 @@ canvas.allow=Permitir en el futuro
canvas.allowAccessKey=P
canvas.never=Nunca para este sitio (recomendado)
canvas.neverAccessKey=u
+
+# Profile/startup error messages. Strings are kept here for ease of translation.
+# LOCALIZATION NOTE: %S is the application name.
+profileProblemTitle=Problema del perfil %S
+profileReadOnly=No puede ejecutar %S desde un sistema de ficheros de solo-lectura. Copie %S a otra ubicación antes de intentar usarlo.
+profileReadOnlyMac=No puede ejecutar %S desde un sistema de ficheros de solo-lectura. Copie %S a su escritorio o la carpeta de aplicaciones antes de intentar usarlo.
+profileAccessDenied=%S no tiene permiso para acceder al perfil. Ajuste los permisos de su sistema de ficheros e inténtelo de nuevo.
diff --git a/src/chrome/locale/eu/torbutton.dtd b/src/chrome/locale/eu/torbutton.dtd
index 14f216f..0511ec4 100644
--- a/src/chrome/locale/eu/torbutton.dtd
+++ b/src/chrome/locale/eu/torbutton.dtd
@@ -32,7 +32,7 @@
<!ENTITY torbutton.context_menu.preferences.key "P">
<!ENTITY torbutton.context_menu.about "Torbuttoni buruz...">
<!ENTITY torbutton.context_menu.about.key "A">
-<!ENTITY torbutton.context_menu.networksettings "Tor Network Settings…">
+<!ENTITY torbutton.context_menu.networksettings "Tor Sarearen Ezarpenak...">
<!ENTITY torbutton.context_menu.networksettings.key "S">
<!ENTITY torbutton.context_menu.downloadUpdate "Check for Tor Browser Update…">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
@@ -153,8 +153,35 @@
<!ENTITY torbutton.prefs.resist_fingerprinting "Zu beste Tor Browser erabiltzaileengandik nabarmentzen zaituzten xehetasunak aldatu">
<!ENTITY torbutton.prefs.sec_caption "Segurtasun maila">
<!ENTITY torbutton.prefs.sec_low "Baxua (lehentsia)">
+<!ENTITY torbutton.prefs.sec_low_usable_desc "This provides the most usable experience.">
+<!ENTITY torbutton.prefs.sec_low_desc "At this security level, all browser features are enabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_svg_tooltip "The SVG OpenType font rendering mechanism is disabled.">
<!ENTITY torbutton.prefs.sec_med_low "Ertaina-baxua">
+<!ENTITY torbutton.prefs.sec_gen_desc "At this security level, the following changes apply (mouseover for details):">
+<!ENTITY torbutton.prefs.sec_html5_desc "HTML5 video and audio media become click-to-play via NoScript.">
+<!ENTITY torbutton.prefs.sec_html5_tooltip "On some sites, you might need to use the NoScript toolbar button to enable these media objects.">
+<!ENTITY torbutton.prefs.sec_some_jit_desc "Some JavaScript performance optimizations are disabled.">
+<!ENTITY torbutton.prefs.sec_jit_desc_tooltip "ION JIT, Type Inference, ASM.JS.">
+<!ENTITY torbutton.prefs.sec_baseline_jit_desc_tooltip "Baseline JIT.">
+<!ENTITY torbutton.prefs.sec_jit_slower_desc "Scripts on some sites may run slower.">
+<!ENTITY torbutton.prefs.sec_jar_desc "Remote JAR files are blocked.">
+<!ENTITY torbutton.prefs.sec_jar_tooltip "JAR files are extremely rare on the web, but can be a source of XSS and other attacks.">
+<!ENTITY torbutton.prefs.sec_mathml_desc "Some mechanisms of displaying math equations are disabled.">
+<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML is disabled.">
<!ENTITY torbutton.prefs.sec_med_high "Ertaina-altua">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "All JavaScript performance optimizations are disabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_desc "Some font rendering features are disabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "The Graphite font rendering mechanism is disabled.">
+<!ENTITY torbutton.prefs.sec_svg_desc "Some types of images are disabled.">
+<!ENTITY torbutton.prefs.sec_svg_desc_tooltip "SVG images are disabled.">
+<!ENTITY torbutton.prefs.sec_js_https_desc "JavaScript is disabled by default on all non-HTTPS sites.">
+<!ENTITY torbutton.prefs.sec_js_desc_tooltip "JavaScript can be enabled on a per-site basis via the NoScript toolbar button.">
<!ENTITY torbutton.prefs.sec_high "Altua">
+<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript is disabled by default on all sites.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc "Most audio and video formats are disabled.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc_tooltip "WebM is the only codec that remains enabled.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc "Some fonts and icons may display incorrectly.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Website-provided font files are blocked.">
<!ENTITY torbutton.prefs.sec_custom "Balio pertsonalizatuak">
<!ENTITY torbutton.circuit_display.title "Tor circuit for this site">
+
diff --git a/src/chrome/locale/eu/torbutton.properties b/src/chrome/locale/eu/torbutton.properties
index d856bec..671940d 100644
--- a/src/chrome/locale/eu/torbutton.properties
+++ b/src/chrome/locale/eu/torbutton.properties
@@ -2,7 +2,9 @@ torbutton.button.tooltip.disabled = Tor gaitu
torbutton.button.tooltip.enabled = Tor ezgaitu
torbutton.circuit_display.internet = Internet
torbutton.circuit_display.ip_unknown = IP unknown
+torbutton.circuit_display.onion_site = Onion site
torbutton.circuit_display.this_browser = This browser
+torbutton.circuit_display.relay = relay
torbutton.circuit_display.tor_bridge = Bridge
torbutton.circuit_display.unknown_country = Unknown country
torbutton.panel.tooltip.disabled = Sakatu Tor gaitzeko
@@ -53,6 +55,11 @@ torbutton.popup.confirm_plugins = Flash bezalako pluginek zure pribatutasuna eta
torbutton.popup.never_ask_again = Ez nazazu galdetu berriz
torbutton.popup.confirm_newnym = Tor Browser will close all windows and tabs. All website sessions will be lost.\n\nRestart Tor Browser now to reset your identity?\n\n
+torbutton.slider_notification = The green onion menu has now a security slider which lets you adjust your security level. Check it out!
+torbutton.slider_notification_button = Open security settings
+
+torbutton.maximize_warning = Maximizing Tor Browser can allow websites to determine your monitor size, which can be used to track you. We recommend that you leave Tor Browser windows in their original default size.
+
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=Webgune hau (% S) HTML5 canvas irudi datuak ateratzen saiatu da, eta zure ordenagailua identifikatzeko erabil daitezke.\n\nTor Nabigatzailea baimendu nahi duzu webgune honetan HTML5 canvas irudiaren datuak ateratzeko?
canvas.notNow=Orain ez
@@ -61,3 +68,10 @@ canvas.allow=Etorkizunean baimendu
canvas.allowAccessKey=A
canvas.never=Inoiz ez gune honetarako (gomendatuta)
canvas.neverAccessKey=e
+
+# Profile/startup error messages. Strings are kept here for ease of translation.
+# LOCALIZATION NOTE: %S is the application name.
+profileProblemTitle=%S Profile Problem
+profileReadOnly=You cannot run %S from a read-only file system. Please copy %S to another location before trying to use it.
+profileReadOnlyMac=You cannot run %S from a read-only file system. Please copy %S to your Desktop or Applications folder before trying to use it.
+profileAccessDenied=%S does not have permission to access the profile. Please adjust your file system permissions and try again.
diff --git a/src/chrome/locale/fa/aboutTor.dtd b/src/chrome/locale/fa/aboutTor.dtd
index aaa04be..a7bd20f 100644
--- a/src/chrome/locale/fa/aboutTor.dtd
+++ b/src/chrome/locale/fa/aboutTor.dtd
@@ -44,6 +44,6 @@
<!ENTITY aboutTor.helpInfo5.label "اهدا كنيد »">
<!ENTITY aboutTor.helpInfo5.link "https://www.torproject.org/donate/donate.html.en">
-<!ENTITY aboutTor.footer.label "پروژهٔ تور سازمان غیر انتفاعی آمریکایی ‭501(c)(3)‬ مختص پژوهش, توسعه و آموزش در زمین ناشناسی و حریم شخصی آنلاين هست.">
+<!ENTITY aboutTor.footer.label "پروژهٔ تور سازمان غیر انتفاعی آمریکایی 501(c)3 مختص پژوهش, توسعه و آموزش در زمین ناشناسی و حریم شخصی آنلاين هست.">
<!ENTITY aboutTor.learnMore.label "اطلاعات بیشتر در پروژهٔ تور كسب كنيد">
<!ENTITY aboutTor.learnMore.link "https://www.torproject.org/about/overview.html.en">
diff --git a/src/chrome/locale/fa/torbutton.dtd b/src/chrome/locale/fa/torbutton.dtd
index 3c2e698..518a836 100644
--- a/src/chrome/locale/fa/torbutton.dtd
+++ b/src/chrome/locale/fa/torbutton.dtd
@@ -9,13 +9,13 @@
<!ENTITY torbutton.prefs.proxy.host.ftp "پراکسی FTP:">
<!ENTITY torbutton.prefs.proxy.host.gopher "پراکسی Gopher:">
<!ENTITY torbutton.prefs.proxy.host.socks "ميزبان SOCKS:">
-<!ENTITY torbutton.prefs.proxy.port "درگاهی (Port):">
+<!ENTITY torbutton.prefs.proxy.port "درگاه (Port):">
<!ENTITY torbutton.about.title "دربارۀ دکمه تُر">
<!ENTITY torbutton.about.version "نسخه :">
<!ENTITY torbutton.about.summary "محافظت از حریم خصوصی در هنگام وبگردی با تُر.">
-<!ENTITY torbutton.about.code "کانون کد :">
+<!ENTITY torbutton.about.code "همکاران کد :">
<!ENTITY torbutton.about.maintainer "نگهدارنده :">
-<!ENTITY torbutton.about.security_review "دیدگاه های ایمنی :">
+<!ENTITY torbutton.about.security_review "نکات امنیتی :">
<!ENTITY torbutton.about.donate "اگر مایل به استفاده از تُر هستید، میتوانید مدنظر قرار دهید">
<!ENTITY torbutton.about.make_donation "اهداء کمک نقدی.">
<!ENTITY torbutton.pref_connection.notice "غيرفعال کردن دکمه تُر جهت تغيير دراين تنظيمات.">
@@ -23,10 +23,10 @@
<!ENTITY torbutton.pref_connection_more_info.title "راهنما">
<!ENTITY torbutton.pref_connection_more_info.text "دکمه تُرهم اکنون فعال شده است.اگر میخواهيد تنظيمات پراکسی غيرمرتبط با تُر را تغيير دهيد، لطفا دکمه تُر را غيرفعال کنيد و دوباره به اينجا بازگرديد. اگر ميخواهيد تنظيمات تُر را تغيير دهيد، از پنجره تنظيمات دکمه تُر استفاده کنيد.">
<!ENTITY torbutton.context_menu.new_identity "هویت جدید">
-<!ENTITY torbutton.context_menu.new_identity_key "من">
-<!ENTITY torbutton.context_menu.new_circuit "مدار جدید Tor برای این سایت">
+<!ENTITY torbutton.context_menu.new_identity_key "I">
+<!ENTITY torbutton.context_menu.new_circuit "شبکه جدید Tor برای این سایت">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
-<!ENTITY torbutton.context_menu.toggle "ضامن فعال/غيرفعال کردن تُر">
+<!ENTITY torbutton.context_menu.toggle "دکمه فعال/غيرفعال کردن تُر">
<!ENTITY torbutton.context_menu.toggle.key "T">
<!ENTITY torbutton.context_menu.preferences "حفظ حریم خصوصی و تنظیمات امنیتی">
<!ENTITY torbutton.context_menu.preferences.key "P">
@@ -34,7 +34,7 @@
<!ENTITY torbutton.context_menu.about.key "A">
<!ENTITY torbutton.context_menu.networksettings "تنظیمات شبکه تور">
<!ENTITY torbutton.context_menu.networksettings.key "S">
-<!ENTITY torbutton.context_menu.downloadUpdate "بررسی برای به روز رسانی Tor Browser ...">
+<!ENTITY torbutton.context_menu.downloadUpdate "بررسی بروز رسانی Tor Browser ...">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
<!ENTITY torbutton.context_menu.cookieProtections "حفاظت کوکی ها...">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
@@ -64,14 +64,14 @@
<!ENTITY torbutton.prefs.no_updates "غیرفعال کردن بهروزرسانی در هنگام استفاده از تُر">
<!ENTITY torbutton.prefs.set_uagent "تعيين کاربر برای استفاده از تُر (بسیار مهم)">
<!ENTITY torbutton.prefs.dynamic "محتوای پویا">
-<!ENTITY torbutton.prefs.cookies "کلوچکها">
+<!ENTITY torbutton.prefs.cookies "کوکی ها">
<!ENTITY torbutton.prefs.cache "ذخيرهگاه">
<!ENTITY torbutton.prefs.history "تاریخچه">
<!ENTITY torbutton.prefs.no_search "غیرفعال کردن پیشنهادهای جستجو هنگام اجرای تُر (توصیه شده)">
-<!ENTITY torbutton.prefs.shutdown "بستن">
-<!ENTITY torbutton.prefs.tor_shutdown "پاک کردن کلوچکهای تُردرهنگام بستن مرورگری که با تُر کار میکند">
-<!ENTITY torbutton.prefs.all_shutdown "پاک کردن کلوچکها هنگام بستن هر مرورگری">
-<!ENTITY torbutton.prefs.no_shutdown "پاک نکردن کلوچکها هنگام بستن">
+<!ENTITY torbutton.prefs.shutdown "خاموش کردن">
+<!ENTITY torbutton.prefs.tor_shutdown "پاک کردن کوکی های تُردرهنگام بستن مرورگری که با تُر کار میکند">
+<!ENTITY torbutton.prefs.all_shutdown "پاک کردن کوکی ها هنگام بستن هر مرورگری">
+<!ENTITY torbutton.prefs.no_shutdown "پاک نکردن کوکی ها هنگام بستن">
<!ENTITY torbutton.prefs.disable_sessionstore "غیرفعال کردن ذخیرهسازی نشست (Session) ها (توصیه شده)">
<!ENTITY torbutton.prefs.headers "سربرگها">
<!ENTITY torbutton.prefs.spoof_english "جعل هویت یک مرورگر با زبان انگليسی آمریکایی">
@@ -153,8 +153,35 @@
<!ENTITY torbutton.prefs.resist_fingerprinting "تغييردادن جزئياتى كه شمارا از كاربران ديگر تُر تميزمىكند">
<!ENTITY torbutton.prefs.sec_caption "سطح امنیت">
<!ENTITY torbutton.prefs.sec_low "پایین (به طور پیش فرض)">
+<!ENTITY torbutton.prefs.sec_low_usable_desc "این فراهم می کند بیشترین تجربه قابل استفاده.">
+<!ENTITY torbutton.prefs.sec_low_desc "در این سطح امنیتی، تمام ویژگی های مرورگر ها فعال است.">
+<!ENTITY torbutton.prefs.sec_font_rend_svg_tooltip "مکانیسم رندر فونت SVG اپن تایپ غیر فعال است.">
<!ENTITY torbutton.prefs.sec_med_low "متوسط - کم">
+<!ENTITY torbutton.prefs.sec_gen_desc "در این سطح امنیتی، تغییرات زیر اعمال می شود (خلاصه شده برای جزئیات بیشتر):">
+<!ENTITY torbutton.prefs.sec_html5_desc "صدا و تصویر HTML5 از طریق دکمه NoScript نوار ابزار به حالت -کلیک برای پخش- در می آید">
+<!ENTITY torbutton.prefs.sec_html5_tooltip "در برخی سایت ها، ممکن است شما نیاز به استفاده از دکمه NoScript نوار ابزار برای فعال کردن این اشیاء رسانه داشته باشید.">
+<!ENTITY torbutton.prefs.sec_some_jit_desc "برخی از بهینه سازی عملکرد جاوا اسکریپت غیر فعال شده است.">
+<!ENTITY torbutton.prefs.sec_jit_desc_tooltip "ION JIT, Type Inference, ASM.JS.">
+<!ENTITY torbutton.prefs.sec_baseline_jit_desc_tooltip "JIT در شروع مطالعه.">
+<!ENTITY torbutton.prefs.sec_jit_slower_desc "اسکریپت هل در برخی از سایت ها ممکن است آهسته تر اجرا شود.">
+<!ENTITY torbutton.prefs.sec_jar_desc "فایل های JAR از راه دور مسدود.">
+<!ENTITY torbutton.prefs.sec_jar_tooltip "فایل ها با پسوند JAR به ندرت در وب استفاده می شوند ، ولی می توانند مبدایی برای هک به روش XSS و دیگر حملات هکری شوند.">
+<!ENTITY torbutton.prefs.sec_mathml_desc "برخی مکانیسم ها نمایش معادلات ریاضی غیر فعال می باشد.">
+<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML غیر فعال است.">
<!ENTITY torbutton.prefs.sec_med_high "متوسط - بالا">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "همه بهینه سازی عملکرد جاوا اسکریپت غیر فعال شده است.">
+<!ENTITY torbutton.prefs.sec_font_rend_desc "برخی از ویژگی های رندر فونت غیر فعال می باشد.">
+<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "مکانیسم گرافیت رندر فونت غیر فعال است.">
+<!ENTITY torbutton.prefs.sec_svg_desc "برخی از انواع تصاویر غیر فعال هستند.">
+<!ENTITY torbutton.prefs.sec_svg_desc_tooltip "تصاویر SVG غیر فعال می باشد.">
+<!ENTITY torbutton.prefs.sec_js_https_desc "جاوا اسکریپت به طور پیش فرض در تمامی سایت های غیر HTTPS غیر فعال است.">
+<!ENTITY torbutton.prefs.sec_js_desc_tooltip "جاوا اسکریپ برای هر وب سایت از طریق دکمه NoScript نوار ابزار فعال می شود.">
<!ENTITY torbutton.prefs.sec_high "زیاد">
+<!ENTITY torbutton.prefs.sec_all_js_desc "جاوا اسکریپت به طور پیش فرض در تمامی سایت ها غیر فعال است.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc "اکثر فرمت های صوتی و تصویری غیر فعال می باشد.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc_tooltip "WebM تنها کدکی است که فعال باقی می ماند.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc "برخی از فونت ها و آیکون های ممکن است نمایش نادرست داشته باشند.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "فایل های فونتی که در وب سایت ارائه می شوند مسدود شده است.">
<!ENTITY torbutton.prefs.sec_custom "تنظیم سفارشی">
<!ENTITY torbutton.circuit_display.title "مدار Tor برای این سایت">
+
diff --git a/src/chrome/locale/fa/torbutton.properties b/src/chrome/locale/fa/torbutton.properties
index 3c8fc1d..2a4b86e 100644
--- a/src/chrome/locale/fa/torbutton.properties
+++ b/src/chrome/locale/fa/torbutton.properties
@@ -2,7 +2,9 @@ torbutton.button.tooltip.disabled = فعال کردن تُر
torbutton.button.tooltip.enabled = غيرفعال کردن تُر
torbutton.circuit_display.internet = اینترنت
torbutton.circuit_display.ip_unknown = IP ناشناخته
+torbutton.circuit_display.onion_site = سایت پیاز
torbutton.circuit_display.this_browser = این مرورگر
+torbutton.circuit_display.relay = رله
torbutton.circuit_display.tor_bridge = پل
torbutton.circuit_display.unknown_country = کشور ناشناخته
torbutton.panel.tooltip.disabled = برای فعال کردن تُرکليک کنيد
@@ -53,6 +55,11 @@ torbutton.popup.confirm_plugins = پلاگینها مانند فلش، میتو
torbutton.popup.never_ask_again = دیگر هیچگاه این را از من نپرس
torbutton.popup.confirm_newnym = مرورگر Tor همه پنجره ها و تب ها را می بندد. همه جلسات وب سایت شود از دست خواهد رفت\n\nآیا می خواهید راه اندازی مجدد مرورگر Tor الان انجام شود تا هویت خود را تنظیم مجدد کنید؟\n
+torbutton.slider_notification = منوی پیاز سبز در حال حاضر یک نوار لغزنده امنیتی که به شما اجازه می دهد سطح امنیتی خود را تنظیم کنید. آن را چک کنید!
+torbutton.slider_notification_button = باز کردن تنظیمات امنیتی
+
+torbutton.maximize_warning = Maximizing Tor Browser can allow websites to determine your monitor size, which can be used to track you. We recommend that you leave Tor Browser windows in their original default size.
+
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=این وبسایت (%S) سعی دارد اطلاعات بوم تصویر HTML5 را دریافت کند که ممکن است برای شناسایی منحصر به فرد کامپیوتر شما استفاده شود.\n\nآیا مرورگر تور میبایست اجازه دریافت این اطلاعات را بدهد؟
canvas.notNow=نه در حال حاضر
@@ -61,3 +68,10 @@ canvas.allow=اجازه دهید در آینده
canvas.allowAccessKey=A
canvas.never=هرگز برای این سایت (توصیه شده)
canvas.neverAccessKey=e
+
+# Profile/startup error messages. Strings are kept here for ease of translation.
+# LOCALIZATION NOTE: %S is the application name.
+profileProblemTitle=%S مشکل پروفایل
+profileReadOnly=شما نمی توانید اجرا %S از یک فایل سیستم فقط خواندنی. لطفا کپی کنید %S به محل دیگری قبل از تلاش برای استفاده از آن.
+profileReadOnlyMac=شما نمی توانید اجرا %S از یک فایل سیستم فقط خواندنی. لطفا کپی کنید %S به دسکتاپ خودتان یا پوشه برنامه قبل از تلاش برای استفاده از آن.
+profileAccessDenied=٪ S اجازه دسترسی به مشخصات ندارد. لطفا مجوزهای سیستم فایل خود را تنظیم و دوباره سعی کنید.
diff --git a/src/chrome/locale/fr/torbutton.dtd b/src/chrome/locale/fr/torbutton.dtd
index 0e7b345..f972f41 100644
--- a/src/chrome/locale/fr/torbutton.dtd
+++ b/src/chrome/locale/fr/torbutton.dtd
@@ -24,19 +24,19 @@
<!ENTITY torbutton.pref_connection_more_info.text "Torbutton est actuellement activé. Si vous souhaitez modifier vos paramètres proxy non-Tor, veuillez désactiver Torbutton et revenir à cette fenêtre. Si vous souhaitez modifier vos paramètres Tor, veuillez utiliser la fenêtre des préférences Torbutton.">
<!ENTITY torbutton.context_menu.new_identity "Nouvelle identité">
<!ENTITY torbutton.context_menu.new_identity_key "I">
-<!ENTITY torbutton.context_menu.new_circuit "New Tor Circuit for this Site">
+<!ENTITY torbutton.context_menu.new_circuit "Nouveau circuit Tor pour ce site">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
<!ENTITY torbutton.context_menu.toggle "Activer/Désactiver Tor">
<!ENTITY torbutton.context_menu.toggle.key "T">
-<!ENTITY torbutton.context_menu.preferences "Privacy and Security Settings…">
+<!ENTITY torbutton.context_menu.preferences "Paramètres de confidentialité et de sécurité">
<!ENTITY torbutton.context_menu.preferences.key "P">
<!ENTITY torbutton.context_menu.about "À propos de Torbutton...">
<!ENTITY torbutton.context_menu.about.key "A">
-<!ENTITY torbutton.context_menu.networksettings "Tor Network Settings…">
+<!ENTITY torbutton.context_menu.networksettings "Paramètres du réseau Tor">
<!ENTITY torbutton.context_menu.networksettings.key "S">
-<!ENTITY torbutton.context_menu.downloadUpdate "Check for Tor Browser Update…">
+<!ENTITY torbutton.context_menu.downloadUpdate "Vérifiez les mises à jour du navigateur Tor">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
-<!ENTITY torbutton.context_menu.cookieProtections "Cookie Protections…">
+<!ENTITY torbutton.context_menu.cookieProtections "Protections contre les cookies">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.context_menu.copyTor "Copier l'URL Tor">
<!ENTITY torbutton.context_menu.copyTor.key "p">
@@ -153,8 +153,35 @@
<!ENTITY torbutton.prefs.resist_fingerprinting "Modifier les détails qui vous distingue des autres utilisateurs du Navigateur Tor">
<!ENTITY torbutton.prefs.sec_caption "Niveau de sécurité">
<!ENTITY torbutton.prefs.sec_low "Faible (défaut)">
+<!ENTITY torbutton.prefs.sec_low_usable_desc "Cela offre l'expérience la plus agréable.">
+<!ENTITY torbutton.prefs.sec_low_desc "A ce niveau de sécurité, toutes les fonctions de navigation sont activés.">
+<!ENTITY torbutton.prefs.sec_font_rend_svg_tooltip "Le mécanisme SVG OpenType de rendu des polices est désactivé.">
<!ENTITY torbutton.prefs.sec_med_low "Moyen-Bas">
+<!ENTITY torbutton.prefs.sec_gen_desc "At this security level, the following changes apply (mouseover for details):">
+<!ENTITY torbutton.prefs.sec_html5_desc "HTML5 video and audio media become click-to-play via NoScript.">
+<!ENTITY torbutton.prefs.sec_html5_tooltip "On some sites, you might need to use the NoScript toolbar button to enable these media objects.">
+<!ENTITY torbutton.prefs.sec_some_jit_desc "Some JavaScript performance optimizations are disabled.">
+<!ENTITY torbutton.prefs.sec_jit_desc_tooltip "ION JIT, Type Inference, ASM.JS.">
+<!ENTITY torbutton.prefs.sec_baseline_jit_desc_tooltip "Baseline JIT.">
+<!ENTITY torbutton.prefs.sec_jit_slower_desc "Scripts on some sites may run slower.">
+<!ENTITY torbutton.prefs.sec_jar_desc "Remote JAR files are blocked.">
+<!ENTITY torbutton.prefs.sec_jar_tooltip "JAR files are extremely rare on the web, but can be a source of XSS and other attacks.">
+<!ENTITY torbutton.prefs.sec_mathml_desc "Some mechanisms of displaying math equations are disabled.">
+<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML est désactivé.">
<!ENTITY torbutton.prefs.sec_med_high "Moyen-Haut">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "All JavaScript performance optimizations are disabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_desc "Some font rendering features are disabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "The Graphite font rendering mechanism is disabled.">
+<!ENTITY torbutton.prefs.sec_svg_desc "Some types of images are disabled.">
+<!ENTITY torbutton.prefs.sec_svg_desc_tooltip "Les images SVG sont désactivées.">
+<!ENTITY torbutton.prefs.sec_js_https_desc "JavaScript est désactivé par défaut sur tous les sites non-HTTPS.">
+<!ENTITY torbutton.prefs.sec_js_desc_tooltip "JavaScript can be enabled on a per-site basis via the NoScript toolbar button.">
<!ENTITY torbutton.prefs.sec_high "Haut">
+<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript est désactivé par défaut sur tous les sites.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc "Most audio and video formats are disabled.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc_tooltip "WebM is the only codec that remains enabled.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc "Some fonts and icons may display incorrectly.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Website-provided font files are blocked.">
<!ENTITY torbutton.prefs.sec_custom "Valeurs personnalisées">
-<!ENTITY torbutton.circuit_display.title "Tor circuit for this site">
+<!ENTITY torbutton.circuit_display.title "Circuit Tor pour ce site">
+
diff --git a/src/chrome/locale/fr/torbutton.properties b/src/chrome/locale/fr/torbutton.properties
index 61083eb..bb5a6ae 100644
--- a/src/chrome/locale/fr/torbutton.properties
+++ b/src/chrome/locale/fr/torbutton.properties
@@ -1,10 +1,12 @@
torbutton.button.tooltip.disabled = Activer Tor
torbutton.button.tooltip.enabled = Désactiver Tor
torbutton.circuit_display.internet = Internet
-torbutton.circuit_display.ip_unknown = IP unknown
-torbutton.circuit_display.this_browser = This browser
-torbutton.circuit_display.tor_bridge = Bridge
-torbutton.circuit_display.unknown_country = Unknown country
+torbutton.circuit_display.ip_unknown = IP inconnue
+torbutton.circuit_display.onion_site = Site onion
+torbutton.circuit_display.this_browser = Ce navigateur
+torbutton.circuit_display.relay = relais
+torbutton.circuit_display.tor_bridge = Pont
+torbutton.circuit_display.unknown_country = Pays inconnu
torbutton.panel.tooltip.disabled = Cliquer pour activer Tor
torbutton.panel.tooltip.enabled = Cliquer pour désactiver Tor
torbutton.panel.plugins.disabled = Cliquer pour activer les plugins
@@ -51,7 +53,12 @@ torbutton.popup.short_torbrowser = Information importante concernant Torbutton!\
torbutton.popup.confirm_plugins = Les greffons tels que Flash peuvent nuire à votre anonymat et vie privée.\n\nIls peuvent également contourner Tor afin de révéler votre position actuelle ainsi que votre adresse IP.\n\nÊtes-vous certain de vouloir activer les greffons ?\n\n
torbutton.popup.never_ask_again = Ne plus me poser la question.
-torbutton.popup.confirm_newnym = Tor Browser will close all windows and tabs. All website sessions will be lost.\n\nRestart Tor Browser now to reset your identity?\n\n
+torbutton.popup.confirm_newnym = Le navigateur Tor va fermer toutes les fenêtres et onglets. Tous les sessions ouvertes seront perdues.\n\nVoulez-vous redémarrer le navigateur Tor maintenant pour réinitialiser votre identité ?\n\n
+
+torbutton.slider_notification = The green onion menu has now a security slider which lets you adjust your security level. Check it out!
+torbutton.slider_notification_button = Open security settings
+
+torbutton.maximize_warning = Maximizing Tor Browser can allow websites to determine your monitor size, which can be used to track you. We recommend that you leave Tor Browser windows in their original default size.
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=Ce site (%S) tente d'extraire des informations d'image canvas HTML5 qui pourraient être utilisées comme identifiant unique pour votre ordinateur.\n\nTor Browser doit-il autoriser le site à extraire les informations d'image canvas HTML5 ?
@@ -61,3 +68,10 @@ canvas.allow=Autoriser à l’avenir
canvas.allowAccessKey=A
canvas.never=Jamais pour ce site (recommandé)
canvas.neverAccessKey=e
+
+# Profile/startup error messages. Strings are kept here for ease of translation.
+# LOCALIZATION NOTE: %S is the application name.
+profileProblemTitle=Problème de profil %S
+profileReadOnly=Vous ne pouvez pas exécuter %S à partir d'un système de fichiers en lecture seul. Veuillez copier %S vers un autre emplacement avant d'essayer de l'utiliser.
+profileReadOnlyMac=Vous ne pouvez pas exécuter %S à partir d'un système de fichiers en lecture seul. Veuillez copier %S vers votre dossier Bureau ou Applications avant d'essayer de l'utiliser.
+profileAccessDenied=%S n'a pas la permission d'accéder au profil. Veuillez ajuster les permissions de votre système de fichiers et ressayer.
diff --git a/src/chrome/locale/it/aboutTor.dtd b/src/chrome/locale/it/aboutTor.dtd
index cbeae7c..4e80cf2 100644
--- a/src/chrome/locale/it/aboutTor.dtd
+++ b/src/chrome/locale/it/aboutTor.dtd
@@ -25,7 +25,7 @@
<!ENTITY aboutTor.searchSPPost.link "https://startpage.com/rth/search">
<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
-<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
+<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
<!ENTITY aboutTor.torInfo1.label "Ulteriori Info:">
<!ENTITY aboutTor.torInfo2.label "Nazione & Indirizzo IP:">
diff --git a/src/chrome/locale/it/torbutton.dtd b/src/chrome/locale/it/torbutton.dtd
index 18d0a25..418fa4c 100644
--- a/src/chrome/locale/it/torbutton.dtd
+++ b/src/chrome/locale/it/torbutton.dtd
@@ -24,19 +24,19 @@
<!ENTITY torbutton.pref_connection_more_info.text "Torbutton è attualmente attivo. Se vuoi cambiare la configurazione del proxy quando non usi Tor, disabilita Torbutton e torna qui. Se vuoi modificare la configurazione quando usi Tor, usa la finestra delle preferenze di Torbutton.">
<!ENTITY torbutton.context_menu.new_identity "Nuova identità">
<!ENTITY torbutton.context_menu.new_identity_key "I">
-<!ENTITY torbutton.context_menu.new_circuit "New Tor Circuit for this Site">
+<!ENTITY torbutton.context_menu.new_circuit "Nuovo Circuito Tor per questo Sito">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
<!ENTITY torbutton.context_menu.toggle "Cambia lo stato di Tor">
<!ENTITY torbutton.context_menu.toggle.key "T">
-<!ENTITY torbutton.context_menu.preferences "Privacy and Security Settings…">
+<!ENTITY torbutton.context_menu.preferences "Impostazioni sicurezza e privacy...">
<!ENTITY torbutton.context_menu.preferences.key "P">
<!ENTITY torbutton.context_menu.about "Informazioni su Torbutton...">
<!ENTITY torbutton.context_menu.about.key "A">
-<!ENTITY torbutton.context_menu.networksettings "Tor Network Settings…">
+<!ENTITY torbutton.context_menu.networksettings "Impostazioni di rete di Tor...">
<!ENTITY torbutton.context_menu.networksettings.key "S">
-<!ENTITY torbutton.context_menu.downloadUpdate "Check for Tor Browser Update…">
+<!ENTITY torbutton.context_menu.downloadUpdate "Controllo per aggiornamento Tor Browser...">
<!ENTITY torbutton.context_menu.downloadUpdate.key "A">
-<!ENTITY torbutton.context_menu.cookieProtections "Cookie Protections…">
+<!ENTITY torbutton.context_menu.cookieProtections "Protezioni dei Cookie...">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.context_menu.copyTor "Copia URL Tor">
<!ENTITY torbutton.context_menu.copyTor.key "p">
@@ -153,8 +153,35 @@
<!ENTITY torbutton.prefs.resist_fingerprinting "Cambia i dettagli che ti distinguono dagli altri utenti di Tor Browser">
<!ENTITY torbutton.prefs.sec_caption "Livello di Sicurezza">
<!ENTITY torbutton.prefs.sec_low "Basso (default)">
+<!ENTITY torbutton.prefs.sec_low_usable_desc "Questo permette la migliore esperienza di usablità.">
+<!ENTITY torbutton.prefs.sec_low_desc "A questo livello di sicurezza, tutte le features del browser sono abilitate.">
+<!ENTITY torbutton.prefs.sec_font_rend_svg_tooltip "Il meccanismo di rendering SVG OpenType è disabilitato.">
<!ENTITY torbutton.prefs.sec_med_low "Medio-Basso">
+<!ENTITY torbutton.prefs.sec_gen_desc "A questo livello di sicurezza, i seguenti cambiamenti si applicano a (passa sopra con il mouse per i dettagli):">
+<!ENTITY torbutton.prefs.sec_html5_desc "I video e audio in HTML5 diventano click-to-play grazie a NoScript.">
+<!ENTITY torbutton.prefs.sec_html5_tooltip "Su alcuni siti, potresti dover usare il pulsante toolbar di NoScript per attivare quei media.">
+<!ENTITY torbutton.prefs.sec_some_jit_desc "Alcune ottimizzazioni di performance JavaScript sono disabilitate.">
+<!ENTITY torbutton.prefs.sec_jit_desc_tooltip "ION JIT, Type Inference, ASM.JS.">
+<!ENTITY torbutton.prefs.sec_baseline_jit_desc_tooltip "Baseline JIT.">
+<!ENTITY torbutton.prefs.sec_jit_slower_desc "Gli scripts su alcuni siti possono girare più lenti.">
+<!ENTITY torbutton.prefs.sec_jar_desc "I file JAR remoti sono bloccati.">
+<!ENTITY torbutton.prefs.sec_jar_tooltip "I file JAR sono molto rari nel web, ma possono essere fonte di XSS o altri attacchi.">
+<!ENTITY torbutton.prefs.sec_mathml_desc "Alcuni meccanismi di visualizzazione di equazioni matematiche sono disabilitati.">
+<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML è disabilitato.">
<!ENTITY torbutton.prefs.sec_med_high "Medio-Alto">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "Tutte le ottimizzazioni di JavaScript per le performance sono disattivate.">
+<!ENTITY torbutton.prefs.sec_font_rend_desc "Alcuni rendering dei font sono disabilitati.">
+<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "Il meccanismo di rendering font Graphite è disabilitato.">
+<!ENTITY torbutton.prefs.sec_svg_desc "Alcuni tipi di immagini sono disabilitati.">
+<!ENTITY torbutton.prefs.sec_svg_desc_tooltip "Le immagini SVG sono disabilitate.">
+<!ENTITY torbutton.prefs.sec_js_https_desc "JavaScript è disabilitato di default su tutti i siti non-HTTPS.">
+<!ENTITY torbutton.prefs.sec_js_desc_tooltip "JavaScript può essere attivato a seconda del sito usando il pulsante NoScript sulla barra strumenti.">
<!ENTITY torbutton.prefs.sec_high "Alto">
+<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript è disabilitato di default su tutti i siti.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc "Molti formati audio e video sono disabilitati.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc_tooltip "WebM è l'unico codec che rimane abilitato.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc "Alcuni caratteri e icone possono non essere visualizzati correttamente.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "I font provvisti dal sito sono bloccati.">
<!ENTITY torbutton.prefs.sec_custom "Valori Customizzabili">
-<!ENTITY torbutton.circuit_display.title "Tor circuit for this site">
+<!ENTITY torbutton.circuit_display.title "Circuito Tor per questo sito">
+
diff --git a/src/chrome/locale/it/torbutton.properties b/src/chrome/locale/it/torbutton.properties
index 641dc07..e3929a4 100644
--- a/src/chrome/locale/it/torbutton.properties
+++ b/src/chrome/locale/it/torbutton.properties
@@ -1,10 +1,12 @@
torbutton.button.tooltip.disabled = Attiva Tor
torbutton.button.tooltip.enabled = Disattiva Tor
torbutton.circuit_display.internet = Internet
-torbutton.circuit_display.ip_unknown = IP unknown
-torbutton.circuit_display.this_browser = This browser
+torbutton.circuit_display.ip_unknown = IP sconosciuto
+torbutton.circuit_display.onion_site = sito Onion
+torbutton.circuit_display.this_browser = Questo browser
+torbutton.circuit_display.relay = relay
torbutton.circuit_display.tor_bridge = Bridge
-torbutton.circuit_display.unknown_country = Unknown country
+torbutton.circuit_display.unknown_country = Paese sconosciuto
torbutton.panel.tooltip.disabled = Fai clic per attivare Tor
torbutton.panel.tooltip.enabled = Fai clic per disattivare Tor
torbutton.panel.plugins.disabled = Fai clic per attivare i plugin
@@ -51,7 +53,12 @@ torbutton.popup.short_torbrowser = Informazioni importanti su Torbutton!\n\nTorb
torbutton.popup.confirm_plugins = Alcuni plugin come Flash possono violare la tua privacy e anonimità.\n\nPossono anche eludere Tor per rivelare la tua posizione attuale e il tuo indirizzo IP.\n\nSei sicuro di volere attivare i plugin?\n
torbutton.popup.never_ask_again = Non chiedermelo più
-torbutton.popup.confirm_newnym = Tor Browser will close all windows and tabs. All website sessions will be lost.\n\nRestart Tor Browser now to reset your identity?\n\n
+torbutton.popup.confirm_newnym = Tor Browser chiuderà tutte le schede e finestre. Tutte le sezioni dei siti andranno perse.\n\nRiavviare ora Tor Browser per azzerare la tua identità?\n\n
+
+torbutton.slider_notification = Il menù della cipolla verde ha ora una slider di sicurezza che ti permette di regolare il livello di sicurezza. Dai un'occhiata!
+torbutton.slider_notification_button = Apri impostazioni sicurezza
+
+torbutton.maximize_warning = Maximizing Tor Browser can allow websites to determine your monitor size, which can be used to track you. We recommend that you leave Tor Browser windows in their original default size.
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=Questo sito (%S) tentato di estrarre i dati di immagine HTML5 canvas, che possono essere utilizzati per identificare in modo univoco il computer.\n\nPermettere a Tor Browser di estrarre l'immagine HTML5 canvas per questo sito?
@@ -61,3 +68,10 @@ canvas.allow=acconsenti in futuro
canvas.allowAccessKey=A
canvas.never=Mai per questo sito (raccomandato)
canvas.neverAccessKey=e
+
+# Profile/startup error messages. Strings are kept here for ease of translation.
+# LOCALIZATION NOTE: %S is the application name.
+profileProblemTitle=Problema Profilo %S
+profileReadOnly=Non puoi avviare %S da un file system di sola lettura. Per favore copia %S in un altra posizione prima di usarlo.
+profileReadOnlyMac=Non puoi avviare %S da un file system di sola lettura. Per favore copia %S nel tuo desktop o nella cartella Applicazioni prima di usarlo.
+profileAccessDenied=%S non ha i permessi per accedere al profilo. Per favore, controlla i permessi del tuo file system e riprova.
diff --git a/src/chrome/locale/ja/torbutton.dtd b/src/chrome/locale/ja/torbutton.dtd
index 1dc7e6c..4bdafc2 100644
--- a/src/chrome/locale/ja/torbutton.dtd
+++ b/src/chrome/locale/ja/torbutton.dtd
@@ -153,8 +153,35 @@
<!ENTITY torbutton.prefs.resist_fingerprinting "あなたとほかのTorブラウザのユーザーを区別する詳細を変更">
<!ENTITY torbutton.prefs.sec_caption "セキュリティレベル">
<!ENTITY torbutton.prefs.sec_low "低い(デフォルト)">
+<!ENTITY torbutton.prefs.sec_low_usable_desc "This provides the most usable experience.">
+<!ENTITY torbutton.prefs.sec_low_desc "At this security level, all browser features are enabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_svg_tooltip "The SVG OpenType font rendering mechanism is disabled.">
<!ENTITY torbutton.prefs.sec_med_low "中の低">
+<!ENTITY torbutton.prefs.sec_gen_desc "At this security level, the following changes apply (mouseover for details):">
+<!ENTITY torbutton.prefs.sec_html5_desc "HTML5 video and audio media become click-to-play via NoScript.">
+<!ENTITY torbutton.prefs.sec_html5_tooltip "On some sites, you might need to use the NoScript toolbar button to enable these media objects.">
+<!ENTITY torbutton.prefs.sec_some_jit_desc "Some JavaScript performance optimizations are disabled.">
+<!ENTITY torbutton.prefs.sec_jit_desc_tooltip "ION JIT, Type Inference, ASM.JS.">
+<!ENTITY torbutton.prefs.sec_baseline_jit_desc_tooltip "Baseline JIT.">
+<!ENTITY torbutton.prefs.sec_jit_slower_desc "Scripts on some sites may run slower.">
+<!ENTITY torbutton.prefs.sec_jar_desc "Remote JAR files are blocked.">
+<!ENTITY torbutton.prefs.sec_jar_tooltip "JAR files are extremely rare on the web, but can be a source of XSS and other attacks.">
+<!ENTITY torbutton.prefs.sec_mathml_desc "Some mechanisms of displaying math equations are disabled.">
+<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML is disabled.">
<!ENTITY torbutton.prefs.sec_med_high "中の上">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "All JavaScript performance optimizations are disabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_desc "Some font rendering features are disabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "The Graphite font rendering mechanism is disabled.">
+<!ENTITY torbutton.prefs.sec_svg_desc "Some types of images are disabled.">
+<!ENTITY torbutton.prefs.sec_svg_desc_tooltip "SVG images are disabled.">
+<!ENTITY torbutton.prefs.sec_js_https_desc "JavaScript is disabled by default on all non-HTTPS sites.">
+<!ENTITY torbutton.prefs.sec_js_desc_tooltip "JavaScript can be enabled on a per-site basis via the NoScript toolbar button.">
<!ENTITY torbutton.prefs.sec_high "高い">
+<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript is disabled by default on all sites.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc "Most audio and video formats are disabled.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc_tooltip "WebM is the only codec that remains enabled.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc "Some fonts and icons may display incorrectly.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Website-provided font files are blocked.">
<!ENTITY torbutton.prefs.sec_custom "カスタム値">
<!ENTITY torbutton.circuit_display.title "Tor circuit for this site">
+
diff --git a/src/chrome/locale/ja/torbutton.properties b/src/chrome/locale/ja/torbutton.properties
index 44c6155..133ad88 100644
--- a/src/chrome/locale/ja/torbutton.properties
+++ b/src/chrome/locale/ja/torbutton.properties
@@ -2,7 +2,9 @@ torbutton.button.tooltip.disabled = Torを有効にする
torbutton.button.tooltip.enabled = Torを無効にする
torbutton.circuit_display.internet = Internet
torbutton.circuit_display.ip_unknown = IP unknown
+torbutton.circuit_display.onion_site = Onion site
torbutton.circuit_display.this_browser = This browser
+torbutton.circuit_display.relay = relay
torbutton.circuit_display.tor_bridge = Bridge
torbutton.circuit_display.unknown_country = Unknown country
torbutton.panel.tooltip.disabled = クリックしてTorを有効にする
@@ -53,6 +55,11 @@ torbutton.popup.confirm_plugins = Flashなどのプラグインはあなたの
torbutton.popup.never_ask_again = 次からはたずねない
torbutton.popup.confirm_newnym = Tor Browser will close all windows and tabs. All website sessions will be lost.\n\nRestart Tor Browser now to reset your identity?\n\n
+torbutton.slider_notification = The green onion menu has now a security slider which lets you adjust your security level. Check it out!
+torbutton.slider_notification_button = Open security settings
+
+torbutton.maximize_warning = Maximizing Tor Browser can allow websites to determine your monitor size, which can be used to track you. We recommend that you leave Tor Browser windows in their original default size.
+
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=このWebサイト(%S)がHTML5 canvas画像を使用しようとしています。これはあなたのコンピューターを識別するために使われる可能性があります。\n\nTor ブラウザーにHTML5 canvas画像の使用を許可しますか?
canvas.notNow=今は許可しない
@@ -61,3 +68,10 @@ canvas.allow=許可する
canvas.allowAccessKey=A
canvas.never=このサイトには許可しない(推奨)
canvas.neverAccessKey=e
+
+# Profile/startup error messages. Strings are kept here for ease of translation.
+# LOCALIZATION NOTE: %S is the application name.
+profileProblemTitle=%S Profile Problem
+profileReadOnly=You cannot run %S from a read-only file system. Please copy %S to another location before trying to use it.
+profileReadOnlyMac=You cannot run %S from a read-only file system. Please copy %S to your Desktop or Applications folder before trying to use it.
+profileAccessDenied=%S does not have permission to access the profile. Please adjust your file system permissions and try again.
diff --git a/src/chrome/locale/ko/torbutton.dtd b/src/chrome/locale/ko/torbutton.dtd
index 9ef3362..8496505 100644
--- a/src/chrome/locale/ko/torbutton.dtd
+++ b/src/chrome/locale/ko/torbutton.dtd
@@ -153,8 +153,35 @@
<!ENTITY torbutton.prefs.resist_fingerprinting "다른 Tor browser 사용자로부터 구별되는 세부 사항 변경">
<!ENTITY torbutton.prefs.sec_caption "보안 등급">
<!ENTITY torbutton.prefs.sec_low "낮음 (기본)">
+<!ENTITY torbutton.prefs.sec_low_usable_desc "This provides the most usable experience.">
+<!ENTITY torbutton.prefs.sec_low_desc "At this security level, all browser features are enabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_svg_tooltip "The SVG OpenType font rendering mechanism is disabled.">
<!ENTITY torbutton.prefs.sec_med_low "중간 낮음">
+<!ENTITY torbutton.prefs.sec_gen_desc "At this security level, the following changes apply (mouseover for details):">
+<!ENTITY torbutton.prefs.sec_html5_desc "HTML5 video and audio media become click-to-play via NoScript.">
+<!ENTITY torbutton.prefs.sec_html5_tooltip "On some sites, you might need to use the NoScript toolbar button to enable these media objects.">
+<!ENTITY torbutton.prefs.sec_some_jit_desc "Some JavaScript performance optimizations are disabled.">
+<!ENTITY torbutton.prefs.sec_jit_desc_tooltip "ION JIT, Type Inference, ASM.JS.">
+<!ENTITY torbutton.prefs.sec_baseline_jit_desc_tooltip "Baseline JIT.">
+<!ENTITY torbutton.prefs.sec_jit_slower_desc "Scripts on some sites may run slower.">
+<!ENTITY torbutton.prefs.sec_jar_desc "Remote JAR files are blocked.">
+<!ENTITY torbutton.prefs.sec_jar_tooltip "JAR files are extremely rare on the web, but can be a source of XSS and other attacks.">
+<!ENTITY torbutton.prefs.sec_mathml_desc "Some mechanisms of displaying math equations are disabled.">
+<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML is disabled.">
<!ENTITY torbutton.prefs.sec_med_high "중간 높음">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "All JavaScript performance optimizations are disabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_desc "Some font rendering features are disabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "The Graphite font rendering mechanism is disabled.">
+<!ENTITY torbutton.prefs.sec_svg_desc "Some types of images are disabled.">
+<!ENTITY torbutton.prefs.sec_svg_desc_tooltip "SVG images are disabled.">
+<!ENTITY torbutton.prefs.sec_js_https_desc "JavaScript is disabled by default on all non-HTTPS sites.">
+<!ENTITY torbutton.prefs.sec_js_desc_tooltip "JavaScript can be enabled on a per-site basis via the NoScript toolbar button.">
<!ENTITY torbutton.prefs.sec_high "높음">
+<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript is disabled by default on all sites.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc "Most audio and video formats are disabled.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc_tooltip "WebM is the only codec that remains enabled.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc "Some fonts and icons may display incorrectly.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Website-provided font files are blocked.">
<!ENTITY torbutton.prefs.sec_custom "맞춤 값">
<!ENTITY torbutton.circuit_display.title "Tor circuit for this site">
+
diff --git a/src/chrome/locale/ko/torbutton.properties b/src/chrome/locale/ko/torbutton.properties
index 2a72a99..df9ddbf 100644
--- a/src/chrome/locale/ko/torbutton.properties
+++ b/src/chrome/locale/ko/torbutton.properties
@@ -1,10 +1,12 @@
torbutton.button.tooltip.disabled = Tor 활성화
torbutton.button.tooltip.enabled = Tor 비활성화
-torbutton.circuit_display.internet = Internet
-torbutton.circuit_display.ip_unknown = IP unknown
+torbutton.circuit_display.internet = 인터넷
+torbutton.circuit_display.ip_unknown = 미확인 IP
+torbutton.circuit_display.onion_site = Onion site
torbutton.circuit_display.this_browser = This browser
-torbutton.circuit_display.tor_bridge = Bridge
-torbutton.circuit_display.unknown_country = Unknown country
+torbutton.circuit_display.relay = relay
+torbutton.circuit_display.tor_bridge = 브릿지
+torbutton.circuit_display.unknown_country = 미확인 국가
torbutton.panel.tooltip.disabled = Tor를 활성화하려면 클릭
torbutton.panel.tooltip.enabled = Tor를 비활성화하려면 클릭
torbutton.panel.plugins.disabled = 플러그인을 활성화하려면 클릭
@@ -53,6 +55,11 @@ torbutton.popup.confirm_plugins = 플래시와 같은 플러그인들은 당신
torbutton.popup.never_ask_again = 다시는 물어보지 않기
torbutton.popup.confirm_newnym = Tor Browser will close all windows and tabs. All website sessions will be lost.\n\nRestart Tor Browser now to reset your identity?\n\n
+torbutton.slider_notification = The green onion menu has now a security slider which lets you adjust your security level. Check it out!
+torbutton.slider_notification_button = Open security settings
+
+torbutton.maximize_warning = Maximizing Tor Browser can allow websites to determine your monitor size, which can be used to track you. We recommend that you leave Tor Browser windows in their original default size.
+
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=This website (%S) attempted to extract HTML5 canvas image data, which may be used to uniquely identify your computer.\n\nShould Tor Browser allow this website to extract HTML5 canvas image data?
canvas.notNow=지금은 하지 않겠습니다
@@ -61,3 +68,10 @@ canvas.allow=다음에 허용함
canvas.allowAccessKey=A
canvas.never=이 사이트에는 영원히 않음 (권장)
canvas.neverAccessKey=e
+
+# Profile/startup error messages. Strings are kept here for ease of translation.
+# LOCALIZATION NOTE: %S is the application name.
+profileProblemTitle=%S Profile Problem
+profileReadOnly=You cannot run %S from a read-only file system. Please copy %S to another location before trying to use it.
+profileReadOnlyMac=You cannot run %S from a read-only file system. Please copy %S to your Desktop or Applications folder before trying to use it.
+profileAccessDenied=%S does not have permission to access the profile. Please adjust your file system permissions and try again.
diff --git a/src/chrome/locale/nl/torbutton.dtd b/src/chrome/locale/nl/torbutton.dtd
index 4e48991..b9209b4 100644
--- a/src/chrome/locale/nl/torbutton.dtd
+++ b/src/chrome/locale/nl/torbutton.dtd
@@ -153,8 +153,35 @@
<!ENTITY torbutton.prefs.resist_fingerprinting "Verander details die je onderscheiden van andere Tor Browser gebruikers">
<!ENTITY torbutton.prefs.sec_caption "Beveiligingsniveau">
<!ENTITY torbutton.prefs.sec_low "Laag (standaard)">
+<!ENTITY torbutton.prefs.sec_low_usable_desc "This provides the most usable experience.">
+<!ENTITY torbutton.prefs.sec_low_desc "At this security level, all browser features are enabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_svg_tooltip "The SVG OpenType font rendering mechanism is disabled.">
<!ENTITY torbutton.prefs.sec_med_low "Medium-Laag">
+<!ENTITY torbutton.prefs.sec_gen_desc "At this security level, the following changes apply (mouseover for details):">
+<!ENTITY torbutton.prefs.sec_html5_desc "HTML5 video and audio media become click-to-play via NoScript.">
+<!ENTITY torbutton.prefs.sec_html5_tooltip "On some sites, you might need to use the NoScript toolbar button to enable these media objects.">
+<!ENTITY torbutton.prefs.sec_some_jit_desc "Some JavaScript performance optimizations are disabled.">
+<!ENTITY torbutton.prefs.sec_jit_desc_tooltip "ION JIT, Type Inference, ASM.JS.">
+<!ENTITY torbutton.prefs.sec_baseline_jit_desc_tooltip "Baseline JIT.">
+<!ENTITY torbutton.prefs.sec_jit_slower_desc "Scripts kunnen op sommige websites trager zijn.">
+<!ENTITY torbutton.prefs.sec_jar_desc "Remote JAR files are blocked.">
+<!ENTITY torbutton.prefs.sec_jar_tooltip "JAR files are extremely rare on the web, but can be a source of XSS and other attacks.">
+<!ENTITY torbutton.prefs.sec_mathml_desc "Some mechanisms of displaying math equations are disabled.">
+<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML is uitgeschakeld.">
<!ENTITY torbutton.prefs.sec_med_high "Medium-Hoog">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "All JavaScript performance optimizations are disabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_desc "Some font rendering features are disabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "The Graphite font rendering mechanism is disabled.">
+<!ENTITY torbutton.prefs.sec_svg_desc "Sommige afbeeldingtypes zijn uitgeschakeld.">
+<!ENTITY torbutton.prefs.sec_svg_desc_tooltip "SVG afbeeldingen zijn uitgeschakeld.">
+<!ENTITY torbutton.prefs.sec_js_https_desc "JavaScript is standaard uitgeschakeld op alle niet-HTTPS websites.">
+<!ENTITY torbutton.prefs.sec_js_desc_tooltip "JavaScript can be enabled on a per-site basis via the NoScript toolbar button.">
<!ENTITY torbutton.prefs.sec_high "Hoog">
+<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript is standaard uitgeschakeld op alle websites.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc "Meeste audio en video formaten zijn uitgeschakeld.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc_tooltip "WebM blijft de enige codec die is ingeschakeld.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc "Some fonts and icons may display incorrectly.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Door websites aangeleverde lettertypes worden geblokkeerd.">
<!ENTITY torbutton.prefs.sec_custom "Aangepaste waarden">
<!ENTITY torbutton.circuit_display.title "Tor circuit voor deze website">
+
diff --git a/src/chrome/locale/nl/torbutton.properties b/src/chrome/locale/nl/torbutton.properties
index 4e24acf..3ed9ef3 100644
--- a/src/chrome/locale/nl/torbutton.properties
+++ b/src/chrome/locale/nl/torbutton.properties
@@ -2,7 +2,9 @@ torbutton.button.tooltip.disabled = Tor inschakelen
torbutton.button.tooltip.enabled = Tor uitschakelen
torbutton.circuit_display.internet = Internet
torbutton.circuit_display.ip_unknown = Onbekend IP adres
+torbutton.circuit_display.onion_site = Onion-site
torbutton.circuit_display.this_browser = Deze browser
+torbutton.circuit_display.relay = relay
torbutton.circuit_display.tor_bridge = Bridge
torbutton.circuit_display.unknown_country = Onbekend land
torbutton.panel.tooltip.disabled = Hier klikken om Tor in te schakelen
@@ -53,6 +55,11 @@ torbutton.popup.confirm_plugins = plug-ins zoals flash kunnen u privacy en anoni
torbutton.popup.never_ask_again = Vraag me dit nooit meer.
torbutton.popup.confirm_newnym = De Tor Browser zal alle windows en tabs sluiten. Alle website sessies zullen verloren gaan.\n\nHerstart de Tor Browser om je identiteit te resetten?\n\n
+torbutton.slider_notification = The green onion menu has now a security slider which lets you adjust your security level. Check it out!
+torbutton.slider_notification_button = Open de beveiligingsvoorkeuren
+
+torbutton.maximize_warning = Maximizing Tor Browser can allow websites to determine your monitor size, which can be used to track you. We recommend that you leave Tor Browser windows in their original default size.
+
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=De website (%S) heeft geprobeerd HTML5 canvas image data op te vragen, wat kan gebruikt worden voor een unieke identificatie van je computer.\n\nMoet Tor Browser deze website toestaan om HTML5 canvas image data op te vragen?
canvas.notNow=Niet nu
@@ -61,3 +68,10 @@ canvas.allow=Toestaan en onthouden
canvas.allowAccessKey=A
canvas.never=Nooit toestaan voor deze site(aangeraden)
canvas.neverAccessKey=e
+
+# Profile/startup error messages. Strings are kept here for ease of translation.
+# LOCALIZATION NOTE: %S is the application name.
+profileProblemTitle=%S Profiel probleem
+profileReadOnly=Je kan %S niet draaien vanaf een alleen-lezen bestands-systeem Kopieer %S naar een andere locatie voor je het opnieuw probeert.
+profileReadOnlyMac=Je kan %S niet draaien vanaf een alleen lezen bestands-systeem. Kopieer %S naar je Bureaublad of de Applicatie map voordat je het opnieuw probeert.
+profileAccessDenied=%S heeft niet de juiste permissies om toegang te krijgen tot het profiel. Pas de bestands-systeem permissies aan en probeer het opnieuw.
diff --git a/src/chrome/locale/pl/torbutton.dtd b/src/chrome/locale/pl/torbutton.dtd
index 0e16322..78b5062 100644
--- a/src/chrome/locale/pl/torbutton.dtd
+++ b/src/chrome/locale/pl/torbutton.dtd
@@ -153,8 +153,35 @@
<!ENTITY torbutton.prefs.resist_fingerprinting "Zmień szczegóły odróżniające Cię od innych użytkowników Przeglądarki Tora">
<!ENTITY torbutton.prefs.sec_caption "Poziom bezpieczeństwa">
<!ENTITY torbutton.prefs.sec_low "Niski (domyślny)">
+<!ENTITY torbutton.prefs.sec_low_usable_desc "To zapewnia najbardziej przyjazdne dla użytkownika ustawienia.">
+<!ENTITY torbutton.prefs.sec_low_desc "Na tym poziomie zabezpieczeń, wszystkie funkcje przeglądarki są włączone.">
+<!ENTITY torbutton.prefs.sec_font_rend_svg_tooltip "Mechanizm SVG OpenType renderowania czcionek jest wyłączony.">
<!ENTITY torbutton.prefs.sec_med_low "Średni-Niski">
+<!ENTITY torbutton.prefs.sec_gen_desc "Na tym poziomie bezpieczeństwa, stosuje się następujące zmiany (najedź kursorem po więcej szczegółów): ">
+<!ENTITY torbutton.prefs.sec_html5_desc "HTML5 video oraz audio będą dostępne jako 'kliknij-aby-otworzyć' przez NoScript.">
+<!ENTITY torbutton.prefs.sec_html5_tooltip "Na niektórych stronach internetowych będziesz musiał użyć przycisku NoScript znajdującym się w pasku narzędzi, aby włączyć dane obiekty medialne.">
+<!ENTITY torbutton.prefs.sec_some_jit_desc "Niektóre optymalizacje wydajności JavaScript są wyłączone.">
+<!ENTITY torbutton.prefs.sec_jit_desc_tooltip "ION JIT, Type Inference, ASM.JS.">
+<!ENTITY torbutton.prefs.sec_baseline_jit_desc_tooltip "Baseline JIT.">
+<!ENTITY torbutton.prefs.sec_jit_slower_desc "Skrypty na niektórych stronach mogą działać wolniej.">
+<!ENTITY torbutton.prefs.sec_jar_desc "Zdalne pliki JAR są blokowane.">
+<!ENTITY torbutton.prefs.sec_jar_tooltip "Pliki JAR są bardzo rzadkim typem plików w internecie. Mogą być one źródłem ataków XSS i innych.">
+<!ENTITY torbutton.prefs.sec_mathml_desc "Niektóre mechanizmy wyświetlania równań matematycznych są wyłączone.">
+<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML jest wyłączony.">
<!ENTITY torbutton.prefs.sec_med_high "Średni-Wysoki">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "Wszystkie optymalizacje wydajności JavaScript są wyłączone.">
+<!ENTITY torbutton.prefs.sec_font_rend_desc "Niektóre funkcje renderingu czcionki są wyłączone.">
+<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "Mechanizm Graphite do renderowania czcionki jest wyłączony.">
+<!ENTITY torbutton.prefs.sec_svg_desc "Niektóre typy obrazów są wyłączone.">
+<!ENTITY torbutton.prefs.sec_svg_desc_tooltip "Obrazy SVG są wyłączone.">
+<!ENTITY torbutton.prefs.sec_js_https_desc "JavaScript jest wyłączone domyślnie dla wszystkich stron które nie są HTTPS.">
+<!ENTITY torbutton.prefs.sec_js_desc_tooltip "JavaScript może być włączony dla pojedyńczych, wybranych przez Ciebie stronach używając przycisku NoScript z paska narzędzi.">
<!ENTITY torbutton.prefs.sec_high "Wysoki">
+<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript jest domyślnie wyłączona na wszystkich stronach.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc "Większość formatów audio i wideo jest wyłączone.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc_tooltip "WebM jest jedynym kodekiem który pozostaje włączony.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc "Niektóre czcionki i ikony mogą być wyświetlane niepoprawnie.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Pliki czcionek dostarczane przez strony internetowe są blokowane.">
<!ENTITY torbutton.prefs.sec_custom "Wartości niestandardowe">
<!ENTITY torbutton.circuit_display.title "Obwód Tor dla tej strony">
+
diff --git a/src/chrome/locale/pl/torbutton.properties b/src/chrome/locale/pl/torbutton.properties
index f267dbe..c04c876 100644
--- a/src/chrome/locale/pl/torbutton.properties
+++ b/src/chrome/locale/pl/torbutton.properties
@@ -2,7 +2,9 @@ torbutton.button.tooltip.disabled = Włącz Tora
torbutton.button.tooltip.enabled = Wyłącz Tora
torbutton.circuit_display.internet = Internet
torbutton.circuit_display.ip_unknown = IP nieznany
+torbutton.circuit_display.onion_site = strona Onion
torbutton.circuit_display.this_browser = Ta przeglądarka
+torbutton.circuit_display.relay = przekaźnik
torbutton.circuit_display.tor_bridge = Bridge
torbutton.circuit_display.unknown_country = Nieznane państwo
torbutton.panel.tooltip.disabled = Kliknij tutaj, aby włączyć Tora
@@ -53,6 +55,11 @@ torbutton.popup.confirm_plugins = Wtyczki takie jak Flash mogą szkodzić Twojej
torbutton.popup.never_ask_again = Nie pytaj mnie więcej
torbutton.popup.confirm_newnym = Tor Browser zamknie wszystkie otwarte okna i karty. Wszystkie sesje zostaną utracone.\n\nCzy chcesz zrestartować Tor Browser teraz, aby zmienić tożsamość?\n\n
+torbutton.slider_notification = The green onion menu has now a security slider which lets you adjust your security level. Check it out!
+torbutton.slider_notification_button = Open security settings
+
+torbutton.maximize_warning = Maximizing Tor Browser can allow websites to determine your monitor size, which can be used to track you. We recommend that you leave Tor Browser windows in their original default size.
+
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=Ta strona internetowa (%S) próbowała wydobyć HTML5 canvas danych obrazu, które mogą być wykorzystane w celu identyfikacji Twojego komputera.\n\nCzy chcesz, aby Tor Browser pozwolił tej stronie na wydobycie danych obrazu HTML5 canvas?
canvas.notNow=Nie teraz
@@ -61,3 +68,10 @@ canvas.allow=Pozwól w przyszłości
canvas.allowAccessKey=P
canvas.never=Nigdy dla tej strony (zalecane)
canvas.neverAccessKey=i
+
+# Profile/startup error messages. Strings are kept here for ease of translation.
+# LOCALIZATION NOTE: %S is the application name.
+profileProblemTitle=%S Problem profilu
+profileReadOnly=Nie możesz uruchomić %S z systemu plików tylko do odczytu. Prosimy o skopiowanie %S do innej lokalizacji przed ponownym jego użyciem.
+profileReadOnlyMac=Nie możesz uruchomić %S w systemie plików tylko do odczytu. Prosimy o skopiowanie %S na pulpit, lub do folderu aplikacji przed ponowną próbą uruchomienia.
+profileAccessDenied=%S nie posiada uprawnień, aby zobaczyć ten profil. Prosimy zmienić uprawnienia systemu plików i spróbować ponownie.
diff --git a/src/chrome/locale/pt/aboutTor.dtd b/src/chrome/locale/pt/aboutTor.dtd
index 3ad709e..bdfaec2 100644
--- a/src/chrome/locale/pt/aboutTor.dtd
+++ b/src/chrome/locale/pt/aboutTor.dtd
@@ -8,40 +8,40 @@
<!ENTITY aboutTor.outOfDateTorOn.label "CONTUDO, este navegador está desatualizado.">
<!ENTITY aboutTor.outOfDateTorOff.label "TAMBÉM, este navegador está desatualizado.">
-<!ENTITY aboutTor.outOfDate2.label "Click on the onion and then choose Check for Tor Browser Update.">
+<!ENTITY aboutTor.outOfDate2.label "Clique na cebola e escolha Procurar por Atualizações do Navegador Tor">
-<!ENTITY aboutTor.check.label "Testar as Definições da Rede Tor">
+<!ENTITY aboutTor.check.label "Testar as Configurações da Rede Tor">
<!ENTITY aboutTor.success.label "Parabéns!">
<!ENTITY aboutTor.success2.label "Este navegador está configurado para utilizar o Tor.">
-<!ENTITY aboutTor.success3.label "Agora já pode navegar a Internet de forma anónima.">
-<!ENTITY aboutTor.failure.label "Algo Correu Mal!">
+<!ENTITY aboutTor.success3.label "Agora já pode navegar na Internet anonimamente.">
+<!ENTITY aboutTor.failure.label "Ocorreu Algo de Errado!">
<!ENTITY aboutTor.failure2.label "O Tor não está a funcionar neste navegador.">
-<!ENTITY aboutTor.failure3prefix.label "Para assistência, por favor contacte">
+<!ENTITY aboutTor.failure3prefix.label "Para assistência, por favor, contacte">
<!ENTITY aboutTor.failure3Link "help(a)rt.torproject.org">
<!ENTITY aboutTor.failure3suffix.label ".">
-<!ENTITY aboutTor.search.label "Pesquisar">
+<!ENTITY aboutTor.search.label "Procurar">
<!ENTITY aboutTor.searchSPPost.link "https://startpage.com/rth/search">
<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
<!ENTITY aboutTor.torInfo1.label "Informação adicional:">
-<!ENTITY aboutTor.torInfo2.label "País e endereço IP:">
+<!ENTITY aboutTor.torInfo2.label "País e Endereço de IP:">
<!ENTITY aboutTor.torInfo3.label "Nó de saída:">
-<!ENTITY aboutTor.torInfo4.label "Este servidor não guarda informação dos visitantes.">
-<!ENTITY aboutTor.whatnextQuestion.label "O que se segue?">
+<!ENTITY aboutTor.torInfo4.label "Este servidor não regista qualquer informação sobre os visitantes.">
+<!ENTITY aboutTor.whatnextQuestion.label "E a seguir?">
<!ENTITY aboutTor.whatnextAnswer.label "O Tor NÃO é tudo o que precisa para navegar anonimamente na internet! Poderá ter que mudar alguns dos seus hábitos de navegação para ter a certeza que a sua identidade está segura.">
-<!ENTITY aboutTor.whatnext.label "Dicas sobre como se tornar anónimo »">
+<!ENTITY aboutTor.whatnext.label "Dicas Sobre Como se Manter Anónimo »">
<!ENTITY aboutTor.whatnext.link "https://www.torproject.org/download/download.html.en#warning">
-<!ENTITY aboutTor.helpInfo1.label "Você pode ajudar!">
-<!ENTITY aboutTor.helpInfo2.label "Há muitas maneiras para ajudar a rede Tor tornar-se mais rápida e forte:">
-<!ENTITY aboutTor.helpInfo3.label "Criar um Nó de Relay Tor »">
+<!ENTITY aboutTor.helpInfo1.label "Você Pode Ajudar!">
+<!ENTITY aboutTor.helpInfo2.label "Existem muitas maneiras para ajudar a tornar a rede Tor mais rápida e segura:">
+<!ENTITY aboutTor.helpInfo3.label "Execute um Nó de Retransmissão Tor »">
<!ENTITY aboutTor.helpInfo3.link "https://www.torproject.org/docs/tor-doc-relay.html.en">
-<!ENTITY aboutTor.helpInfo4.label "Voluntarie os seus serviços »">
+<!ENTITY aboutTor.helpInfo4.label "Voluntarie os Seus Serviços »">
<!ENTITY aboutTor.helpInfo4.link "https://www.torproject.org/getinvolved/volunteer.html.en">
-<!ENTITY aboutTor.helpInfo5.label "Faça um donativo »">
+<!ENTITY aboutTor.helpInfo5.label "Efetue um Donativo »">
<!ENTITY aboutTor.helpInfo5.link "https://www.torproject.org/donate/donate.html.en">
<!ENTITY aboutTor.footer.label "O Projeto Tor é uma organização sem fins lucrativos US 501(c)(3) dedicada à investigação, desenvolvimento e promoção de anonimidade e privacidade online.">
diff --git a/src/chrome/locale/pt/browser.properties b/src/chrome/locale/pt/browser.properties
index 8849b67..52ef750 100644
--- a/src/chrome/locale/pt/browser.properties
+++ b/src/chrome/locale/pt/browser.properties
@@ -2,4 +2,4 @@
browser.startup.homepage=about:tor
# Spell checker dictionary
-spellchecker.dictionary=en_US
+spellchecker.dictionary=pt_PT
diff --git a/src/chrome/locale/pt/torbutton.dtd b/src/chrome/locale/pt/torbutton.dtd
index b7cc81c..0ba6607 100644
--- a/src/chrome/locale/pt/torbutton.dtd
+++ b/src/chrome/locale/pt/torbutton.dtd
@@ -24,19 +24,19 @@
<!ENTITY torbutton.pref_connection_more_info.text "Torbutton está activo. Se deseja mudar as configurações de Proxy que não sejam do Tor, por favor desactive o Torbutton e volte aqui. Se deseja alterar as configurações do Tor, por favor, use a janela de preferências do Torbutton.">
<!ENTITY torbutton.context_menu.new_identity "Identidade Nova">
<!ENTITY torbutton.context_menu.new_identity_key "I">
-<!ENTITY torbutton.context_menu.new_circuit "New Tor Circuit for this Site">
+<!ENTITY torbutton.context_menu.new_circuit "Novo circuito Tor para este site">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
<!ENTITY torbutton.context_menu.toggle "Alterar Status Tor">
<!ENTITY torbutton.context_menu.toggle.key "T">
-<!ENTITY torbutton.context_menu.preferences "Privacy and Security Settings…">
+<!ENTITY torbutton.context_menu.preferences "Definições de segurança e privacidade...">
<!ENTITY torbutton.context_menu.preferences.key "P">
<!ENTITY torbutton.context_menu.about "Sobre o Torbutton...">
<!ENTITY torbutton.context_menu.about.key "A">
-<!ENTITY torbutton.context_menu.networksettings "Tor Network Settings…">
+<!ENTITY torbutton.context_menu.networksettings "Definições de rede do Tor...">
<!ENTITY torbutton.context_menu.networksettings.key "S">
-<!ENTITY torbutton.context_menu.downloadUpdate "Check for Tor Browser Update…">
+<!ENTITY torbutton.context_menu.downloadUpdate "Procurar por atualizações do Tor...">
<!ENTITY torbutton.context_menu.downloadUpdate.key "A">
-<!ENTITY torbutton.context_menu.cookieProtections "Cookie Protections…">
+<!ENTITY torbutton.context_menu.cookieProtections "Proteções para Cookies...">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.context_menu.copyTor "Copiar endereço do Tor">
<!ENTITY torbutton.context_menu.copyTor.key "P">
@@ -153,8 +153,35 @@
<!ENTITY torbutton.prefs.resist_fingerprinting "Change details that distinguish you from other Tor Browser users">
<!ENTITY torbutton.prefs.sec_caption "Nível de Segurança">
<!ENTITY torbutton.prefs.sec_low "Baixo (pré-definido)">
+<!ENTITY torbutton.prefs.sec_low_usable_desc "Isto proporciona a melhor experiência usável.">
+<!ENTITY torbutton.prefs.sec_low_desc "Neste nível de segurança, as funções do navegador estão ativadas.">
+<!ENTITY torbutton.prefs.sec_font_rend_svg_tooltip "O mecanismo de renderização do tipo de letra OpenType SVG está desativado.">
<!ENTITY torbutton.prefs.sec_med_low "Médio-Baixo">
+<!ENTITY torbutton.prefs.sec_gen_desc "Neste nível de segurança, aplicam-se as seguintes alterações ('rato sobre' para os detalhes).">
+<!ENTITY torbutton.prefs.sec_html5_desc "A multimédia de áudio e vídeo HTML5 torna-se clique-par-reproduzir via NoScript.">
+<!ENTITY torbutton.prefs.sec_html5_tooltip "Em alguns sítios, poderá precisar de usar o botão da barra de ferramentas NoScript para ativar estes objetos de multimédia.">
+<!ENTITY torbutton.prefs.sec_some_jit_desc "Algumas otimizações de desempenho JavaScript estão desativadas.">
+<!ENTITY torbutton.prefs.sec_jit_desc_tooltip "ION JIT, Type Inference, ASM.JS.">
+<!ENTITY torbutton.prefs.sec_baseline_jit_desc_tooltip "Linha de base JIT.">
+<!ENTITY torbutton.prefs.sec_jit_slower_desc "Os scripts em alguns sítios poderão funcionar muito lentamente.">
+<!ENTITY torbutton.prefs.sec_jar_desc "Os ficheiros JAR remotos estão bloqueados.">
+<!ENTITY torbutton.prefs.sec_jar_tooltip "JAR files are extremely rare on the web, but can be a source of XSS and other attacks.">
+<!ENTITY torbutton.prefs.sec_mathml_desc "Some mechanisms of displaying math equations are disabled.">
+<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML está desativado.">
<!ENTITY torbutton.prefs.sec_med_high "Médio-Alto">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "All JavaScript performance optimizations are disabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_desc "Some font rendering features are disabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "The Graphite font rendering mechanism is disabled.">
+<!ENTITY torbutton.prefs.sec_svg_desc "Some types of images are disabled.">
+<!ENTITY torbutton.prefs.sec_svg_desc_tooltip "As imagens SVG estão desativadas.">
+<!ENTITY torbutton.prefs.sec_js_https_desc "JavaScript is disabled by default on all non-HTTPS sites.">
+<!ENTITY torbutton.prefs.sec_js_desc_tooltip "JavaScript can be enabled on a per-site basis via the NoScript toolbar button.">
<!ENTITY torbutton.prefs.sec_high "Alto">
+<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript está desativado por predefinição em todos os sítios.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc "Most audio and video formats are disabled.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc_tooltip "WebM is the only codec that remains enabled.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc "Some fonts and icons may display incorrectly.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Website-provided font files are blocked.">
<!ENTITY torbutton.prefs.sec_custom "Valores definidos">
-<!ENTITY torbutton.circuit_display.title "Tor circuit for this site">
+<!ENTITY torbutton.circuit_display.title "Circuito Tor para este site">
+
diff --git a/src/chrome/locale/pt/torbutton.properties b/src/chrome/locale/pt/torbutton.properties
index 761001f..f343a97 100644
--- a/src/chrome/locale/pt/torbutton.properties
+++ b/src/chrome/locale/pt/torbutton.properties
@@ -1,19 +1,21 @@
-torbutton.button.tooltip.disabled = Activar Tor
+torbutton.button.tooltip.disabled = Ativar Tor
torbutton.button.tooltip.enabled = Desativar Tor
torbutton.circuit_display.internet = Internet
torbutton.circuit_display.ip_unknown = IP desconhecido
+torbutton.circuit_display.onion_site = Sítio do Onion
torbutton.circuit_display.this_browser = Este navegador
-torbutton.circuit_display.tor_bridge = Bridge
+torbutton.circuit_display.relay = retransmitir
+torbutton.circuit_display.tor_bridge = Ponte
torbutton.circuit_display.unknown_country = País desconhecido
torbutton.panel.tooltip.disabled = Clique para ativar o Tor
torbutton.panel.tooltip.enabled = Clique para desativar o Tor
-torbutton.panel.plugins.disabled = Clique para ativar os plug-ins
-torbutton.panel.plugins.enabled = Clique para desativar os plug-ins
+torbutton.panel.plugins.disabled = Clique para ativar os plugins
+torbutton.panel.plugins.enabled = Clique para desativar os plugins
torbutton.panel.label.disabled = Tor desativado
torbutton.panel.label.enabled = Tor ativado
-extensions.torbutton(a)torproject.org.description = Torbutton provides a button to configure Tor settings and quickly and easily clear private browsing data.
-torbutton.popup.history.warning = O Torbutton bloqueou a actividade de um separador carregado num diferente estado do Tor.\n\nIsto é para contornar os erros Firefox 409737 e 417869.\n\nSe este aviso lhe parece ter aparecido sem qualquer razão aparente, um dos separadores está a tentar recarregar-se a si próprio em segundo plano e foi bloqueado.\n\nPara recarregar o separador neste estado do Tor, seleccione 'entrar' na caixa de localização da URL.\n\n
-torbutton.popup.plugin.warning = Torbutton bloqueou o carregamento do plugin de conteúdo do Tor.\n\nUtilize o Salvar Como.\n\n
+extensions.torbutton(a)torproject.org.description = o Torbutton proporciona um botão para configurar as configurações do Tor e para limpar facilmente e rapidamente os dados de navegação privados.
+torbutton.popup.history.warning = O Torbutton bloqueou a atividade de um separador carregado num diferente estado do Tor.\n\nIsto é para contornar os erros do Firefox 409737 e 417869.\n\nSe esta janela aparecer sem qualquer motivo aparente, um dos seus separadores está a tentar recarregar-se em segundo plano, e este foi bloqueado.\n\nPara recarregar o separador neste estado do Tor, pressione 'enter' na caixa de localização do URL.\n\n
+torbutton.popup.plugin.warning = Torbutton bloqueou o carregamento direto do Tor do conteúdo do plugin.\n\nEm vez disso, utilize o Guardar Como.\n\n
torbutton.popup.confirm_ca_certs = Torbutton: Você não possui nenhum Certificado de Autenticação. Verificar a lista de Certificados de Autenticação pode ser uma operação lenta para o Tor. Gostaria de desactivar o modo de isolamento de Certificados de Autenticação? (Se você não percebeu esta mensagem, o mais seguro é pressionar OK)
torbutton.popup.ff3.warning = Aviso!\n\nO Torbutton no Firefox 3 é conhecido por dar a conhecer o seu fuso horário e os seus Live Marks, através da rede Tor.\n\nTem a certeza que deseja continuar?
torbutton.popup.toggle.warning = Precisa de alternar o Tor ou reiniciar para aplicar as suas definições.
@@ -53,6 +55,11 @@ torbutton.popup.confirm_plugins = Plugins such as Flash can harm your privacy an
torbutton.popup.never_ask_again = Não voltar a perguntar-me
torbutton.popup.confirm_newnym = O Navegador Tor irá fechar todas as janela e separadores. Estarão perdidas todas sessões do sítio da Web.\n\nReiniciar o Navegador Tor para repor a sua identidade?\n\n
+torbutton.slider_notification = O menu cebola verde tem agora um cursor de segurança que o deixa ajustar o seu nível de segurança. Dê uma vista de olhos!
+torbutton.slider_notification_button = Abra as definições de segurança
+
+torbutton.maximize_warning = Maximizing Tor Browser can allow websites to determine your monitor size, which can be used to track you. We recommend that you leave Tor Browser windows in their original default size.
+
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=Este site (%S) tentou extrair informação HTML5, que pode ser usada para identificar claramente o seu computador.\n\nQuer que o navegador Tor permita que o site extraia a informação HTML5?
canvas.notNow=Agora não
@@ -61,3 +68,10 @@ canvas.allow=Permitir de futuro
canvas.allowAccessKey=A
canvas.never=Nunca para este sítio (recomendado)
canvas.neverAccessKey=e
+
+# Profile/startup error messages. Strings are kept here for ease of translation.
+# LOCALIZATION NOTE: %S is the application name.
+profileProblemTitle=%S - Problema de Perfil
+profileReadOnly=Não pode executar %S a partir de um ficheiro do sistema só-de-leitura. Por favor, copie %S para outra localização antes de tentar utilizá-lo.
+profileReadOnlyMac=Não pode executar %S a partir de um ficheiro do sistema só-de-leitura. Por favor, copie %S para o seu Ambiente de Trabalho antes de tentar utilizá-lo.
+profileAccessDenied=%S não tem permissão para aceder ao perfil. Por favor, ajuste as suas permissões de ficheiro do sistema e tente de novo.
diff --git a/src/chrome/locale/ru/aboutTor.dtd b/src/chrome/locale/ru/aboutTor.dtd
index c1cdf4c..240386b 100644
--- a/src/chrome/locale/ru/aboutTor.dtd
+++ b/src/chrome/locale/ru/aboutTor.dtd
@@ -8,13 +8,13 @@
<!ENTITY aboutTor.outOfDateTorOn.label "ТЕМ НЕ МЕНЕЕ, данный браузер устарел.">
<!ENTITY aboutTor.outOfDateTorOff.label "КРОМЕ ТОГО, данный браузер устарел.">
-<!ENTITY aboutTor.outOfDate2.label "Нажмите на "лук"и затем выберите "Проверить обновления Tor Browser"">
+<!ENTITY aboutTor.outOfDate2.label "Нажмите на "луковицу"и затем выберите "Проверить обновления браузера Tor"">
-<!ENTITY aboutTor.check.label "Проверка интернет-настроек Tor">
+<!ENTITY aboutTor.check.label "Проверить настройки сети Tor">
-<!ENTITY aboutTor.success.label "Поздравления!">
+<!ENTITY aboutTor.success.label "Поздравляем!">
<!ENTITY aboutTor.success2.label "Данный браузер настроен для использования Tor.">
-<!ENTITY aboutTor.success3.label "Теперь Вы можете посещать интернет-сайты в анонимном режиме.">
+<!ENTITY aboutTor.success3.label "Теперь Вы можете просматривать интернет-сайты в анонимном режиме.">
<!ENTITY aboutTor.failure.label "Что-то пошло не так!">
<!ENTITY aboutTor.failure2.label "Tor не работает в этом браузере.">
<!ENTITY aboutTor.failure3prefix.label "Чтобы получить помощь, обращайтесь:">
@@ -25,26 +25,26 @@
<!ENTITY aboutTor.searchSPPost.link "https://startpage.com/rth/search">
<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
-<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
+<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
<!ENTITY aboutTor.torInfo1.label "Дополнительные сведения:">
-<!ENTITY aboutTor.torInfo2.label "Страна & IP-адрес">
-<!ENTITY aboutTor.torInfo3.label "Конечный узел">
-<!ENTITY aboutTor.torInfo4.label "Данный сервер не ведет регистр с какой-либо информацией по посетителям.">
-<!ENTITY aboutTor.whatnextQuestion.label "Что далее?">
-<!ENTITY aboutTor.whatnextAnswer.label "Tor НЕ является исчерпывающим средством для анонимного использования сети! Возможно, Вам придется изменить свои некоторые привычки интернет-серфинга, чтобы обезопасить свои личные данные.">
-<!ENTITY aboutTor.whatnext.label "Рекомендации о том, как сохранить анонимность »">
+<!ENTITY aboutTor.torInfo2.label "Страна и IP-адрес">
+<!ENTITY aboutTor.torInfo3.label "Конечный узел:">
+<!ENTITY aboutTor.torInfo4.label "Данный сервер не собирает какую-либо информацию о посетителях.">
+<!ENTITY aboutTor.whatnextQuestion.label "Что дальше?">
+<!ENTITY aboutTor.whatnextAnswer.label "Tor НЕ является исчерпывающим средством для анонимного использования сети! Возможно, чтобы обезопасить свои личные данные, Вам придется изменить некоторые привычки работы в Интернете.">
+<!ENTITY aboutTor.whatnext.label "Рекомендации для сохранения анонимности »">
<!ENTITY aboutTor.whatnext.link "https://www.torproject.org/download/download.html.en#warning">
<!ENTITY aboutTor.helpInfo1.label "Вы можете помочь!">
-<!ENTITY aboutTor.helpInfo2.label "Есть много способов сделать Сеть Tor более быстродейственной и устойчивой:">
-<!ENTITY aboutTor.helpInfo3.label "Запустите релейный узел Tor »">
+<!ENTITY aboutTor.helpInfo2.label "Есть много способов сделать сеть Tor более быстрой и устойчивой:">
+<!ENTITY aboutTor.helpInfo3.label "Запустить ретранслятор Tor »">
<!ENTITY aboutTor.helpInfo3.link "https://www.torproject.org/docs/tor-doc-relay.html#ru">
-<!ENTITY aboutTor.helpInfo4.label "Оказывайте добровольную помощь »">
+<!ENTITY aboutTor.helpInfo4.label "Станьте нашим добровольцем »">
<!ENTITY aboutTor.helpInfo4.link "https://www.torproject.org/getinvolved/volunteer.html#ru">
<!ENTITY aboutTor.helpInfo5.label "Сделайте взнос »">
<!ENTITY aboutTor.helpInfo5.link "https://www.torproject.org/donate/donate.html#ru">
-<!ENTITY aboutTor.footer.label "Проект Tor - это некоммерческая организация типа US 501(c)(3), предназначенная для исследования, развития и образования в области сохранения анонимности и личных данных.">
-<!ENTITY aboutTor.learnMore.label "Узнайте больше о Проекте Tor »">
+<!ENTITY aboutTor.footer.label "Проект Tor - это пользующаяся привилегиями США 501(c)(3) некоммерческая организация, целью которой является проведение исследований, развитие и образование в сфере анонимности и личных данных онлайн.">
+<!ENTITY aboutTor.learnMore.label "Узнайте больше о проекте Tor »">
<!ENTITY aboutTor.learnMore.link "https://www.torproject.org/about/overview.html#ru
">
diff --git a/src/chrome/locale/ru/brand.dtd b/src/chrome/locale/ru/brand.dtd
index bf81534..b23bc68 100644
--- a/src/chrome/locale/ru/brand.dtd
+++ b/src/chrome/locale/ru/brand.dtd
@@ -5,7 +5,7 @@
<!ENTITY brandShortName "Tor Browser">
<!ENTITY brandFullName "Tor Browser">
<!ENTITY vendorShortName "Проект Tor">
-<!ENTITY trademarkInfo.part1 "Firefox и его логотипы это торговые знаки Mozilla Foundation.">
+<!ENTITY trademarkInfo.part1 "Firefox и его логотипы являются торговыми знаками Mozilla Foundation.">
<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
<!ENTITY plugins.installed.find "Нажмите для загрузки установленных системных плагинов">
diff --git a/src/chrome/locale/ru/torbutton.dtd b/src/chrome/locale/ru/torbutton.dtd
index b5b0f17..4d472cb 100644
--- a/src/chrome/locale/ru/torbutton.dtd
+++ b/src/chrome/locale/ru/torbutton.dtd
@@ -8,54 +8,54 @@
<!ENTITY torbutton.prefs.proxy.host.https "SSL-прокси:">
<!ENTITY torbutton.prefs.proxy.host.ftp "FTP-прокси:">
<!ENTITY torbutton.prefs.proxy.host.gopher "Gopher-прокси:">
-<!ENTITY torbutton.prefs.proxy.host.socks "SOCKS хост:">
+<!ENTITY torbutton.prefs.proxy.host.socks "SOCKS-протокол:">
<!ENTITY torbutton.prefs.proxy.port "Порт:">
-<!ENTITY torbutton.about.title "Справка">
+<!ENTITY torbutton.about.title "О Torbutton">
<!ENTITY torbutton.about.version "Версия:">
-<!ENTITY torbutton.about.summary "Защищает конфиденциальность вашего просмотра страниц через Tor.">
-<!ENTITY torbutton.about.code "Авторы программы:">
+<!ENTITY torbutton.about.summary "Защищает конфиденциальность вашего просмотра страниц с помощью Tor.">
+<!ENTITY torbutton.about.code "Разработчики программы:">
<!ENTITY torbutton.about.maintainer "Сопровождение:">
-<!ENTITY torbutton.about.security_review "Обзор безопасности:">
+<!ENTITY torbutton.about.security_review "Обзор состояния безопасности:">
<!ENTITY torbutton.about.donate "Если вам нравится использовать Tor, вы можете">
-<!ENTITY torbutton.about.make_donation "сделать пожертвование.">
-<!ENTITY torbutton.pref_connection.notice "Для изменения настроек необходимо отключить Torbutton.">
+<!ENTITY torbutton.about.make_donation "внести пожертвование.">
+<!ENTITY torbutton.pref_connection.notice "Отключить Torbutton для изменения настроек необходимо.">
<!ENTITY torbutton.pref_connection.more_info "Подробности">
-<!ENTITY torbutton.pref_connection_more_info.title "Подсказка">
-<!ENTITY torbutton.pref_connection_more_info.text "Torbutton включен. Если будут изменяться настройки прокси, не являющегося частью сети Tor, необходимо сначала отключить Torbutton и затем вернуться сюда. Если будут изменяться настройки Tor, необходимо использовать окно настроек Torbutton.">
+<!ENTITY torbutton.pref_connection_more_info.title "Помощь">
+<!ENTITY torbutton.pref_connection_more_info.text "Torbutton включен. Если вы хотите изменить настройки прокси, не являющегося частью сети Tor, необходимо сначала отключить Torbutton и затем вернуться сюда. Если вы хотите изменить настройки Tor, необходимо использовать окно настроек Torbutton.">
<!ENTITY torbutton.context_menu.new_identity "Новая личность">
<!ENTITY torbutton.context_menu.new_identity_key "Я">
-<!ENTITY torbutton.context_menu.new_circuit "Новая цепочка Tor для этого Сайта">
+<!ENTITY torbutton.context_menu.new_circuit "Новая цепочка Tor для этого cайта">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
-<!ENTITY torbutton.context_menu.toggle "Изменить состояние Tor">
+<!ENTITY torbutton.context_menu.toggle "Изменить статус Tor">
<!ENTITY torbutton.context_menu.toggle.key "T">
-<!ENTITY torbutton.context_menu.preferences "Настройки Секретности и Безопасности">
+<!ENTITY torbutton.context_menu.preferences "Настройки конфиденциальности и безопасности">
<!ENTITY torbutton.context_menu.preferences.key "Н">
<!ENTITY torbutton.context_menu.about "О Torbutton...">
-<!ENTITY torbutton.context_menu.about.key "О">
+<!ENTITY torbutton.context_menu.about.key "А">
<!ENTITY torbutton.context_menu.networksettings "Настройки сети Tor">
<!ENTITY torbutton.context_menu.networksettings.key "S">
-<!ENTITY torbutton.context_menu.downloadUpdate "Проверить обновления для Tor Browser">
+<!ENTITY torbutton.context_menu.downloadUpdate "Проверить на наличие обновлений Tor Browser">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
-<!ENTITY torbutton.context_menu.cookieProtections "Защита Cookie">
+<!ENTITY torbutton.context_menu.cookieProtections "Защита куки-файла">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.context_menu.copyTor "Копировать URL Tor">
-<!ENTITY torbutton.context_menu.copyTor.key "p">
+<!ENTITY torbutton.context_menu.copyTor.key "П">
<!ENTITY torbutton.context_menu.openTorTab "Открыть Tor URL в новой вкладке">
-<!ENTITY torbutton.context_menu.openTorTab.key "r">
+<!ENTITY torbutton.context_menu.openTorTab.key "Р">
<!ENTITY torbutton.context_menu.openTorWindow "Открыть Tor URL в новом окне">
-<!ENTITY torbutton.context_menu.openTorWindow.key "d">
+<!ENTITY torbutton.context_menu.openTorWindow.key "Д">
<!ENTITY torbutton.button.label "Torbutton">
-<!ENTITY torbutton.button.tooltip "Инициализировать Torbutton">
-<!ENTITY torbutton.prefs.privacy_security_settings "Настройки Конфиденциальности и Безопасности">
+<!ENTITY torbutton.button.tooltip "Нажмите, чтобы инициализировать Torbutton">
+<!ENTITY torbutton.prefs.privacy_security_settings "Настройки конфиденциальности и безопасности">
<!ENTITY torbutton.prefs.block_thread "Блокировать чтение из журнала в режиме Tor (важно)">
<!ENTITY torbutton.prefs.block_thwrite "Блокировать запись в журнал в режиме Tor (желательно)">
-<!ENTITY torbutton.prefs.block_nthread "Блокировать чтение из журнала в режиме не-Tor (необяз.)">
-<!ENTITY torbutton.prefs.block_nthwrite "Блокировать запись в журнал в режиме не-Tor (необяз.)">
-<!ENTITY torbutton.prefs.clear_history "Очищать журнал при переключении режимов Tor (необяз.)">
-<!ENTITY torbutton.prefs.clear_cache "Запрещать кеширование на диск при использовании Tor и очищать весь кеш при переключении режимов Tor">
-<!ENTITY torbutton.prefs.block_cache "Полностью отключить кеш при использовании Tor">
+<!ENTITY torbutton.prefs.block_nthread "Блокировать чтение из журнала в режиме не-Tor (опционально)">
+<!ENTITY torbutton.prefs.block_nthwrite "Блокировать запись в журнал в режиме не-Tor (опционально)">
+<!ENTITY torbutton.prefs.clear_history "Очищать журнал при переключении режимов Tor (опционально)">
+<!ENTITY torbutton.prefs.clear_cache "Запрещать кэширование на диск при использовании Tor и очищать весь кэш при переключении режимов Tor">
+<!ENTITY torbutton.prefs.block_cache "Полностью отключить кэш при использовании Tor">
<!ENTITY torbutton.prefs.cookie_jars "Хранить cookies в режиме не-Tor в защищенном файле">
-<!ENTITY torbutton.prefs.cookie_protection "Используйте Диалог защиты Cookie на выбор">
+<!ENTITY torbutton.prefs.cookie_protection "Используйте диалог защиты cookie на выбор">
<!ENTITY torbutton.prefs.mmm_cookies "Ручное управление cookies (опасно)">
<!ENTITY torbutton.prefs.clear_cookies "Очищать cookies при переключении режимов Tor">
<!ENTITY torbutton.prefs.disable_plugins "Отключать плагины при использовании Tor (важно)">
@@ -63,80 +63,80 @@
<!ENTITY torbutton.prefs.isolate_content "Ограничить динамическое содержание текущим режимом Tor (важно)">
<!ENTITY torbutton.prefs.no_updates "Отключить обновления во время использования Tor">
<!ENTITY torbutton.prefs.set_uagent "Маскировать пользователя при использовании Tor (важно)">
-<!ENTITY torbutton.prefs.dynamic "Содержание">
+<!ENTITY torbutton.prefs.dynamic "Динамичное содержание">
<!ENTITY torbutton.prefs.cookies "Cookies">
<!ENTITY torbutton.prefs.cache "Кэш">
<!ENTITY torbutton.prefs.history "Журнал">
<!ENTITY torbutton.prefs.no_search "Блокировать поисковые запросы при использовании Tor (желательно)">
<!ENTITY torbutton.prefs.shutdown "Закрытие">
-<!ENTITY torbutton.prefs.tor_shutdown "Очищать cookies Tor, если браузер закрывается при включенном Tor">
-<!ENTITY torbutton.prefs.all_shutdown "Очищать cookies при любом закрытии браузера">
-<!ENTITY torbutton.prefs.no_shutdown "Не очищать cookies при закрытии браузера">
+<!ENTITY torbutton.prefs.tor_shutdown "Очищать куки-файлы Tor, если браузер закрывается при включенном Tor">
+<!ENTITY torbutton.prefs.all_shutdown "Очищать куки-файлы при любом закрытии браузера">
+<!ENTITY torbutton.prefs.no_shutdown "Не очищать куки-файлы при закрытии браузера">
<!ENTITY torbutton.prefs.disable_sessionstore "Отключить сохранение сессий (желательно)">
<!ENTITY torbutton.prefs.headers "Заголовки">
<!ENTITY torbutton.prefs.spoof_english "Заголовки как в версии браузера US English">
-<!ENTITY torbutton.prefs.refererspoofing "Подстановка ссылок (реферер)">
-<!ENTITY torbutton.prefs.spoofblank "Spoof blank referer during Tor usage (may break some sites)">
+<!ENTITY torbutton.prefs.refererspoofing "Подстановка заголовка запроса (реферер)">
+<!ENTITY torbutton.prefs.spoofblank "Имитировать пустой реферер во время использования Tor (может привести к невозможности просмотра некоторых сайтов)">
<!ENTITY torbutton.prefs.smartspoof "Ловкая подстановка реферера во время использования Tor (подмена перекрёстных доменных рефереров)">
-<!ENTITY torbutton.prefs.nospoof "No referer spoof during Tor usage (sends referers as normal)">
+<!ENTITY torbutton.prefs.nospoof "Не имитировать реферер во время использования Tor (отсылать обычные рефереры)">
<!ENTITY torbutton.prefs.disable_domstorage "Отключить DOM Storage при использовани Tor (важно)">
<!ENTITY torbutton.prefs.forms "Формы">
<!ENTITY torbutton.prefs.block_tforms "Блокировать сохранение паролей и данных форм при использовании Tor (желательно)">
-<!ENTITY torbutton.prefs.block_ntforms "Блокировать сохранение паролей и данных форм при отключенном Tor (необяз.)">
+<!ENTITY torbutton.prefs.block_ntforms "Блокировать сохранение паролей и данных форм при отключенном Tor (опционально)">
<!ENTITY torbutton.prefs.tor "Tor">
-<!ENTITY torbutton.prefs.non_tor "Не-Tor">
-<!ENTITY torbutton.prefs.restore_tor "Во время запуска, если восстанавливается сессия, установить состояние Tor в:">
-<!ENTITY torbutton.prefs.startup_tor "При запуске браузера, установить состояние Tor в:">
-<!ENTITY torbutton.prefs.reload_crashed_jar "Восстанавливать/очищать cookies после аварии Firefox (желательно)">
-<!ENTITY torbutton.prefs.dual_cookie_jars "Хранить все cookies в защищенных файлах (опасно)">
+<!ENTITY torbutton.prefs.non_tor "Вне режима Tor">
+<!ENTITY torbutton.prefs.restore_tor "Во время запуска восстановленной сессии установить состояние Tor:">
+<!ENTITY torbutton.prefs.startup_tor "При запуске браузера установить состояние Tor:">
+<!ENTITY torbutton.prefs.reload_crashed_jar "Перезагрузить/очистить куки-файлы в случае ошибок в работе Firefox (желательно)">
+<!ENTITY torbutton.prefs.dual_cookie_jars "Хранить все куки-файлы в защищенных файлах (опасно)">
<!ENTITY torbutton.prefs.clear_http_auth "Очищать сессии аутентификации HTTP (желательно)">
<!ENTITY torbutton.prefs.block_js_history "Открывать все предыдущие страницы в нынешнем режиме Tor (важно)">
<!ENTITY torbutton.prefs.resize_on_toggle "Масштабировать окна кратно 50 пикселам при использовании Tor (желательно)">
-<!ENTITY torbutton.prefs.close_tor "Закрывать все окна и вкладки Tor при переключении режимов (необяз.)">
-<!ENTITY torbutton.prefs.close_nontor "Закрывать все окна и вкладки не-Tor при переключении режимов (необяз.)">
-<!ENTITY torbutton.prefs.block_links "Блокировать щелчки по ссылкам и перезагрузку страниц из разных режимов Tor (необяз.)">
-<!ENTITY torbutton.prefs.jar_certs "Хранить SSL сертификаты в раздельных jar-файлах для Tor/не-Tor (желательно)">
-<!ENTITY torbutton.prefs.jar_ca_certs "Хранить CA сертификаты в раздельных jar-файлах для Tor/не-Tor (желательно)">
+<!ENTITY torbutton.prefs.close_tor "Закрывать все окна и вкладки Tor при переключении режимов (опционально)">
+<!ENTITY torbutton.prefs.close_nontor "Закрывать все окна и вкладки вне режима Tor при переключении режимов (опционально)">
+<!ENTITY torbutton.prefs.block_links "Блокировать щелчки по ссылкам и перезагрузку страниц из разных режимов Tor (опционально)">
+<!ENTITY torbutton.prefs.jar_certs "Хранить сертификаты SSL в раздельных jar-файлах в режиме /вне режима Tor (желательно)">
+<!ENTITY torbutton.prefs.jar_ca_certs "Хранить сертификаты CA в раздельных jar-файлах для режима /вне режима Tor (желательно)">
<!ENTITY torbutton.prefs.locked_mode "Отключить "Кнопку" и "Горячие клавиши" для предотвращеня случайного переключения режима">
-<!ENTITY torbutton.prefs.startup_state "При обычном запуске (без восстановления сессии), устанавливать состояние Tor в:">
-<!ENTITY torbutton.prefs.shutdown_state "Выключеное состояние">
+<!ENTITY torbutton.prefs.startup_state "При обычном запуске (без восстановления сессии) устанавливать состояние Tor:">
+<!ENTITY torbutton.prefs.shutdown_state "Выключенное состояние">
<!ENTITY torbutton.prefs.startup "Запуск">
-<!ENTITY torbutton.prefs.block_tor_file_net "Блокировать доступ к сети в режиме Tor, от адресов типа file:// (рекомендуется)">
-<!ENTITY torbutton.prefs.block_nontor_file_net "Блокировать доступ к сети в режиме Не-Tor, от адресов типа file://">
+<!ENTITY torbutton.prefs.block_tor_file_net "Блокировать доступ к сети в режиме Tor от адресов типа file:// (рекомендуется)">
+<!ENTITY torbutton.prefs.block_nontor_file_net "Блокировать доступ к сети вне режима Tor от адресов типа file://">
<!ENTITY torbutton.prefs.restore_defaults "Восстановить значения по умолчанию">
<!ENTITY torbutton.prefs.test_settings "Проверить настройки">
-<!ENTITY torbutton.prefs.test_auto "Проверять настройки Tor, каждый раз когда я включаю этот режим при каждом запуске Firefox">
-<!ENTITY torbutton.prefs.disable_livemarks "Disable livemarks updates during Tor usage">
-<!ENTITY torbutton.prefs.tor_memory_jar "Не писать cookies на диск в режиме Tor">
-<!ENTITY torbutton.prefs.nontor_memory_jar "Не писать cookies на диск в режиме Не-Tor">
+<!ENTITY torbutton.prefs.test_auto "Проверять настройки Tor каждый раз при включении этот режим при каждом запуске Firefox">
+<!ENTITY torbutton.prefs.disable_livemarks "Отключать обновления livemarks во время использования Tor">
+<!ENTITY torbutton.prefs.tor_memory_jar "Не писать куки-файлы на диск в режиме Tor">
+<!ENTITY torbutton.prefs.nontor_memory_jar "Не писать куки-файлы на диск вне режима Tor">
<!ENTITY torbutton.prefs.session_restore "Может ли храниться сохраняться и воссанавливаться сессия со следующими вкладками:">
-<!ENTITY torbutton.prefs.nontor_tabs "Вкладки загруженые вне режима Tor">
-<!ENTITY torbutton.prefs.tor_tabs "Вкладки загруженые в режиме Tor">
+<!ENTITY torbutton.prefs.nontor_tabs "Вкладки, загруженные вне режима Tor">
+<!ENTITY torbutton.prefs.tor_tabs "Вкладки, загруженые в режиме Tor">
<!ENTITY torbutton.prefs.socks_vfour "SOCKS 4">
<!ENTITY torbutton.prefs.socks_vfive "SOCKS 5">
<!ENTITY torbutton.prefs.no_proxies_on "Нет прокси для: ">
<!ENTITY torbutton.prefs.no_proxy_warning "Внимание: Не вносите никаких имен доменов в поле выше">
<!ENTITY torbutton.prefs.spoofreresh "Стереть правила подстановок">
<!ENTITY torbutton.prefs.refereroptions "Опции подстановок рефереров">
-<!ENTITY torbutton.prefs.nospoof "No referer spoof during Tor usage (sends referers as normal)">
+<!ENTITY torbutton.prefs.nospoof "Не имитировать реферер во время использования Tor (отсылать обычные рефереры)">
<!ENTITY torbutton.prefs.spoofroot "Подмена содержащих папки страницы">
<!ENTITY torbutton.prefs.spoofdomain "Подменить домен в качестве реферера">
-<!ENTITY torbutton.prefs.spoofblank "Spoof blank referer during Tor usage (may break some sites)">
-<!ENTITY torbutton.cookiedialog.title "Управление защитой Cookie">
+<!ENTITY torbutton.prefs.spoofblank "Имитировать пустой реферер во время использования Tor (может привести к невозможности просмотра некоторых сайтов)">
+<!ENTITY torbutton.cookiedialog.title "Управление защитой куки-файлов">
<!ENTITY torbutton.cookiedialog.lockCol "Защищено">
-<!ENTITY torbutton.cookiedialog.domainCol "Имя компьютера">
+<!ENTITY torbutton.cookiedialog.domainCol "Ведущий узел">
<!ENTITY torbutton.cookiedialog.nameCol "Имя">
<!ENTITY torbutton.cookiedialog.pathCol "Путь">
-<!ENTITY torbutton.cookiedialog.protectCookie "Защищать Cookie">
-<!ENTITY torbutton.cookiedialog.removeCookie "Удалить Cookie">
-<!ENTITY torbutton.cookiedialog.unprotectCookie "Снять защиту Cookie">
-<!ENTITY torbutton.cookiedialog.removeAllBut "Удалить все кроме защищённых">
-<!ENTITY torbutton.cookiedialog.saveAllCookies "Защищать новые Cookies">
-<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "Не защищать новые Cookies">
-<!ENTITY torbutton.prefs.disable_livemarks "Disable livemarks updates during Tor usage">
+<!ENTITY torbutton.cookiedialog.protectCookie "Защищать куки-файлы">
+<!ENTITY torbutton.cookiedialog.removeCookie "Удалить куки-файлы">
+<!ENTITY torbutton.cookiedialog.unprotectCookie "Снять защиту куки-файлов">
+<!ENTITY torbutton.cookiedialog.removeAllBut "Удалить все, кроме защищённых">
+<!ENTITY torbutton.cookiedialog.saveAllCookies "Защищать новые куки-файлы">
+<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "Не защищать новые куки-файлы">
+<!ENTITY torbutton.prefs.disable_livemarks "Отключать обновления livemarks во время использования Tor">
<!ENTITY torbutton.prefs.dtd_recommended "(рекомендуется)">
-<!ENTITY torbutton.prefs.dtd_optional "(по желанию)">
-<!ENTITY torbutton.prefs.dtd_crucial "(критично)">
+<!ENTITY torbutton.prefs.dtd_optional "(опционально)">
+<!ENTITY torbutton.prefs.dtd_crucial "(важно)">
<!ENTITY torbutton.prefs.update_torbutton_via_tor "Перенаправлять обновления Torbutton через Tor">
<!ENTITY torbutton.prefs.dodge_google_captcha "Автоматически использовать альтернативную поисковую систему при показе Google Captcha:">
<!ENTITY torbutton.prefs.engine1 "ixquick.com">
@@ -145,16 +145,43 @@
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
<!ENTITY torbutton.prefs.fix_google_srch "Удалять сведения о платформе и языке из запросов строки поиска Google">
-<!ENTITY torbutton.prefs.transparentTor "Прозрачная торификация (Требует пользовательских transproxy или Tor-маршрутизатора)">
-<!ENTITY torbutton.prefs.priv_caption "Настройки приватности">
-<!ENTITY torbutton.prefs.block_disk "Не сохранять журнал обозревателя и данные с посещаемых сайтов (активирует функцию приватного просмотра)">
-<!ENTITY torbutton.prefs.restrict_thirdparty "Блокировать сторонние куки и другие данные слежения">
+<!ENTITY torbutton.prefs.transparentTor "Прозрачная "торификация" (требует пользовательских transproxy или Tor-маршрутизатора)">
+<!ENTITY torbutton.prefs.priv_caption "Настройки конфиденциальности">
+<!ENTITY torbutton.prefs.block_disk "Не сохранять историю журнала посещений и данные с посещаемых сайтов (активирует функцию конфиденциального просмотра)">
+<!ENTITY torbutton.prefs.restrict_thirdparty "Блокировать сторонние куки-файлы и другие данные слежения">
<!ENTITY torbutton.prefs.block_plugins "Отключить расширения браузера (такие как Flash)">
<!ENTITY torbutton.prefs.resist_fingerprinting "Изменить сведения, отличающие вас от других пользователей Tor Browser">
-<!ENTITY torbutton.prefs.sec_caption "Уровень Безопасности">
+<!ENTITY torbutton.prefs.sec_caption "Уровень безопасности">
<!ENTITY torbutton.prefs.sec_low "Низкий (по умолчанию)">
-<!ENTITY torbutton.prefs.sec_med_low "Средне-Низкий">
-<!ENTITY torbutton.prefs.sec_med_high "Средне-Высокий">
+<!ENTITY torbutton.prefs.sec_low_usable_desc "This provides the most usable experience.">
+<!ENTITY torbutton.prefs.sec_low_desc "At this security level, all browser features are enabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_svg_tooltip "The SVG OpenType font rendering mechanism is disabled.">
+<!ENTITY torbutton.prefs.sec_med_low "Средний">
+<!ENTITY torbutton.prefs.sec_gen_desc "At this security level, the following changes apply (mouseover for details):">
+<!ENTITY torbutton.prefs.sec_html5_desc "HTML5 video and audio media become click-to-play via NoScript.">
+<!ENTITY torbutton.prefs.sec_html5_tooltip "On some sites, you might need to use the NoScript toolbar button to enable these media objects.">
+<!ENTITY torbutton.prefs.sec_some_jit_desc "Some JavaScript performance optimizations are disabled.">
+<!ENTITY torbutton.prefs.sec_jit_desc_tooltip "ION JIT, Type Inference, ASM.JS.">
+<!ENTITY torbutton.prefs.sec_baseline_jit_desc_tooltip "Baseline JIT.">
+<!ENTITY torbutton.prefs.sec_jit_slower_desc "Scripts on some sites may run slower.">
+<!ENTITY torbutton.prefs.sec_jar_desc "Remote JAR files are blocked.">
+<!ENTITY torbutton.prefs.sec_jar_tooltip "JAR files are extremely rare on the web, but can be a source of XSS and other attacks.">
+<!ENTITY torbutton.prefs.sec_mathml_desc "Some mechanisms of displaying math equations are disabled.">
+<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML is disabled.">
+<!ENTITY torbutton.prefs.sec_med_high "Умеренно высокий">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "All JavaScript performance optimizations are disabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_desc "Some font rendering features are disabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "The Graphite font rendering mechanism is disabled.">
+<!ENTITY torbutton.prefs.sec_svg_desc "Some types of images are disabled.">
+<!ENTITY torbutton.prefs.sec_svg_desc_tooltip "SVG images are disabled.">
+<!ENTITY torbutton.prefs.sec_js_https_desc "JavaScript is disabled by default on all non-HTTPS sites.">
+<!ENTITY torbutton.prefs.sec_js_desc_tooltip "JavaScript can be enabled on a per-site basis via the NoScript toolbar button.">
<!ENTITY torbutton.prefs.sec_high "Высокий">
-<!ENTITY torbutton.prefs.sec_custom "Собственные Значения">
+<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript is disabled by default on all sites.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc "Most audio and video formats are disabled.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc_tooltip "WebM is the only codec that remains enabled.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc "Some fonts and icons may display incorrectly.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Website-provided font files are blocked.">
+<!ENTITY torbutton.prefs.sec_custom "Собственные значения">
<!ENTITY torbutton.circuit_display.title "Цепочка Tor для этого сайта">
+
diff --git a/src/chrome/locale/ru/torbutton.properties b/src/chrome/locale/ru/torbutton.properties
index 5477be6..7e06f17 100644
--- a/src/chrome/locale/ru/torbutton.properties
+++ b/src/chrome/locale/ru/torbutton.properties
@@ -2,7 +2,9 @@ torbutton.button.tooltip.disabled = Включить Tor
torbutton.button.tooltip.enabled = Отключить Tor
torbutton.circuit_display.internet = Интернет
torbutton.circuit_display.ip_unknown = IP неизвестен
+torbutton.circuit_display.onion_site = Onion site
torbutton.circuit_display.this_browser = Этот браузер
+torbutton.circuit_display.relay = relay
torbutton.circuit_display.tor_bridge = Ретранслятор
torbutton.circuit_display.unknown_country = Неизвестная страна
torbutton.panel.tooltip.disabled = Нажмите, чтобы включить Tor
@@ -12,9 +14,9 @@ torbutton.panel.plugins.enabled = Нажмите, чтобы отключить
torbutton.panel.label.disabled = Tor отключен
torbutton.panel.label.enabled = Tor включен
extensions.torbutton(a)torproject.org.description = Torbutton предусматривает кнопку, чтобы настроить Tor и быстро и легко очистить личные данные просмотра.
-torbutton.popup.history.warning = Torbutton заблокировал действия с закладки, загруженной из другого состояния Tor.\n\nЭто требуется для обхода дефектов Firefox 409737 417869.\n\nЕсли это предуреждение возникло без причины, одна из ваших закладок попыталась перезагрузиться в фоновом режиме, и эта попытка была пресечена.\n\nДля перезагрузки закладки в текущем состоянии Tor, нажмите 'enter' в адресной строке URL.\n\n
+torbutton.popup.history.warning = Torbutton заблокировал действия с закладки, загруженной из другого состояния Tor.\n\nЭто требуется для обхода дефектов Firefox 409737 417869.\n\nЕсли это предуреждение возникло без причины, одна из ваших закладок попыталась перезагрузиться в фоновом режиме, и эта попытка была пресечена.\n\nДля перезагрузки закладки в текущем состоянии Tor, нажмите "enter" в адресной строке URL.\n\n
torbutton.popup.plugin.warning = Torbutton заблокировал прямую загрузку плагинов через Tor.\n\nЗагружайте командой Сохранить как.\n\n
-torbutton.popup.confirm_ca_certs = Примечание: Очевидно у вас нет индивидуальных Сертификатов Авторизации. Проверка списка Сертификатов Авторизации медленная операция и замедляет переключение Tor. Хотите отключить изоляцию Сертификатов Авторизации? (Если Вы не понимаете о чем речь, безопасней нажать OK)
+torbutton.popup.confirm_ca_certs = Примечание: очевидно у вас нет индивидуальных сертификатов авторизации. Проверка списка сертификатов авторизации медленная операция и замедляет переключение Tor. Хотите отключить изоляцию Сертификатов Авторизации? (Если Вы не понимаете о чем речь, безопасней нажать OK)
torbutton.popup.ff3.warning = Внимание!\n\nИзвестно, что Torbutton в Firefox 3 открывает возможность утечки данных о вашем часовом поясе и livemarks посредством Tor.\n\nПродолжить?
torbutton.popup.toggle.warning = Чтобы изменения вступили в силу, нужно выключить и перезапустить Tor.
torbutton.popup.test.success = Tor proxy тест успешно пройден!
@@ -53,6 +55,11 @@ torbutton.popup.confirm_plugins = Плагины вроде Flash могут н
torbutton.popup.never_ask_again = Больше не спрашивать
torbutton.popup.confirm_newnym = Tor Browser закроет все окна и вкладки. Все сессии веб-сайта будут потеряны.\n\nПерезапустить сейчас Tor Browser, чтобы изменить Вашу личность?\n\n
+torbutton.slider_notification = The green onion menu has now a security slider which lets you adjust your security level. Check it out!
+torbutton.slider_notification_button = Open security settings
+
+torbutton.maximize_warning = Maximizing Tor Browser can allow websites to determine your monitor size, which can be used to track you. We recommend that you leave Tor Browser windows in their original default size.
+
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=Этот веб-сайт (%S) пытается извлечь данные изображения HTML5 canvas, что может быть использовано для получения информации о вашем компьютере.\n\nДолжен ли Tor Browser разрешить этому сайту извлечь данные изображения HTML5 canvas?
canvas.notNow=Не сейчас
@@ -61,3 +68,10 @@ canvas.allow=Разрешить в будущем
canvas.allowAccessKey=A
canvas.never=Никогда для этого сайта (рекомендуется)
canvas.neverAccessKey=e
+
+# Profile/startup error messages. Strings are kept here for ease of translation.
+# LOCALIZATION NOTE: %S is the application name.
+profileProblemTitle=%S Profile Problem
+profileReadOnly=You cannot run %S from a read-only file system. Please copy %S to another location before trying to use it.
+profileReadOnlyMac=You cannot run %S from a read-only file system. Please copy %S to your Desktop or Applications folder before trying to use it.
+profileAccessDenied=%S does not have permission to access the profile. Please adjust your file system permissions and try again.
diff --git a/src/chrome/locale/sv/torbutton.dtd b/src/chrome/locale/sv/torbutton.dtd
index 2285c2a..d4de340 100644
--- a/src/chrome/locale/sv/torbutton.dtd
+++ b/src/chrome/locale/sv/torbutton.dtd
@@ -24,19 +24,19 @@
<!ENTITY torbutton.pref_connection_more_info.text "Torbutton är aktiverad. Om du vill ändra inställningar för proxy utan Tor, inaktivera Tor och kom tillbaka hit. Om du vill ändra inställningar för Tor, använd Torbutton-inställningarna.">
<!ENTITY torbutton.context_menu.new_identity "Ny identitet">
<!ENTITY torbutton.context_menu.new_identity_key "N">
-<!ENTITY torbutton.context_menu.new_circuit "New Tor Circuit for this Site">
+<!ENTITY torbutton.context_menu.new_circuit "Ny Tor circuit för den här sajten">
<!ENTITY torbutton.context_menu.new_circuit_key "S">
<!ENTITY torbutton.context_menu.toggle "Slå på/av Tor">
<!ENTITY torbutton.context_menu.toggle.key "T">
-<!ENTITY torbutton.context_menu.preferences "Privacy and Security Settings…">
+<!ENTITY torbutton.context_menu.preferences "Inställningar för privatliv och säkerhet...">
<!ENTITY torbutton.context_menu.preferences.key "I">
<!ENTITY torbutton.context_menu.about "Om Torbutton...">
<!ENTITY torbutton.context_menu.about.key "O">
-<!ENTITY torbutton.context_menu.networksettings "Tor Network Settings…">
+<!ENTITY torbutton.context_menu.networksettings "Tor nätverksinställningar...">
<!ENTITY torbutton.context_menu.networksettings.key "Ö">
-<!ENTITY torbutton.context_menu.downloadUpdate "Check for Tor Browser Update…">
+<!ENTITY torbutton.context_menu.downloadUpdate "Sök efter uppdateringar för Tor webbläsare...">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
-<!ENTITY torbutton.context_menu.cookieProtections "Cookie Protections…">
+<!ENTITY torbutton.context_menu.cookieProtections "Skydd mot Cookies...">
<!ENTITY torbutton.context_menu.cookieProtections.key "S">
<!ENTITY torbutton.context_menu.copyTor "Kopiera Tor URL">
<!ENTITY torbutton.context_menu.copyTor.key "p">
@@ -153,8 +153,35 @@
<!ENTITY torbutton.prefs.resist_fingerprinting "Ändra detailjer som utmärker dig ifrån andra Tor Browser användare">
<!ENTITY torbutton.prefs.sec_caption "Säkerhetsnivå">
<!ENTITY torbutton.prefs.sec_low "Låg (förvald)">
+<!ENTITY torbutton.prefs.sec_low_usable_desc "This provides the most usable experience.">
+<!ENTITY torbutton.prefs.sec_low_desc "At this security level, all browser features are enabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_svg_tooltip "The SVG OpenType font rendering mechanism is disabled.">
<!ENTITY torbutton.prefs.sec_med_low "Medium-låg">
+<!ENTITY torbutton.prefs.sec_gen_desc "At this security level, the following changes apply (mouseover for details):">
+<!ENTITY torbutton.prefs.sec_html5_desc "HTML5 video and audio media become click-to-play via NoScript.">
+<!ENTITY torbutton.prefs.sec_html5_tooltip "On some sites, you might need to use the NoScript toolbar button to enable these media objects.">
+<!ENTITY torbutton.prefs.sec_some_jit_desc "Some JavaScript performance optimizations are disabled.">
+<!ENTITY torbutton.prefs.sec_jit_desc_tooltip "ION JIT, Type Inference, ASM.JS.">
+<!ENTITY torbutton.prefs.sec_baseline_jit_desc_tooltip "Baseline JIT.">
+<!ENTITY torbutton.prefs.sec_jit_slower_desc "Scripts on some sites may run slower.">
+<!ENTITY torbutton.prefs.sec_jar_desc "Remote JAR files are blocked.">
+<!ENTITY torbutton.prefs.sec_jar_tooltip "JAR files are extremely rare on the web, but can be a source of XSS and other attacks.">
+<!ENTITY torbutton.prefs.sec_mathml_desc "Some mechanisms of displaying math equations are disabled.">
+<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML is disabled.">
<!ENTITY torbutton.prefs.sec_med_high "Medium-hög">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "All JavaScript performance optimizations are disabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_desc "Some font rendering features are disabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "The Graphite font rendering mechanism is disabled.">
+<!ENTITY torbutton.prefs.sec_svg_desc "Some types of images are disabled.">
+<!ENTITY torbutton.prefs.sec_svg_desc_tooltip "SVG images are disabled.">
+<!ENTITY torbutton.prefs.sec_js_https_desc "JavaScript is disabled by default on all non-HTTPS sites.">
+<!ENTITY torbutton.prefs.sec_js_desc_tooltip "JavaScript can be enabled on a per-site basis via the NoScript toolbar button.">
<!ENTITY torbutton.prefs.sec_high "Hög">
+<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript is disabled by default on all sites.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc "Most audio and video formats are disabled.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc_tooltip "WebM is the only codec that remains enabled.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc "Some fonts and icons may display incorrectly.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Website-provided font files are blocked.">
<!ENTITY torbutton.prefs.sec_custom "Anpassad nivå">
-<!ENTITY torbutton.circuit_display.title "Tor circuit for this site">
+<!ENTITY torbutton.circuit_display.title "Tor circuit för den här sajten">
+
diff --git a/src/chrome/locale/sv/torbutton.properties b/src/chrome/locale/sv/torbutton.properties
index 1c8a351..80da57f 100644
--- a/src/chrome/locale/sv/torbutton.properties
+++ b/src/chrome/locale/sv/torbutton.properties
@@ -2,8 +2,10 @@ torbutton.button.tooltip.disabled = Aktivera Tor
torbutton.button.tooltip.enabled = Inaktivera Tor
torbutton.circuit_display.internet = Internet
torbutton.circuit_display.ip_unknown = Okänd IP-adress.
-torbutton.circuit_display.this_browser = This browser
-torbutton.circuit_display.tor_bridge = Bridge
+torbutton.circuit_display.onion_site = Onion webbplats
+torbutton.circuit_display.this_browser = Denna webbläsare
+torbutton.circuit_display.relay = relä
+torbutton.circuit_display.tor_bridge = Brygga
torbutton.circuit_display.unknown_country = Okänt land
torbutton.panel.tooltip.disabled = Klicka för att aktivera Tor
torbutton.panel.tooltip.enabled = Klicka för att inaktivera Tor
@@ -51,7 +53,12 @@ torbutton.popup.short_torbrowser = Viktig information om Torbutton!\n\nTorbutton
torbutton.popup.confirm_plugins = Insticksmoduler så som Flash kan äventyra din anonymitet och personliga integritet.\n\nDe kan också kringgå Tor för att avslöja var du befinner dig och vad din IP-adress är.\n\nÄr du säker på att du vill aktivera insticksmoduler?\n\n
torbutton.popup.never_ask_again = Fråga aldrig igen
-torbutton.popup.confirm_newnym = Tor Browser will close all windows and tabs. All website sessions will be lost.\n\nRestart Tor Browser now to reset your identity?\n\n
+torbutton.popup.confirm_newnym = Tor Browser kommer att stänga alla fönster och flikar. Alla webbplatssessioner kommer att gå förlorade.\n\nStarta om Tor Browser nu för att återställa din identitet?\n\n
+
+torbutton.slider_notification = The green onion menu has now a security slider which lets you adjust your security level. Check it out!
+torbutton.slider_notification_button = Open security settings
+
+torbutton.maximize_warning = Maximizing Tor Browser can allow websites to determine your monitor size, which can be used to track you. We recommend that you leave Tor Browser windows in their original default size.
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=Denna webbsida (%S) försökte komma åt HTML5-bilddata på ett kanvas, som skulle kunna användas för att identifiera just din dator.\n\nSka Tor Browser tillåta den här webbsidan att använda HTML5-bilddata på kanvas?
@@ -61,3 +68,10 @@ canvas.allow=Ja, tillåt alltid
canvas.allowAccessKey=A
canvas.never=Aldrig för denna sida (rekommenderas)
canvas.neverAccessKey=e
+
+# Profile/startup error messages. Strings are kept here for ease of translation.
+# LOCALIZATION NOTE: %S is the application name.
+profileProblemTitle=%S Profile Problem
+profileReadOnly=You cannot run %S from a read-only file system. Please copy %S to another location before trying to use it.
+profileReadOnlyMac=You cannot run %S from a read-only file system. Please copy %S to your Desktop or Applications folder before trying to use it.
+profileAccessDenied=%S does not have permission to access the profile. Please adjust your file system permissions and try again.
diff --git a/src/chrome/locale/tr/torbutton.dtd b/src/chrome/locale/tr/torbutton.dtd
index a4e7a21..d574801 100644
--- a/src/chrome/locale/tr/torbutton.dtd
+++ b/src/chrome/locale/tr/torbutton.dtd
@@ -18,11 +18,11 @@
<!ENTITY torbutton.about.security_review "Güvenlik özeti:">
<!ENTITY torbutton.about.donate "Tor kullanmayı seviyorsanız ayrıca şunu da düşünebilirsiniz: ">
<!ENTITY torbutton.about.make_donation "Bağış yapmak">
-<!ENTITY torbutton.pref_connection.notice "Ayarları uygulumak için Torbutonu devredışı bırak.">
+<!ENTITY torbutton.pref_connection.notice "Ayarları uygulamak için Torbuttonu devre dışı bırak.">
<!ENTITY torbutton.pref_connection.more_info "Daha fazla bilgi">
<!ENTITY torbutton.pref_connection_more_info.title "Yardım">
<!ENTITY torbutton.pref_connection_more_info.text "Torbutton şu anda devre dışı. Vekil sunucu ayarlarını değiştirmek istiyorsanız, Torbutton'ı tekrar devre dışı bırakın. Genel ayarları değiştirecekseniz, ayarlar penceresini kullanın.">
-<!ENTITY torbutton.context_menu.new_identity "Yeni Bağlantı">
+<!ENTITY torbutton.context_menu.new_identity "Yeni Kimlik">
<!ENTITY torbutton.context_menu.new_identity_key "S">
<!ENTITY torbutton.context_menu.new_circuit "Bu site için yeni Tor devresi">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
@@ -44,7 +44,7 @@
<!ENTITY torbutton.context_menu.openTorTab.key "p">
<!ENTITY torbutton.context_menu.openTorWindow "Tor URL'sini Yeni Pencerede Aç">
<!ENTITY torbutton.context_menu.openTorWindow.key "d">
-<!ENTITY torbutton.button.label "Torbuton">
+<!ENTITY torbutton.button.label "Torbutton">
<!ENTITY torbutton.button.tooltip "Başlat">
<!ENTITY torbutton.prefs.privacy_security_settings "Gizlilik ve Güvenlik Ayarları">
<!ENTITY torbutton.prefs.block_thread "Tor çalışırken geçmişi okumayı durdur(kritik)">
@@ -153,8 +153,35 @@
<!ENTITY torbutton.prefs.resist_fingerprinting "Diğer Tor kullanıcılardan sizi ayıran detayları değiştir">
<!ENTITY torbutton.prefs.sec_caption "Güvenlik Seviyesi">
<!ENTITY torbutton.prefs.sec_low "Düşük (varsayılan)">
+<!ENTITY torbutton.prefs.sec_low_usable_desc "Bu en kullanılabilir deneyimi sunar.">
+<!ENTITY torbutton.prefs.sec_low_desc "Bu güvenlik seviyesinde tüm tarayıcı özellikleri etkindir.">
+<!ENTITY torbutton.prefs.sec_font_rend_svg_tooltip "SVG OpenType yazı tipi işleme mekanizması devre dışı.">
<!ENTITY torbutton.prefs.sec_med_low "Orta-Düşük">
+<!ENTITY torbutton.prefs.sec_gen_desc "Bu güvenlik seviyesinde, aşağıdaki değişiklikler uygulanır (ayrıntılar için fare ile üzerine gelin):">
+<!ENTITY torbutton.prefs.sec_html5_desc "HTML5 video ve ses ortamı NoScript aracılığıyla tıkla ve oynat yapıldı.">
+<!ENTITY torbutton.prefs.sec_html5_tooltip "Bazı sitelerde bu ortam nesnelerini etkinleştirebilmek için NoScript düğmesini kullanmanız gerekebilir.">
+<!ENTITY torbutton.prefs.sec_some_jit_desc "Bazı JavaScript başarım iyileştirmeleri devre dışı.">
+<!ENTITY torbutton.prefs.sec_jit_desc_tooltip "ION JIT, Tür çıkarımı, ASM.JS.">
+<!ENTITY torbutton.prefs.sec_baseline_jit_desc_tooltip "Sınır Çizgi JIT.">
+<!ENTITY torbutton.prefs.sec_jit_slower_desc "Bazı sitelerde betikler daha yavaş çalışabilir.">
+<!ENTITY torbutton.prefs.sec_jar_desc "Uzak JAR dosyaları engellendi.">
+<!ENTITY torbutton.prefs.sec_jar_tooltip "JAR dosyalarına ağda oldukça ender rastlanır, ancak XSS ve diğer saldırıların kaynağı olabilir.">
+<!ENTITY torbutton.prefs.sec_mathml_desc "Matematik denklemlerini gösteren bazı mekanizmalar devre dışı.">
+<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML devre dışı.">
<!ENTITY torbutton.prefs.sec_med_high "Orta-Yüksek">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "Tüm JavaScript başarım iyileştirmeleri devre dışı.">
+<!ENTITY torbutton.prefs.sec_font_rend_desc "Bazı yazı tipi işleme özellikleri devre dışı.">
+<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "Graphite yazı tipi işleme mekanizması devre dışı.">
+<!ENTITY torbutton.prefs.sec_svg_desc "Bazı resim türleri devre dışı.">
+<!ENTITY torbutton.prefs.sec_svg_desc_tooltip "SVG resimleri devre dışı.">
+<!ENTITY torbutton.prefs.sec_js_https_desc "JavaScript öntanımlı olarak tüm HTTPS olmayan sitelerde devre dışı.">
+<!ENTITY torbutton.prefs.sec_js_desc_tooltip "JavaScript, NoScript araç çubuğu düğmesi kullanılarak her site için ayrı ayrı etkinleştirilebilir.">
<!ENTITY torbutton.prefs.sec_high "Yüksek">
+<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript öntanımlı olarak tüm sitelerde devre dışı.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc "Çoğu ses ve video biçimi devre dışı.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc_tooltip "WebM, etkin bırakılan tek çözücü.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc "Bazı yazı tipi ve simgeler düzgün görüntülenemeyebilir.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Web site tarafından sağlanan yazı tipi dosyaları engellenmiş.">
<!ENTITY torbutton.prefs.sec_custom "Özel Değerler">
<!ENTITY torbutton.circuit_display.title "Bu site için Tor devresi">
+
diff --git a/src/chrome/locale/tr/torbutton.properties b/src/chrome/locale/tr/torbutton.properties
index d5d3276..59dafbd 100644
--- a/src/chrome/locale/tr/torbutton.properties
+++ b/src/chrome/locale/tr/torbutton.properties
@@ -2,7 +2,9 @@ torbutton.button.tooltip.disabled = Tor'u Etkinleştir
torbutton.button.tooltip.enabled = Tor'u Devre Dışı Bırak
torbutton.circuit_display.internet = İnternet
torbutton.circuit_display.ip_unknown = Bilinmeyen IP
+torbutton.circuit_display.onion_site = Soğan sitesi
torbutton.circuit_display.this_browser = Bu tarayıcı
+torbutton.circuit_display.relay = ayna
torbutton.circuit_display.tor_bridge = Köprü
torbutton.circuit_display.unknown_country = Bilinmeyen ülke
torbutton.panel.tooltip.disabled = Tor'u etkinleştirmek için tıklayın
@@ -14,8 +16,8 @@ torbutton.panel.label.enabled = Tor Etkin
extensions.torbutton(a)torproject.org.description = Torbutton Tor ayarlarını yapabileceğiniz ve hızlı ve kolayca gizli tarama verilerini silebileceğiniz bir düğme sağlar.
torbutton.popup.history.warning = Torbutton, farklı bir Tor durumunda yüklenmiş bir sekmeden gelen etkinliği engelledi.\n\nBu Firefox 409737 ve 417869 nolu hata raporlarını için bir çözümdür.\n\nHiçbir sebep yokken bu uyarı aldıysanız, muhtelemelen sekme kendini yenilemeye çalıştığı için engellenmiş olabilir.\n\nSekmeyi yenilemek için lütfen adres çubuğunu tıklayıp 'enter' tuşuna basın.\n\n
torbutton.popup.plugin.warning = Torbutton Tor'un eklenti içeriğini yüklemesini blokladı.\n\nFarklı Kaydet ile yapmayı deneyin.\n\n
-torbutton.popup.confirm_ca_certs = Torbuton hatırlatma: Anlaşılan özel sertifakanız yok. Doğrulama bilgisi her zaman işlemleri yavaşlatır. Sertifika doğrulamalarını devredışı bırakmak ister misiniz? (Açıklamayı anlamadıysan, Tamam'a tıkla)\n
-torbutton.popup.ff3.warning = Dikkat!\n\nFirefox 3'teki Torbuton yerel saatinizi bazı yerel bilgilerinizi gizlice gönderebilir?\n\nDevam etmek istiyor musunuz?
+torbutton.popup.confirm_ca_certs = Torbutton hatırlatma: Anlaşılan özel sertifakanız yok. Doğrulama bilgisi her zaman işlemleri yavaşlatır. Sertifika doğrulamalarını devredışı bırakmak ister misiniz? (Açıklamayı anlamadıysan, Tamam'a tıkla)\n
+torbutton.popup.ff3.warning = Dikkat!\n\nFirefox 3'teki Torbutton yerel saatinizi ve bazı yerel bilgilerinizi gizlice gönderebilir?\n\nDevam etmek istiyor musunuz?
torbutton.popup.toggle.warning = Ayarların uygulanması için Tor'u yeniden başlatmanız gerekiyor.\n
torbutton.popup.test.success = Vekil sunucu testi başarılı!
torbutton.popup.test.failure = Vekil sunucu testi başarısız oldu! Lütfen Vekil sunucunuzu ve Polippo ayarlarını kontrol ediniz.
@@ -51,7 +53,12 @@ torbutton.popup.short_torbrowser = Önemli Torbutton bilgisi!\nTorbutton şimdi
torbutton.popup.confirm_plugins = Flash gibi eklentiler gizliliğinizi ve anonimliğinizi zedeleyebilir.\n\nAynı zaman Tor'u atlatarak geçerli konumunuzu ve IP adresinizi ortaya çıkarabilir.\n\nEklentileri aktif etmek istiyor musunuz?\n
torbutton.popup.never_ask_again = Bir daha sorma
-torbutton.popup.confirm_newnym = Tor Browser will close all windows and tabs. All website sessions will be lost.\n\nRestart Tor Browser now to reset your identity?\n\n
+torbutton.popup.confirm_newnym = Tor Tarayıcısı tüm sekmeleri ve pencereleri kapatacak. Tüm web sitesi oturumları kaybolacaktır.\n\nOturumunuzu sıfırlamak için Tor tarayıcı yeniden başlatılsın mı?\n
+
+torbutton.slider_notification = The green onion menu has now a security slider which lets you adjust your security level. Check it out!
+torbutton.slider_notification_button = Open security settings
+
+torbutton.maximize_warning = Maximizing Tor Browser can allow websites to determine your monitor size, which can be used to track you. We recommend that you leave Tor Browser windows in their original default size.
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=Bu web sitesi (%S) bilgisayarınızı benzersiz olarak tanımlayabilmek için kullanılabilen HTML5 tuvalindeki resim verisine erişmeye çalıştı.\n\nTor Tarayıcı bu web sitesine HTML5 tuval resim verisini çıkarmasına izin vermeli mi?
@@ -61,3 +68,10 @@ canvas.allow=İleride izin ver
canvas.allowAccessKey=H
canvas.never=Bu site için asla (önerilen)
canvas.neverAccessKey=a
+
+# Profile/startup error messages. Strings are kept here for ease of translation.
+# LOCALIZATION NOTE: %S is the application name.
+profileProblemTitle=%S Profil Sorunu
+profileReadOnly=%S salt okunur bir sistemden çalıştırılamaz. Lütfen kullanmadan önce %S ögesini farklı bir konuma kopyalayın.
+profileReadOnlyMac=%S salt okunur bir sistemden çalıştırılamaz. Lütfen kullanmadan önce %S ögesini Masaüstü veya Uygulamalar klasörüne kopyalayın.
+profileAccessDenied=%S, profilinize erişemiyor. Lütfen sistem yetkilerinizi ayarlayın ve yeniden deneyin.
diff --git a/src/chrome/locale/vi/torbutton.dtd b/src/chrome/locale/vi/torbutton.dtd
index 5378f43..cd3d3ce 100644
--- a/src/chrome/locale/vi/torbutton.dtd
+++ b/src/chrome/locale/vi/torbutton.dtd
@@ -153,8 +153,35 @@
<!ENTITY torbutton.prefs.resist_fingerprinting "Change details that distinguish you from other Tor Browser users">
<!ENTITY torbutton.prefs.sec_caption "Security Level">
<!ENTITY torbutton.prefs.sec_low "Low (default)">
+<!ENTITY torbutton.prefs.sec_low_usable_desc "This provides the most usable experience.">
+<!ENTITY torbutton.prefs.sec_low_desc "At this security level, all browser features are enabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_svg_tooltip "The SVG OpenType font rendering mechanism is disabled.">
<!ENTITY torbutton.prefs.sec_med_low "Medium-Low">
+<!ENTITY torbutton.prefs.sec_gen_desc "At this security level, the following changes apply (mouseover for details):">
+<!ENTITY torbutton.prefs.sec_html5_desc "HTML5 video and audio media become click-to-play via NoScript.">
+<!ENTITY torbutton.prefs.sec_html5_tooltip "On some sites, you might need to use the NoScript toolbar button to enable these media objects.">
+<!ENTITY torbutton.prefs.sec_some_jit_desc "Some JavaScript performance optimizations are disabled.">
+<!ENTITY torbutton.prefs.sec_jit_desc_tooltip "ION JIT, Type Inference, ASM.JS.">
+<!ENTITY torbutton.prefs.sec_baseline_jit_desc_tooltip "Baseline JIT.">
+<!ENTITY torbutton.prefs.sec_jit_slower_desc "Scripts on some sites may run slower.">
+<!ENTITY torbutton.prefs.sec_jar_desc "Remote JAR files are blocked.">
+<!ENTITY torbutton.prefs.sec_jar_tooltip "JAR files are extremely rare on the web, but can be a source of XSS and other attacks.">
+<!ENTITY torbutton.prefs.sec_mathml_desc "Some mechanisms of displaying math equations are disabled.">
+<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML is disabled.">
<!ENTITY torbutton.prefs.sec_med_high "Medium-High">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "All JavaScript performance optimizations are disabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_desc "Some font rendering features are disabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "The Graphite font rendering mechanism is disabled.">
+<!ENTITY torbutton.prefs.sec_svg_desc "Some types of images are disabled.">
+<!ENTITY torbutton.prefs.sec_svg_desc_tooltip "SVG images are disabled.">
+<!ENTITY torbutton.prefs.sec_js_https_desc "JavaScript is disabled by default on all non-HTTPS sites.">
+<!ENTITY torbutton.prefs.sec_js_desc_tooltip "JavaScript can be enabled on a per-site basis via the NoScript toolbar button.">
<!ENTITY torbutton.prefs.sec_high "High">
+<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript is disabled by default on all sites.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc "Most audio and video formats are disabled.">
+<!ENTITY torbutton.prefs.sec_audio_video_desc_tooltip "WebM is the only codec that remains enabled.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc "Some fonts and icons may display incorrectly.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Website-provided font files are blocked.">
<!ENTITY torbutton.prefs.sec_custom "Custom Values">
<!ENTITY torbutton.circuit_display.title "Tor circuit for this site">
+
diff --git a/src/chrome/locale/vi/torbutton.properties b/src/chrome/locale/vi/torbutton.properties
index 9c563d4..9ae81f9 100644
--- a/src/chrome/locale/vi/torbutton.properties
+++ b/src/chrome/locale/vi/torbutton.properties
@@ -2,7 +2,9 @@ torbutton.button.tooltip.disabled = Bật Tor
torbutton.button.tooltip.enabled = Tắt Tor
torbutton.circuit_display.internet = Internet
torbutton.circuit_display.ip_unknown = IP unknown
+torbutton.circuit_display.onion_site = Onion site
torbutton.circuit_display.this_browser = This browser
+torbutton.circuit_display.relay = relay
torbutton.circuit_display.tor_bridge = Bridge
torbutton.circuit_display.unknown_country = Unknown country
torbutton.panel.tooltip.disabled = Nhấn để bật Tor
@@ -53,6 +55,11 @@ torbutton.popup.confirm_plugins = Plugins such as Flash can harm your privacy an
torbutton.popup.never_ask_again = Never ask me again
torbutton.popup.confirm_newnym = Tor Browser will close all windows and tabs. All website sessions will be lost.\n\nRestart Tor Browser now to reset your identity?\n\n
+torbutton.slider_notification = The green onion menu has now a security slider which lets you adjust your security level. Check it out!
+torbutton.slider_notification_button = Open security settings
+
+torbutton.maximize_warning = Maximizing Tor Browser can allow websites to determine your monitor size, which can be used to track you. We recommend that you leave Tor Browser windows in their original default size.
+
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=This website (%S) attempted to extract HTML5 canvas image data, which may be used to uniquely identify your computer.\n\nShould Tor Browser allow this website to extract HTML5 canvas image data?
canvas.notNow=Not Now
@@ -61,3 +68,10 @@ canvas.allow=Allow in the future
canvas.allowAccessKey=T
canvas.never=Never for this site (recommended)
canvas.neverAccessKey=e
+
+# Profile/startup error messages. Strings are kept here for ease of translation.
+# LOCALIZATION NOTE: %S is the application name.
+profileProblemTitle=%S Profile Problem
+profileReadOnly=You cannot run %S from a read-only file system. Please copy %S to another location before trying to use it.
+profileReadOnlyMac=You cannot run %S from a read-only file system. Please copy %S to your Desktop or Applications folder before trying to use it.
+profileAccessDenied=%S does not have permission to access the profile. Please adjust your file system permissions and try again.
diff --git a/src/chrome/locale/zh-CN/aboutTor.dtd b/src/chrome/locale/zh-CN/aboutTor.dtd
index 8237217..5403ed9 100644
--- a/src/chrome/locale/zh-CN/aboutTor.dtd
+++ b/src/chrome/locale/zh-CN/aboutTor.dtd
@@ -8,7 +8,7 @@
<!ENTITY aboutTor.outOfDateTorOn.label "但是该浏览器并非最新版本。">
<!ENTITY aboutTor.outOfDateTorOff.label "另外,该浏览器并非最新版本。">
-<!ENTITY aboutTor.outOfDate2.label "点击洋葱,然后选择 Tor Browser 检查更新。">
+<!ENTITY aboutTor.outOfDate2.label "点击洋葱图标,然后选择“Tor Browser 检查更新”。">
<!ENTITY aboutTor.check.label "测试 Tor 网络设置">
diff --git a/src/chrome/locale/zh-CN/torbutton.dtd b/src/chrome/locale/zh-CN/torbutton.dtd
index 7da1472..90076de 100644
--- a/src/chrome/locale/zh-CN/torbutton.dtd
+++ b/src/chrome/locale/zh-CN/torbutton.dtd
@@ -24,7 +24,7 @@
<!ENTITY torbutton.pref_connection_more_info.text "Torbutton 当前已启用。如需对 Tor 之外的代理设置进行更改,请禁用 Torbutton 后再返回这里。如需更改 Tor 的设置,请在 Torbutton 首选项窗口中进行设置。">
<!ENTITY torbutton.context_menu.new_identity "新标识">
<!ENTITY torbutton.context_menu.new_identity_key "I">
-<!ENTITY torbutton.context_menu.new_circuit "对此网站使用新的 Tor 线路">
+<!ENTITY torbutton.context_menu.new_circuit "为该站点新建 Tor 线路">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
<!ENTITY torbutton.context_menu.toggle "切换 Tor 状态">
<!ENTITY torbutton.context_menu.toggle.key "T">
@@ -153,8 +153,35 @@
<!ENTITY torbutton.prefs.resist_fingerprinting "请修改区别你与其他 Tor 浏览器用户的详细信息">
<!ENTITY torbutton.prefs.sec_caption "安全等级">
<!ENTITY torbutton.prefs.sec_low "低(默认)">
+<!ENTITY torbutton.prefs.sec_low_usable_desc "该选项提供最具可用性的用户体验。">
+<!ENTITY torbutton.prefs.sec_low_desc "该安全级别将启用所有浏览器功能。">
+<!ENTITY torbutton.prefs.sec_font_rend_svg_tooltip "禁用 SVG OpenType 字体渲染功能。">
<!ENTITY torbutton.prefs.sec_med_low "中低">
+<!ENTITY torbutton.prefs.sec_gen_desc "该安全级别具有以下更改(鼠标悬停可查看细节):">
+<!ENTITY torbutton.prefs.sec_html5_desc "HTML5 视频和音频媒体通过 NoScript 实现点击播放。">
+<!ENTITY torbutton.prefs.sec_html5_tooltip "在某些网站,可使用 NoScript 工具栏按钮来启用这些媒体对象。">
+<!ENTITY torbutton.prefs.sec_some_jit_desc "禁用某些 JavaScript 性能优化。">
+<!ENTITY torbutton.prefs.sec_jit_desc_tooltip "ION JIT、类型推断、ASM.JS。">
+<!ENTITY torbutton.prefs.sec_baseline_jit_desc_tooltip "Baseline JIT。">
+<!ENTITY torbutton.prefs.sec_jit_slower_desc "一些网站的脚本可能运行更慢。">
+<!ENTITY torbutton.prefs.sec_jar_desc "禁用远程 JAR 文件。">
+<!ENTITY torbutton.prefs.sec_jar_tooltip "网站上很少出现 JAR 文件,但可能成为 XSS 及其他攻击的源头。">
+<!ENTITY torbutton.prefs.sec_mathml_desc "禁用数学方程式的某些显示机制。">
+<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "禁用 MathML。">
<!ENTITY torbutton.prefs.sec_med_high "中高">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "禁用全部 JavaScript 性能优化。">
+<!ENTITY torbutton.prefs.sec_font_rend_desc "禁用某些字体渲染功能。">
+<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "禁用 Graphite 字体渲染。">
+<!ENTITY torbutton.prefs.sec_svg_desc "禁用某些图像类型。">
+<!ENTITY torbutton.prefs.sec_svg_desc_tooltip "禁用 SVG 图像。">
+<!ENTITY torbutton.prefs.sec_js_https_desc "JavaScript 在所有非 HTTPS 网站上被禁用。">
+<!ENTITY torbutton.prefs.sec_js_desc_tooltip "可按站点通过 NoScript 工具栏按钮上启用 JavaScript。">
<!ENTITY torbutton.prefs.sec_high "高">
+<!ENTITY torbutton.prefs.sec_all_js_desc "默认禁用所有网站 JavaScript。">
+<!ENTITY torbutton.prefs.sec_audio_video_desc "禁用大多数音频和视频格式。">
+<!ENTITY torbutton.prefs.sec_audio_video_desc_tooltip "仅启用 WebM 编解码器。">
+<!ENTITY torbutton.prefs.sec_webfonts_desc "某些字体和图标可能无法正确显示。">
+<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "禁用网站提供的字体文件。">
<!ENTITY torbutton.prefs.sec_custom "自定义">
-<!ENTITY torbutton.circuit_display.title "对此网站的 Tor 线路">
+<!ENTITY torbutton.circuit_display.title "该站点所用的 Tor 线路">
+
diff --git a/src/chrome/locale/zh-CN/torbutton.properties b/src/chrome/locale/zh-CN/torbutton.properties
index cee64a2..7461488 100644
--- a/src/chrome/locale/zh-CN/torbutton.properties
+++ b/src/chrome/locale/zh-CN/torbutton.properties
@@ -2,7 +2,9 @@ torbutton.button.tooltip.disabled = 启用 Tor
torbutton.button.tooltip.enabled = 禁用 Tor
torbutton.circuit_display.internet = 互联网
torbutton.circuit_display.ip_unknown = IP 未知
+torbutton.circuit_display.onion_site = onion 站点
torbutton.circuit_display.this_browser = 本浏览器
+torbutton.circuit_display.relay = 中继
torbutton.circuit_display.tor_bridge = 网桥
torbutton.circuit_display.unknown_country = 未知国家
torbutton.panel.tooltip.disabled = 点击启用 Tor
@@ -11,7 +13,7 @@ torbutton.panel.plugins.disabled = 点击启用插件
torbutton.panel.plugins.enabled = 点击禁用插件
torbutton.panel.label.disabled = Tor 已禁用
torbutton.panel.label.enabled = Tor 已启用
-extensions.torbutton(a)torproject.org.description = Torbutton 是一个可以配置Tor并能简单快速清理个人浏览数据的按钮。
+extensions.torbutton(a)torproject.org.description = Torbutton 是一个按钮,可对“Tor 设置”进行修改,并可快速而方便地清除浏览器隐私数据。
torbutton.popup.history.warning = Torbutton 屏蔽了在其他 Tor 状态下加载的标签的活动。\n\n这是用于暂时解决 Firefox Bug 409737 和 417869。\n如果这个弹出窗口在您不知情的情况下弹出,则您的标签之一正试图在后台重新载入自己,然而这样的行为是被屏蔽的。\n\n要刷新当前 Tor 状态下的标签,将焦点置于在地址栏并按回车键。\n\n
torbutton.popup.plugin.warning = Torbutton 阻止了浏览器戴 Tor 时直接加载需要插件支持的内容。\n\n请使用“另存为”(保存后浏览)。\n\n
torbutton.popup.confirm_ca_certs = Torbutton 注意:浏览器似乎缺少自定义的CA(证书颁发机构)。检查CA列表是一项耗时的操作,障碍Tor的切换。您是否希望禁用对CA证书的隔离?)如果您不懂,可以选择“确定”)
@@ -32,7 +34,7 @@ torbutton.popup.external.note = 部分文件类型可能会导致应用程序在
torbutton.popup.external.suggest = 为了安全起见,您应该只在离线状态下打开下载的文件,或者使用 Tor Live CD,例如 Tails。\n
torbutton.popup.launch = 下载文件
torbutton.popup.cancel = 取消
-torbutton.popup.dontask = 自动下载文件于
+torbutton.popup.dontask = 以后自动下载文件
torbutton.popup.test.no_http_proxy = Tor 代理测试:本地 HTTP 代理不可达,您的 Polipo 正常启动了吗?
torbutton.popup.captcha.title = 避免 Google Captcha?
torbutton.popup.captcha.ask = Torbutton 检测到了一个 Google Captcha,您是否愿意把本次搜索重定向到使用其他搜索引擎?
@@ -53,6 +55,11 @@ torbutton.popup.confirm_plugins = Flash 之类的插件可对用户的隐私与
torbutton.popup.never_ask_again = 不再询问
torbutton.popup.confirm_newnym = Tor Browser 将关闭所有窗口和标签页。所有网站登录状态都将丢失。\n\n重新启动 Tor Browser 以重置您的身份?\n\n
+torbutton.slider_notification = 绿色的洋葱菜单中现在有了一个安全滑块,您可以用它来调整您的安全级别。试试吧!
+torbutton.slider_notification_button = 打开安全设置
+
+torbutton.maximize_warning = Maximizing Tor Browser can allow websites to determine your monitor size, which can be used to track you. We recommend that you leave Tor Browser windows in their original default size.
+
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=此网站 (%S) 试图获取 HTML5 Canva 图像数据,该数据可用作你所用计算机的唯一标识。\n\nTor Browser 是否应允许此网站获取 HTML5 Canva 图像数据?
canvas.notNow=暂不
@@ -61,3 +68,10 @@ canvas.allow=以后一直允许
canvas.allowAccessKey=A
canvas.never=永不允许此网站(推荐)
canvas.neverAccessKey=e
+
+# Profile/startup error messages. Strings are kept here for ease of translation.
+# LOCALIZATION NOTE: %S is the application name.
+profileProblemTitle=%S 配置文件问题
+profileReadOnly=您不能在一个只读文件系统上运行 %S。请在尝试使用前复制 %S 到另一个位置。
+profileReadOnlyMac=您不能在一个只读文件系统上运行 %S。请在尝试使用它前复制 %S 到您的桌面或者应用程序文件夹。
+profileAccessDenied=%S 没有权限访问配置文件。请调整您的文件系统权限然后重试。
1
0

[tor-browser-bundle/master] Changelog and versions update for 4.5a5.
by mikeperry@torproject.org 27 Mar '15
by mikeperry@torproject.org 27 Mar '15
27 Mar '15
commit 9f4ba9e7398d45797382f9eff95fc210f8d903fa
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Thu Mar 26 17:59:03 2015 -0700
Changelog and versions update for 4.5a5.
---
Bundle-Data/Docs/ChangeLog.txt | 47 +++++++++++++++++++++++++++++++++++++++-
gitian/versions.alpha | 14 ++++++------
2 files changed, 53 insertions(+), 8 deletions(-)
diff --git a/Bundle-Data/Docs/ChangeLog.txt b/Bundle-Data/Docs/ChangeLog.txt
index e7464cf..edbd748 100644
--- a/Bundle-Data/Docs/ChangeLog.txt
+++ b/Bundle-Data/Docs/ChangeLog.txt
@@ -1,7 +1,52 @@
-Tor Browser 4.0.6 -- Mar 31 2015
+Tor Browser 4.5a5 -- Mar 31 2015
* All Platforms
* Update Firefox to 31.6.0esr
* Update OpenSSL to 1.0.1m
+ * Update Tor to 0.2.6.6
+ * Update NoScript to 2.6.9.19
+ * Update meek to 0.16
+ * Update Torbutton to 1.9.1.0
+ * Bug 9387: "Security Slider 1.0"
+ * Include descriptions and tooltip hints for security levels
+ * Notify users that the security slider exists
+ * Flip slider so that "low" is on the bottom
+ * Make use of new SVG and MathML prefs
+ * Bug 13766: Set a 10 minute circuit lifespan for non-content requests
+ * Bug 15460: Ensure FTP urls use content-window circuit isolation
+ * Bug 13650: Clip initial window height to 1000px
+ * Bug 14429: Ensure windows can only be resized to 200x100px multiples
+ * Bug 15334: Display Cookie Protections menu if disk records are enabled
+ * Bug 14324: Show HS circuit in Tor circuit display
+ * Bug 15086: Handle RTL text in Tor circuit display
+ * Bug 15085: Fix about:tor RTL text alignment problems
+ * Bug 10216: Add a pref to disable the local tor control port test
+ * Bug 14937: Show meek and flashproxy bridges in tor circuit display
+ * Bugs 13891+15207: Fix exceptions/errors in circuit display with bridges
+ * Bug 13019: Change locale hiding pref to boolean
+ * Bug 7255: Warn users about maximizing windows (off by default)
+ * Pluggable Transport Dependency Updates:
+ * Bug 15448: Use golang 1.4.2 for meek and obs4proxy
+ * Bug 15265: Switch go.net repo to golang.org/x/net
+ * Bug 12535: Use a SOCKS5 listener instead of a SOCKS4a for goptlib
+ * Bug 14937: Hard-code meek and flashproxy node fingerprints
+ * Bug 13019: Prevent Javascript from leaking system locale
+ * Bug 10280: Improved fix to prevent loading plugins into address space
+ * Bug 15406: Only include addons in incremental updates if they actually update
+ * Bug 15029: Don't prompt to include missing plugins
+ * Bug 12827: Create preference to disable SVG images (for security slider)
+ * Bug 13548: Create preference to disable MathML (for security slider)
+ * Bug 14631: Improve startup error messages for filesystem permissions issues
+ * Bug 13766: Keep content window Tor circuits open for 2 hours
+ * Linux
+ * Bug 13375: Create a hybrid GUI/desktop/shell launcher wrapper
+ * Bug 12468: Only print/write log messages if launched with --debug
+ * Windows
+ * Bug 15201: Disable 'runas Administrator' codepaths in updater
+ * Bug 14688: Create shortcuts to desktop and start menu by default (optional)
+
+Tor Browser 4.0.6 -- Mar 31 2015
+ * All Platforms
+ * Update Firefox to 31.6.0esr
* Update meek to 0.16
Tor Browser 4.0.5 -- Mar 23 2015
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index 2e6cd80..12c16cc 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -4,14 +4,14 @@ BUILD_PT_BUNDLES=1
VERIFY_TAGS=1
-FIREFOX_VERSION=31.5.0esr
+FIREFOX_VERSION=31.6.0esr
TORBROWSER_UPDATE_CHANNEL=alpha
TORBROWSER_TAG=tor-browser-${FIREFOX_VERSION}-4.5-1-build1
-TOR_TAG=tor-0.2.6.3-alpha
+TOR_TAG=tor-0.2.6.6
TORLAUNCHER_TAG=0.2.7.2
-TORBUTTON_TAG=1.9.0.0
+TORBUTTON_TAG=1.9.1.0
HTTPSE_TAG=3.5.3 # XXX: HTTPSE_VER is used instead, pending #11630
NSIS_TAG=v0.3
ZLIB_TAG=v1.2.8
@@ -35,7 +35,7 @@ OBFS4_TAG=obfs4proxy-0.0.4
GITIAN_TAG=tor-browser-builder-3.x-7
-OPENSSL_VER=1.0.1l
+OPENSSL_VER=1.0.1m
GMP_VER=5.1.3
FIREFOX_LANG_VER=$FIREFOX_VERSION
FIREFOX_LANG_BUILD=build2
@@ -52,7 +52,7 @@ PY2EXE_VER=0.6.9
SETUPTOOLS_VER=1.4
LXML_VER=3.3.5
PARSLEY_VER=1.2
-HTTPSE_VER=5.0development.2
+HTTPSE_VER=5.0
GO_VER=1.4.2
## File names for the source packages
@@ -82,13 +82,13 @@ GO_PACKAGE=go${GO_VER}.src.tar.gz
GONET_PACKAGE=go.net-9c0f9daaa74b.tar.bz2
# Hashes for packages with weak sigs or no sigs
-OPENSSL_HASH=b2cf4d48fe5d49f240c61c9e624193a6f232b5ed0baf010681e725963c40d1d4
+OPENSSL_HASH=095f0b7b09116c0c5526422088058dc7e6e000aa14d22acca6a4e2babcdfef74
GMP_HASH=752079520b4690531171d0f4532e40f08600215feefede70b24fabdc6f1ab160
OSXSDK_HASH=6602d8d5ddb371fbc02e2a5967d9bd0cd7358d46f9417753c8234b923f2ea6fc
TOOLCHAIN4_HASH=7b71bfe02820409b994c5c33a7eab81a81c72550f5da85ff7af70da3da244645
TOOLCHAIN4_OLD_HASH=65c1b2d302358a6b95a26c6828a66908a199276193bb0b268f2dcc1a997731e9
NOSCRIPT_HASH=63d866458e0261d20b612193f8f446728c991dd488c59e49d8f927c63e7eb9b4
-HTTPSE_HASH=a42812dbd4b0103600ac5dce0e5f1366e8a7a7267e18743f5cd1e152615964e3
+HTTPSE_HASH=059b6141b200c18f5903550d0ee6bdec1e1b874b7e069d246466e77bf3a436c2
MSVCR100_HASH=1221a09484964a6f38af5e34ee292b9afefccb3dc6e55435fd3aaf7c235d9067
PYCRYPTO_HASH=f2ce1e989b272cfcb677616763e0a2e7ec659effa67a88aa92b3a65528f60a3c
ARGPARSE_HASH=ddaf4b0a618335a32b6664d4ae038a1de8fbada3b25033f9021510ed2b3941a4
1
0

[tor-browser-bundle/master] Bug 13375: Launcher --help improvements.
by mikeperry@torproject.org 26 Mar '15
by mikeperry@torproject.org 26 Mar '15
26 Mar '15
commit 6dec1263132c2ed24ff08df0c121289d0a0f7e08
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed Mar 18 12:48:25 2015 -0700
Bug 13375: Launcher --help improvements.
Display the firefox message, reduce output, and simplify paths.
---
RelativeLink/start-tor-browser | 31 +++++++++++++++++--------------
1 file changed, 17 insertions(+), 14 deletions(-)
diff --git a/RelativeLink/start-tor-browser b/RelativeLink/start-tor-browser
index 31ccb83..aac5a6e 100755
--- a/RelativeLink/start-tor-browser
+++ b/RelativeLink/start-tor-browser
@@ -99,23 +99,20 @@ if [ "`id -u`" -eq 0 ]; then
fi
debug=0
-usage_message="usage: $0 [--debug]"
+show_usage=0
# !!! We may have more than one argument, changed -eq to -ge in if & elif clauses below
if [ "$#" -ge 1 -a \( "x$1" = "x--debug" -o "x$1" = "x-debug" \) ]; then
debug=1
shift # pop the debug argument
printf "\nDebug enabled.\n\n"
elif [ "$#" -ge 1 -a \( "x$1" = "x--help" -o "x$1" = "x-help" \) ]; then
- echo "$usage_message"
- exit 0
-fi
-
-# If the user hasn't requested 'debug mode', close stdout and stderr,
-# to keep Firefox and the stuff loaded by/for it (including the
-# system's shared-library loader) from printing messages to
-# $HOME/.xsession-errors or other files. (Users wouldn't have seen
-# messages there anyway.)
-if [ "$debug" -ne 1 ]; then
+ show_usage=1
+else
+ # If the user hasn't requested 'debug mode' or --help, close stdout and stderr,
+ # to keep Firefox and the stuff loaded by/for it (including the
+ # system's shared-library loader) from printing messages to
+ # $HOME/.xsession-errors or other files. (Users wouldn't have seen
+ # messages there anyway.)
exec >/dev/null
exec 2>/dev/null
fi
@@ -268,7 +265,6 @@ EOF
# your password in the following line where the word “secret” is:
setControlPortPasswd ${TOR_CONTROL_PASSWD:='"secret"'}
-printf "Launching Tor Browser for Linux in ${HOME}...\n"
cd "${HOME}"
# We pass all command-line arguments we got (except --debug) to Firefox. Use
@@ -279,12 +275,19 @@ cd "${HOME}"
# When passed the --debug option, we log all the output that goes to the
# parent terminal stdout and stderr to a file ('tor-browser-debug.log' in Tor
# Browser's $HOME directory).
-if [ "$debug" -ne 1 ] ; then
+if [ "$show_usage" -eq 1 ]; then
+ TOR_CONTROL_PASSWD=${TOR_CONTROL_PASSWD} ./firefox --class "Tor Browser" \
+ -profile TorBrowser/Data/Browser/profile.default "${@}" 2>/dev/null
+ printf "\nTor Browser Script Options\n"
+ printf " --debug Display Tor and Firefox output and record in tor-browser-debug.log\n"
+elif [ "$debug" -ne 1 ] ; then
TOR_CONTROL_PASSWD=${TOR_CONTROL_PASSWD} ./firefox --class "Tor Browser" \
-profile TorBrowser/Data/Browser/profile.default "${@}" > /dev/null 2>&1 </dev/null &
disown "$!"
else
- logfile=$(dirname ${HOME} )/tor-browser-debug.log
+ # Place logfile in the tbb root dir.
+ logfile=../tor-browser-debug.log
+ printf "Launching Tor Browser for Linux in ${HOME}...\n"
printf "Logging Tor Browser debug information to file: %s\n" "$logfile"
TOR_CONTROL_PASSWD=${TOR_CONTROL_PASSWD} ./firefox --class "Tor Browser" \
-profile TorBrowser/Data/Browser/profile.default "${@}" -jsconsole 2>&1 </dev/null | \
1
0