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

[flashproxy/master] Don't let websockify send "Sec-WebSocket-Protocol: binary".
by dcf@torproject.org 23 Jul '12
by dcf@torproject.org 23 Jul '12
23 Jul '12
commit 1dd0da7ef968f914cc99137cf98852d77351a174
Author: David Fifield <david(a)bamsoftware.com>
Date: Sun Jul 22 20:53:53 2012 -0700
Don't let websockify send "Sec-WebSocket-Protocol: binary".
We patch websockify so that it assumes binary transport when no
subprotocol is given. Previously we continued to send a
"Sec-WebSocket-Protocol: binary" in our response, which is a violation
of section 4.2.2 of RFC 6455:
"The value chosen MUST be derived from the client's handshake,
specifically by selecting one of the values from the
|Sec-WebSocket-Protocol| field that the server is willing to use
for this connection (if any). If the client's handshake did not
contain such a header field or if the server does not agree to
any of the client's requested subprotocols, the only acceptable
value is null."
Chromium (version 20, I believe) started being more strict about
enforcing this, which caused the relay connection to fail.
https://bugs.webkit.org/show_bug.cgi?id=82307
http://trac.webkit.org/changeset/112499
---
patches/websockify-binary-default.patch | 32 ++++++++++++++++++++++--------
1 files changed, 23 insertions(+), 9 deletions(-)
diff --git a/patches/websockify-binary-default.patch b/patches/websockify-binary-default.patch
index 9ba7f06..bb7a469 100644
--- a/patches/websockify-binary-default.patch
+++ b/patches/websockify-binary-default.patch
@@ -1,26 +1,40 @@
-From 066c665c2e437a399e2fd0b55394b0ec82c7aeab Mon Sep 17 00:00:00 2001
+From dc3a5f38d9921aa3cd128744ab3be5e6cfb7ff48 Mon Sep 17 00:00:00 2001
From: David Fifield <david(a)bamsoftware.com>
-Date: Thu, 19 Apr 2012 14:16:16 -0700
+Date: Sun, 22 Jul 2012 20:52:47 -0700
Subject: [PATCH] Assume binary transfer when no subprotocol is given.
---
- websocket.py | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
+ websocket.py | 8 ++------
+ 1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/websocket.py b/websocket.py
-index 646160c..d6cea57 100644
+index 96156b9..7a42ff6 100644
--- a/websocket.py
+++ b/websocket.py
-@@ -660,7 +660,8 @@ Sec-WebSocket-Accept: %s\r
- elif 'base64' in protocols:
+@@ -585,12 +585,10 @@ Sec-WebSocket-Accept: %s\r
+ key = h['Sec-WebSocket-Key']
+
+ # Choose binary if client supports it
+- if 'binary' in protocols:
+- self.base64 = False
+- elif 'base64' in protocols:
++ if 'base64' in protocols:
self.base64 = True
else:
- raise self.EClose("Client must support 'binary' or 'base64' protocol")
+ self.base64 = False
-+ # raise self.EClose("Client must support 'binary' or 'base64' protocol")
# Generate the hash value for the accept header
accept = b64encode(sha1(s2b(key + self.GUID)).digest())
+@@ -598,8 +596,6 @@ Sec-WebSocket-Accept: %s\r
+ response = self.server_handshake_hybi % b2s(accept)
+ if self.base64:
+ response += "Sec-WebSocket-Protocol: base64\r\n"
+- else:
+- response += "Sec-WebSocket-Protocol: binary\r\n"
+ response += "\r\n"
+
+ else:
--
-1.7.9.5
+1.7.10.4
1
0

[flashproxy/master] Re-register after a failed WebSocket handshake.
by dcf@torproject.org 23 Jul '12
by dcf@torproject.org 23 Jul '12
23 Jul '12
commit 0b2adc04b24f89ec5a6c572a3f8832fc7d7004aa
Author: David Fifield <david(a)bamsoftware.com>
Date: Sun Jul 22 19:31:17 2012 -0700
Re-register after a failed WebSocket handshake.
---
flashproxy-client | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/flashproxy-client b/flashproxy-client
index 1f85f87..ad60057 100755
--- a/flashproxy-client
+++ b/flashproxy-client
@@ -811,6 +811,7 @@ def main():
unlinked_remotes.append(wrapped)
else:
fd.close()
+ register()
websocket_pending.remove(fd)
report_pending()
elif fd in socks_pending:
1
0

[flashproxy/master] Might as well fill in a real RELAY so this works out of the box.
by dcf@torproject.org 23 Jul '12
by dcf@torproject.org 23 Jul '12
23 Jul '12
commit 1d822effb02f8b312e6083453d8e0ba08c2afed7
Author: David Fifield <david(a)bamsoftware.com>
Date: Sun Jul 22 19:10:16 2012 -0700
Might as well fill in a real RELAY so this works out of the box.
---
init.d/facilitator | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/init.d/facilitator b/init.d/facilitator
index e7f919b..5510d11 100755
--- a/init.d/facilitator
+++ b/init.d/facilitator
@@ -18,7 +18,7 @@
# Replace this with the address of a Tor relay with a websocket pluggable
# transport. You can use host:port syntax.
-RELAY=...
+RELAY=tor1.bamsoftware.com:9901
BINDIR=/usr/local/bin
VARDIR=/var/flashproxy
1
0

23 Jul '12
commit a9119dd2b14bb845b0a19f96e8a5d48373c5df0c
Author: David Fifield <david(a)bamsoftware.com>
Date: Sun Jul 22 18:26:06 2012 -0700
Remove .py extension from executables.
There's no reason to tie the executable names to their implementation
language; also maybe the extensionless names are less scary for users.
---
Makefile | 6 +-
README | 16 +-
experiments/exercise/exercise.sh | 2 +-
experiments/switching/local-http-alternating.sh | 4 +-
experiments/switching/local-http-constant.sh | 4 +-
experiments/switching/remote-tor-alternating.sh | 4 +-
experiments/switching/remote-tor-constant.sh | 4 +-
experiments/throughput/throughput.sh | 4 +-
facilitator | 364 +++++++++
facilitator.py | 364 ---------
flashproxy-client | 932 +++++++++++++++++++++++
flashproxy-client-test | 233 ++++++
flashproxy-client-test.py | 224 ------
flashproxy-client.py | 932 -----------------------
flashproxy-reg-http | 111 +++
flashproxy-reg-http.py | 111 ---
init.d/facilitator | 4 +-
torrc | 2 +-
18 files changed, 1665 insertions(+), 1656 deletions(-)
diff --git a/Makefile b/Makefile
index fc65672..7b204dd 100644
--- a/Makefile
+++ b/Makefile
@@ -3,21 +3,21 @@ BINDIR = $(PREFIX)/bin
VERSION = 0.2
-CLIENT_DIST_FILES = flashproxy-client.py flashproxy-reg-http.py README LICENSE torrc
+CLIENT_DIST_FILES = flashproxy-client flashproxy-reg-http README LICENSE torrc
all:
:
install:
mkdir -p $(BINDIR)
- cp -f flashproxy-client.py flashproxy-reg-http.py facilitator.py $(BINDIR)
+ cp -f flashproxy-client flashproxy-reg-http facilitator $(BINDIR)
clean:
rm -f *.pyc
rm -rf dist
test:
- ./flashproxy-client-test.py
+ ./flashproxy-client-test
./flashproxy-test.js
DISTNAME = flashproxy-client-$(VERSION)
diff --git a/README b/README
index 2b4b5a9..d6ad66d 100644
--- a/README
+++ b/README
@@ -6,7 +6,7 @@ means version 0.2.3.2-alpha or later.
All the flashproxy programs and source code can be downloaded this way:
git clone https://git.torproject.org/flashproxy.git
But as a user you only need these files:
- https://gitweb.torproject.org/flashproxy.git/blob_plain/HEAD:/flashproxy-cl…
+ https://gitweb.torproject.org/flashproxy.git/blob_plain/HEAD:/flashproxy-cl…
https://gitweb.torproject.org/flashproxy.git/blob_plain/HEAD:/torrc
You must be able to receive TCP connections; unfortunately means that
@@ -14,17 +14,17 @@ you cannot be behind NAT. See the section "Using a public client
transport plugin" below to try out the system even behind NAT.
1. Run the client transport plugin.
- $ python flashproxy-client.py --register
+ $ flashproxy-client --register
By default the transport plugin listens on Internet-facing TCP port
9000. If you have to use a different port (to get through a firewall,
for example), give it on the command lines like this (here using port
8888):
- $ python flashproxy-client.py --register 127.0.0.1:9001 :8888
+ $ flashproxy-client --register 127.0.0.1:9001 :8888
2. Run Tor using the included torrc file.
$ tor -f torrc
-Watch the output of flashproxy-client.py and tor. From
-flashproxy-client.py you are expecting output lines like this:
+Watch the output of flashproxy-client and tor. From
+flashproxy-client you are expecting output lines like this:
Remote connection from [scrubbed].
Local connection from [scrubbed].
Linking [scrubbed] and [scrubbed].
@@ -72,7 +72,7 @@ http://crypto.stanford.edu/flashproxy/
== Using a public client transport plugin
-Rather than running flashproxy-client.py on your computer, you can use a
+Rather than running flashproxy-client on your computer, you can use a
public instance of it. This way is not as realistic because all your Tor
traffic will first go to a fixed address and can be easily blocked.
However this is an easy way to try out the system without having to do
@@ -106,7 +106,7 @@ wait a few minutes. It can take a while to download relay descriptors.
If you suspect that the facilitator has lost your client registration, you can
re-register:
- $ python flashproxy-reg-http.py
+ $ flashproxy-reg-http
== How to run a relay
@@ -136,7 +136,7 @@ See design.txt for some more technical information.
=== Running a facilitator
On the facilitator, run
- $ ./facilitator.py -r <relay-ip>
+ $ facilitator -r <relay-ip>
You can use "tor1.bamsoftware.com" for <relay-ip>. The facilitator runs
on port 9002 by default.
diff --git a/experiments/exercise/exercise.sh b/experiments/exercise/exercise.sh
index 91ab3d7..8cfd5b3 100755
--- a/experiments/exercise/exercise.sh
+++ b/experiments/exercise/exercise.sh
@@ -21,7 +21,7 @@ trap stop EXIT
date
cd "$FLASHPROXY_DIR"
-./flashproxy-client.py --register "127.0.0.1:$LOCAL_PORT" ":$REMOTE_PORT" &
+./flashproxy-client --register "127.0.0.1:$LOCAL_PORT" ":$REMOTE_PORT" &
PIDS_TO_KILL+=($!)
sleep 20
diff --git a/experiments/switching/local-http-alternating.sh b/experiments/switching/local-http-alternating.sh
index e0807e2..83e33eb 100755
--- a/experiments/switching/local-http-alternating.sh
+++ b/experiments/switching/local-http-alternating.sh
@@ -36,12 +36,12 @@ echo "Start web server."
PIDS_TO_KILL+=($!)
echo "Start facilitator."
-"$FLASHPROXY_DIR"/facilitator.py -d --relay 127.0.0.1:8000 >/dev/null &
+"$FLASHPROXY_DIR"/facilitator -d --relay 127.0.0.1:8000 >/dev/null &
PIDS_TO_KILL+=($!)
visible_sleep 5
echo "Start client transport plugin."
-"$FLASHPROXY_DIR"/flashproxy-client.py --register --facilitator 127.0.0.1:9002 >/dev/null &
+"$FLASHPROXY_DIR"/flashproxy-client --register --facilitator 127.0.0.1:9002 >/dev/null &
PIDS_TO_KILL+=($!)
visible_sleep 1
diff --git a/experiments/switching/local-http-constant.sh b/experiments/switching/local-http-constant.sh
index 9efaafd..41c1a6e 100755
--- a/experiments/switching/local-http-constant.sh
+++ b/experiments/switching/local-http-constant.sh
@@ -40,12 +40,12 @@ echo "Start websockify."
PIDS_TO_KILL+=($!)
echo "Start facilitator."
-"$FLASHPROXY_DIR"/facilitator.py -d --relay 127.0.0.1:8001 >/dev/null &
+"$FLASHPROXY_DIR"/facilitator -d --relay 127.0.0.1:8001 >/dev/null &
PIDS_TO_KILL+=($!)
visible_sleep 5
echo "Start client transport plugin."
-"$FLASHPROXY_DIR"/flashproxy-client.py --register --facilitator 127.0.0.1:9002 >/dev/null &
+"$FLASHPROXY_DIR"/flashproxy-client --register --facilitator 127.0.0.1:9002 >/dev/null &
PIDS_TO_KILL+=($!)
visible_sleep 1
diff --git a/experiments/switching/remote-tor-alternating.sh b/experiments/switching/remote-tor-alternating.sh
index e4ad8c0..08d6dc0 100755
--- a/experiments/switching/remote-tor-alternating.sh
+++ b/experiments/switching/remote-tor-alternating.sh
@@ -33,12 +33,12 @@ echo "Start web server."
PIDS_TO_KILL+=($!)
echo "Start facilitator."
-"$FLASHPROXY_DIR"/facilitator.py -d --relay tor1.bamsoftware.com:9901 >/dev/null &
+"$FLASHPROXY_DIR"/facilitator -d --relay tor1.bamsoftware.com:9901 >/dev/null &
PIDS_TO_KILL+=($!)
visible_sleep 15
echo "Start client transport plugin."
-"$FLASHPROXY_DIR"/flashproxy-client.py --register --facilitator 127.0.0.1:9002 >/dev/null &
+"$FLASHPROXY_DIR"/flashproxy-client --register --facilitator 127.0.0.1:9002 >/dev/null &
PIDS_TO_KILL+=($!)
visible_sleep 1
diff --git a/experiments/switching/remote-tor-constant.sh b/experiments/switching/remote-tor-constant.sh
index a26a323..33c54f4 100755
--- a/experiments/switching/remote-tor-constant.sh
+++ b/experiments/switching/remote-tor-constant.sh
@@ -32,12 +32,12 @@ echo "Start web server."
PIDS_TO_KILL+=($!)
echo "Start facilitator."
-"$FLASHPROXY_DIR"/facilitator.py -d --relay tor1.bamsoftware.com:9901 >/dev/null &
+"$FLASHPROXY_DIR"/facilitator -d --relay tor1.bamsoftware.com:9901 >/dev/null &
PIDS_TO_KILL+=($!)
visible_sleep 15
echo "Start client transport plugin."
-"$FLASHPROXY_DIR"/flashproxy-client.py --register --facilitator 127.0.0.1:9002 >/dev/null &
+"$FLASHPROXY_DIR"/flashproxy-client --register --facilitator 127.0.0.1:9002 >/dev/null &
PIDS_TO_KILL+=($!)
visible_sleep 1
diff --git a/experiments/throughput/throughput.sh b/experiments/throughput/throughput.sh
index 2290e94..99ca7fc 100755
--- a/experiments/throughput/throughput.sh
+++ b/experiments/throughput/throughput.sh
@@ -53,12 +53,12 @@ echo "Start websockify."
PIDS_TO_KILL+=($!)
echo "Start facilitator."
-"$FLASHPROXY_DIR"/facilitator.py -d --relay 127.0.0.1:8001 127.0.0.1 9002 >/dev/null &
+"$FLASHPROXY_DIR"/facilitator -d --relay 127.0.0.1:8001 127.0.0.1 9002 >/dev/null &
PIDS_TO_KILL+=($!)
visible_sleep 1
echo "Start client transport plugin."
-"$FLASHPROXY_DIR"/flashproxy-client.py >/dev/null &
+"$FLASHPROXY_DIR"/flashproxy-client >/dev/null &
PIDS_TO_KILL+=($!)
visible_sleep 1
diff --git a/facilitator b/facilitator
new file mode 100755
index 0000000..2a04e71
--- /dev/null
+++ b/facilitator
@@ -0,0 +1,364 @@
+#!/usr/bin/env python
+
+import BaseHTTPServer
+import SocketServer
+import cgi
+import errno
+import getopt
+import os
+import re
+import socket
+import sys
+import threading
+import time
+import urllib
+import urlparse
+
+DEFAULT_ADDRESS = "0.0.0.0"
+DEFAULT_PORT = 9002
+DEFAULT_RELAY_PORT = 9001
+DEFAULT_LOG_FILENAME = "facilitator.log"
+
+LOG_DATE_FORMAT = "%Y-%m-%d %H:%M:%S"
+
+class options(object):
+ log_filename = DEFAULT_LOG_FILENAME
+ log_file = sys.stdout
+ relay_spec = None
+ daemonize = True
+ pid_filename = None
+ safe_logging = True
+
+ @staticmethod
+ def set_relay_spec(spec):
+ af, host, port = parse_addr_spec(spec, defport = DEFAULT_RELAY_PORT)
+ # Resolve to get an IP address.
+ addrs = socket.getaddrinfo(host, port, af)
+ options.relay_spec = format_addr(addrs[0][4])
+
+def usage(f = sys.stdout):
+ print >> f, """\
+Usage: %(progname)s -r RELAY <OPTIONS> [HOST] [PORT]
+Flash proxy facilitator: Register client addresses with HTTP POST requests
+and serve them out again with HTTP GET. Listen on HOST and PORT, by default
+%(addr)s %(port)d.
+ -d, --debug don't daemonize, log to stdout.
+ -h, --help show this help.
+ -l, --log FILENAME write log to FILENAME (default \"%(log)s\").
+ --pidfile FILENAME write PID to FILENAME after daemonizing.
+ -r, --relay RELAY send RELAY (host:port) to proxies as the relay to use.
+ --unsafe-logging don't scrub IP addresses from logs.\
+""" % {
+ "progname": sys.argv[0],
+ "addr": DEFAULT_ADDRESS,
+ "port": DEFAULT_PORT,
+ "log": DEFAULT_LOG_FILENAME,
+}
+
+def safe_str(s):
+ """Return s if options.safe_logging is true, and "[scrubbed]" otherwise."""
+ if options.safe_logging:
+ return "[scrubbed]"
+ else:
+ return s
+
+log_lock = threading.Lock()
+def log(msg):
+ log_lock.acquire()
+ try:
+ print >> options.log_file, (u"%s %s" % (time.strftime(LOG_DATE_FORMAT), msg)).encode("UTF-8")
+ options.log_file.flush()
+ finally:
+ log_lock.release()
+
+def parse_addr_spec(spec, defhost = None, defport = None):
+ host = None
+ port = None
+ m = None
+ # IPv6 syntax.
+ if not m:
+ m = re.match(ur'^\[(.+)\]:(\d+)$', spec)
+ if m:
+ host, port = m.groups()
+ af = socket.AF_INET6
+ if not m:
+ m = re.match(ur'^\[(.+)\]:?$', spec)
+ if m:
+ host, = m.groups()
+ af = socket.AF_INET6
+ # IPv4 syntax.
+ if not m:
+ m = re.match(ur'^(.+):(\d+)$', spec)
+ if m:
+ host, port = m.groups()
+ af = socket.AF_INET
+ if not m:
+ m = re.match(ur'^:?(\d+)$', spec)
+ if m:
+ port, = m.groups()
+ af = 0
+ if not m:
+ host = spec
+ af = 0
+ host = host or defhost
+ port = port or defport
+ if not (host and port):
+ raise ValueError("Bad address specification \"%s\"" % spec)
+ return af, host, int(port)
+
+def format_addr(addr):
+ host, port = addr
+ if not host:
+ return u":%d" % port
+ # Numeric IPv6 address?
+ try:
+ addrs = socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM, socket.IPPROTO_TCP, socket.AI_NUMERICHOST)
+ af = addrs[0][0]
+ except socket.gaierror, e:
+ af = 0
+ if af == socket.AF_INET6:
+ return u"[%s]:%d" % (host, port)
+ else:
+ return u"%s:%d" % (host, port)
+
+class TCPReg(object):
+ def __init__(self, host, port):
+ self.host = host
+ self.port = port
+
+ def __unicode__(self):
+ return format_addr((self.host, self.port))
+
+ def __str__(self):
+ return unicode(self).encode("UTF-8")
+
+ def __cmp__(self, other):
+ if isinstance(other, TCPReg):
+ return cmp((self.host, self.port), (other.host, other.port))
+ else:
+ return False
+
+class Reg(object):
+ @staticmethod
+ def parse(spec, defhost = None, defport = None):
+ try:
+ af, host, port = parse_addr_spec(spec, defhost, defport)
+ except ValueError:
+ pass
+ else:
+ try:
+ addrs = socket.getaddrinfo(host, port, af, socket.SOCK_STREAM, socket.IPPROTO_TCP, socket.AI_NUMERICHOST)
+ except socket.gaierror, e:
+ raise ValueError("Bad host or port: \"%s\" \"%s\": %s" % (host, port, str(e)))
+ if not addrs:
+ raise ValueError("Bad host or port: \"%s\" \"%s\"" % (host, port))
+
+ host, port = socket.getnameinfo(addrs[0][4], socket.NI_NUMERICHOST | socket.NI_NUMERICSERV)
+ return TCPReg(host, int(port))
+
+ raise ValueError("Bad spec format: %s" % repr(spec))
+
+class RegSet(object):
+ def __init__(self):
+ self.set = []
+ self.cv = threading.Condition()
+
+ def add(self, reg):
+ self.cv.acquire()
+ try:
+ if reg not in list(self.set):
+ self.set.append(reg)
+ self.cv.notify()
+ return True
+ else:
+ return False
+ finally:
+ self.cv.release()
+
+ def fetch(self):
+ self.cv.acquire()
+ try:
+ if not self.set:
+ return None
+ return self.set.pop(0)
+ finally:
+ self.cv.release()
+
+ def __len__(self):
+ self.cv.acquire()
+ try:
+ return len(self.set)
+ finally:
+ self.cv.release()
+
+class Handler(BaseHTTPServer.BaseHTTPRequestHandler):
+ def do_GET(self):
+ proxy_addr_s = format_addr(self.client_address)
+
+ path = urlparse.urlsplit(self.path)[2]
+
+ reg = REGS.fetch()
+ if reg:
+ log(u"proxy %s gets %s, relay %s (now %d)" %
+ (safe_str(proxy_addr_s), safe_str(unicode(reg)), options.relay_spec, len(REGS)))
+ else:
+ log(u"proxy %s gets none" % safe_str(proxy_addr_s))
+ self.send_client(reg)
+
+ def do_POST(self):
+ client_addr_s = format_addr(self.client_address)
+
+ data = cgi.FieldStorage(fp = self.rfile, headers = self.headers,
+ environ = {"REQUEST_METHOD": "POST"})
+
+ client_spec = data.getfirst("client")
+ if client_spec is None:
+ log(u"client %s missing \"client\" param" % safe_str(client_addr_s))
+ self.send_error(400)
+ return
+
+ try:
+ reg = Reg.parse(client_spec, self.client_address[0])
+ except ValueError, e:
+ log(u"client %s syntax error in %s: %s"
+ % (safe_str(client_addr_s), safe_str(repr(client_spec)), repr(str(e))))
+ self.send_error(400)
+ return
+
+ if REGS.add(reg):
+ log(u"client %s %s (now %d)"
+ % (safe_str(client_addr_s), safe_str(unicode(reg)), len(REGS)))
+ else:
+ log(u"client %s %s (already present, now %d)"
+ % (safe_str(client_addr_s), safe_str(unicode(reg)), len(REGS)))
+
+ self.send_response(200)
+ self.end_headers()
+
+ def send_error(self, code, message = None):
+ self.send_response(code)
+ self.end_headers()
+ if message:
+ self.wfile.write(message)
+
+ def log_request(self, code):
+ pass
+
+ def log_message(self, format, *args):
+ msg = format % args
+ log(u"message from HTTP handler for %s: %s"
+ % (format_addr(self.client_address), repr(msg)))
+
+ def send_client(self, reg):
+ if reg:
+ client_str = str(reg)
+ else:
+ client_str = ""
+ self.send_response(200)
+ self.send_header("Content-Type", "application/x-www-form-urlencoded")
+ self.send_header("Cache-Control", "no-cache")
+ # Allow XMLHttpRequest from any domain. http://www.w3.org/TR/cors/.
+ self.send_header("Access-Control-Allow-Origin", "*")
+ self.end_headers()
+
+ data = {}
+ data["client"] = client_str
+ data["relay"] = options.relay_spec
+ self.request.send(urllib.urlencode(data))
+
+ # Catch "broken pipe" errors that otherwise cause a stack trace in the log.
+ def catch_epipe(fn):
+ def ret(self, *args):
+ try:
+ fn(self, *args)
+ except socket.error, e:
+ try:
+ err_num = e.errno
+ except AttributeError:
+ # Before Python 2.6, exception can be a pair.
+ err_num, errstr = e
+ except:
+ raise
+ if err_num != errno.EPIPE:
+ raise
+ return ret
+ handle = catch_epipe(BaseHTTPServer.BaseHTTPRequestHandler.handle)
+ finish = catch_epipe(BaseHTTPServer.BaseHTTPRequestHandler.finish)
+
+REGS = RegSet()
+
+opts, args = getopt.gnu_getopt(sys.argv[1:], "dhl:r:",
+ ["debug", "help", "log=", "pidfile=", "relay=", "unsafe-logging"])
+for o, a in opts:
+ if o == "-d" or o == "--debug":
+ options.daemonize = False
+ options.log_filename = None
+ elif o == "-h" or o == "--help":
+ usage()
+ sys.exit()
+ elif o == "-l" or o == "--log":
+ options.log_filename = a
+ elif o == "--pidfile":
+ options.pid_filename = a
+ elif o == "-r" or o == "--relay":
+ try:
+ options.set_relay_spec(a)
+ except socket.gaierror, e:
+ print >> sys.stderr, u"Can't resolve relay %s: %s" % (repr(a), str(e))
+ sys.exit(1)
+ elif o == "--unsafe-logging":
+ options.safe_logging = False
+
+if not options.relay_spec:
+ print >> sys.stderr, """\
+The -r option is required. Give it the relay that will be sent to proxies.
+ -r HOST[:PORT]\
+"""
+ sys.exit(1)
+
+if len(args) == 0:
+ address = (DEFAULT_ADDRESS, DEFAULT_PORT)
+elif len(args) == 1:
+ # Either HOST or PORT may be omitted; figure out which one.
+ if args[0].isdigit():
+ address = (DEFAULT_ADDRESS, args[0])
+ else:
+ address = (args[0], DEFAULT_PORT)
+elif len(args) == 2:
+ address = (args[0], args[1])
+else:
+ usage(sys.stderr)
+ sys.exit(1)
+
+if options.log_filename:
+ options.log_file = open(options.log_filename, "a")
+ # Send error tracebacks to the log.
+ sys.stderr = options.log_file
+else:
+ options.log_file = sys.stdout
+
+addrinfo = socket.getaddrinfo(address[0], address[1], 0, socket.SOCK_STREAM, socket.IPPROTO_TCP)[0]
+
+class Server(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer):
+ pass
+
+# Setup the server
+server = Server(addrinfo[4], Handler)
+
+log(u"start on %s" % format_addr(addrinfo[4]))
+log(u"using relay address %s" % options.relay_spec)
+
+if options.daemonize:
+ log(u"daemonizing")
+ pid = os.fork()
+ if pid != 0:
+ if options.pid_filename:
+ f = open(options.pid_filename, "w")
+ print >> f, pid
+ f.close()
+ sys.exit(0)
+
+try:
+ server.serve_forever()
+except KeyboardInterrupt:
+ sys.exit(0)
diff --git a/facilitator.py b/facilitator.py
deleted file mode 100755
index 2a04e71..0000000
--- a/facilitator.py
+++ /dev/null
@@ -1,364 +0,0 @@
-#!/usr/bin/env python
-
-import BaseHTTPServer
-import SocketServer
-import cgi
-import errno
-import getopt
-import os
-import re
-import socket
-import sys
-import threading
-import time
-import urllib
-import urlparse
-
-DEFAULT_ADDRESS = "0.0.0.0"
-DEFAULT_PORT = 9002
-DEFAULT_RELAY_PORT = 9001
-DEFAULT_LOG_FILENAME = "facilitator.log"
-
-LOG_DATE_FORMAT = "%Y-%m-%d %H:%M:%S"
-
-class options(object):
- log_filename = DEFAULT_LOG_FILENAME
- log_file = sys.stdout
- relay_spec = None
- daemonize = True
- pid_filename = None
- safe_logging = True
-
- @staticmethod
- def set_relay_spec(spec):
- af, host, port = parse_addr_spec(spec, defport = DEFAULT_RELAY_PORT)
- # Resolve to get an IP address.
- addrs = socket.getaddrinfo(host, port, af)
- options.relay_spec = format_addr(addrs[0][4])
-
-def usage(f = sys.stdout):
- print >> f, """\
-Usage: %(progname)s -r RELAY <OPTIONS> [HOST] [PORT]
-Flash proxy facilitator: Register client addresses with HTTP POST requests
-and serve them out again with HTTP GET. Listen on HOST and PORT, by default
-%(addr)s %(port)d.
- -d, --debug don't daemonize, log to stdout.
- -h, --help show this help.
- -l, --log FILENAME write log to FILENAME (default \"%(log)s\").
- --pidfile FILENAME write PID to FILENAME after daemonizing.
- -r, --relay RELAY send RELAY (host:port) to proxies as the relay to use.
- --unsafe-logging don't scrub IP addresses from logs.\
-""" % {
- "progname": sys.argv[0],
- "addr": DEFAULT_ADDRESS,
- "port": DEFAULT_PORT,
- "log": DEFAULT_LOG_FILENAME,
-}
-
-def safe_str(s):
- """Return s if options.safe_logging is true, and "[scrubbed]" otherwise."""
- if options.safe_logging:
- return "[scrubbed]"
- else:
- return s
-
-log_lock = threading.Lock()
-def log(msg):
- log_lock.acquire()
- try:
- print >> options.log_file, (u"%s %s" % (time.strftime(LOG_DATE_FORMAT), msg)).encode("UTF-8")
- options.log_file.flush()
- finally:
- log_lock.release()
-
-def parse_addr_spec(spec, defhost = None, defport = None):
- host = None
- port = None
- m = None
- # IPv6 syntax.
- if not m:
- m = re.match(ur'^\[(.+)\]:(\d+)$', spec)
- if m:
- host, port = m.groups()
- af = socket.AF_INET6
- if not m:
- m = re.match(ur'^\[(.+)\]:?$', spec)
- if m:
- host, = m.groups()
- af = socket.AF_INET6
- # IPv4 syntax.
- if not m:
- m = re.match(ur'^(.+):(\d+)$', spec)
- if m:
- host, port = m.groups()
- af = socket.AF_INET
- if not m:
- m = re.match(ur'^:?(\d+)$', spec)
- if m:
- port, = m.groups()
- af = 0
- if not m:
- host = spec
- af = 0
- host = host or defhost
- port = port or defport
- if not (host and port):
- raise ValueError("Bad address specification \"%s\"" % spec)
- return af, host, int(port)
-
-def format_addr(addr):
- host, port = addr
- if not host:
- return u":%d" % port
- # Numeric IPv6 address?
- try:
- addrs = socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM, socket.IPPROTO_TCP, socket.AI_NUMERICHOST)
- af = addrs[0][0]
- except socket.gaierror, e:
- af = 0
- if af == socket.AF_INET6:
- return u"[%s]:%d" % (host, port)
- else:
- return u"%s:%d" % (host, port)
-
-class TCPReg(object):
- def __init__(self, host, port):
- self.host = host
- self.port = port
-
- def __unicode__(self):
- return format_addr((self.host, self.port))
-
- def __str__(self):
- return unicode(self).encode("UTF-8")
-
- def __cmp__(self, other):
- if isinstance(other, TCPReg):
- return cmp((self.host, self.port), (other.host, other.port))
- else:
- return False
-
-class Reg(object):
- @staticmethod
- def parse(spec, defhost = None, defport = None):
- try:
- af, host, port = parse_addr_spec(spec, defhost, defport)
- except ValueError:
- pass
- else:
- try:
- addrs = socket.getaddrinfo(host, port, af, socket.SOCK_STREAM, socket.IPPROTO_TCP, socket.AI_NUMERICHOST)
- except socket.gaierror, e:
- raise ValueError("Bad host or port: \"%s\" \"%s\": %s" % (host, port, str(e)))
- if not addrs:
- raise ValueError("Bad host or port: \"%s\" \"%s\"" % (host, port))
-
- host, port = socket.getnameinfo(addrs[0][4], socket.NI_NUMERICHOST | socket.NI_NUMERICSERV)
- return TCPReg(host, int(port))
-
- raise ValueError("Bad spec format: %s" % repr(spec))
-
-class RegSet(object):
- def __init__(self):
- self.set = []
- self.cv = threading.Condition()
-
- def add(self, reg):
- self.cv.acquire()
- try:
- if reg not in list(self.set):
- self.set.append(reg)
- self.cv.notify()
- return True
- else:
- return False
- finally:
- self.cv.release()
-
- def fetch(self):
- self.cv.acquire()
- try:
- if not self.set:
- return None
- return self.set.pop(0)
- finally:
- self.cv.release()
-
- def __len__(self):
- self.cv.acquire()
- try:
- return len(self.set)
- finally:
- self.cv.release()
-
-class Handler(BaseHTTPServer.BaseHTTPRequestHandler):
- def do_GET(self):
- proxy_addr_s = format_addr(self.client_address)
-
- path = urlparse.urlsplit(self.path)[2]
-
- reg = REGS.fetch()
- if reg:
- log(u"proxy %s gets %s, relay %s (now %d)" %
- (safe_str(proxy_addr_s), safe_str(unicode(reg)), options.relay_spec, len(REGS)))
- else:
- log(u"proxy %s gets none" % safe_str(proxy_addr_s))
- self.send_client(reg)
-
- def do_POST(self):
- client_addr_s = format_addr(self.client_address)
-
- data = cgi.FieldStorage(fp = self.rfile, headers = self.headers,
- environ = {"REQUEST_METHOD": "POST"})
-
- client_spec = data.getfirst("client")
- if client_spec is None:
- log(u"client %s missing \"client\" param" % safe_str(client_addr_s))
- self.send_error(400)
- return
-
- try:
- reg = Reg.parse(client_spec, self.client_address[0])
- except ValueError, e:
- log(u"client %s syntax error in %s: %s"
- % (safe_str(client_addr_s), safe_str(repr(client_spec)), repr(str(e))))
- self.send_error(400)
- return
-
- if REGS.add(reg):
- log(u"client %s %s (now %d)"
- % (safe_str(client_addr_s), safe_str(unicode(reg)), len(REGS)))
- else:
- log(u"client %s %s (already present, now %d)"
- % (safe_str(client_addr_s), safe_str(unicode(reg)), len(REGS)))
-
- self.send_response(200)
- self.end_headers()
-
- def send_error(self, code, message = None):
- self.send_response(code)
- self.end_headers()
- if message:
- self.wfile.write(message)
-
- def log_request(self, code):
- pass
-
- def log_message(self, format, *args):
- msg = format % args
- log(u"message from HTTP handler for %s: %s"
- % (format_addr(self.client_address), repr(msg)))
-
- def send_client(self, reg):
- if reg:
- client_str = str(reg)
- else:
- client_str = ""
- self.send_response(200)
- self.send_header("Content-Type", "application/x-www-form-urlencoded")
- self.send_header("Cache-Control", "no-cache")
- # Allow XMLHttpRequest from any domain. http://www.w3.org/TR/cors/.
- self.send_header("Access-Control-Allow-Origin", "*")
- self.end_headers()
-
- data = {}
- data["client"] = client_str
- data["relay"] = options.relay_spec
- self.request.send(urllib.urlencode(data))
-
- # Catch "broken pipe" errors that otherwise cause a stack trace in the log.
- def catch_epipe(fn):
- def ret(self, *args):
- try:
- fn(self, *args)
- except socket.error, e:
- try:
- err_num = e.errno
- except AttributeError:
- # Before Python 2.6, exception can be a pair.
- err_num, errstr = e
- except:
- raise
- if err_num != errno.EPIPE:
- raise
- return ret
- handle = catch_epipe(BaseHTTPServer.BaseHTTPRequestHandler.handle)
- finish = catch_epipe(BaseHTTPServer.BaseHTTPRequestHandler.finish)
-
-REGS = RegSet()
-
-opts, args = getopt.gnu_getopt(sys.argv[1:], "dhl:r:",
- ["debug", "help", "log=", "pidfile=", "relay=", "unsafe-logging"])
-for o, a in opts:
- if o == "-d" or o == "--debug":
- options.daemonize = False
- options.log_filename = None
- elif o == "-h" or o == "--help":
- usage()
- sys.exit()
- elif o == "-l" or o == "--log":
- options.log_filename = a
- elif o == "--pidfile":
- options.pid_filename = a
- elif o == "-r" or o == "--relay":
- try:
- options.set_relay_spec(a)
- except socket.gaierror, e:
- print >> sys.stderr, u"Can't resolve relay %s: %s" % (repr(a), str(e))
- sys.exit(1)
- elif o == "--unsafe-logging":
- options.safe_logging = False
-
-if not options.relay_spec:
- print >> sys.stderr, """\
-The -r option is required. Give it the relay that will be sent to proxies.
- -r HOST[:PORT]\
-"""
- sys.exit(1)
-
-if len(args) == 0:
- address = (DEFAULT_ADDRESS, DEFAULT_PORT)
-elif len(args) == 1:
- # Either HOST or PORT may be omitted; figure out which one.
- if args[0].isdigit():
- address = (DEFAULT_ADDRESS, args[0])
- else:
- address = (args[0], DEFAULT_PORT)
-elif len(args) == 2:
- address = (args[0], args[1])
-else:
- usage(sys.stderr)
- sys.exit(1)
-
-if options.log_filename:
- options.log_file = open(options.log_filename, "a")
- # Send error tracebacks to the log.
- sys.stderr = options.log_file
-else:
- options.log_file = sys.stdout
-
-addrinfo = socket.getaddrinfo(address[0], address[1], 0, socket.SOCK_STREAM, socket.IPPROTO_TCP)[0]
-
-class Server(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer):
- pass
-
-# Setup the server
-server = Server(addrinfo[4], Handler)
-
-log(u"start on %s" % format_addr(addrinfo[4]))
-log(u"using relay address %s" % options.relay_spec)
-
-if options.daemonize:
- log(u"daemonizing")
- pid = os.fork()
- if pid != 0:
- if options.pid_filename:
- f = open(options.pid_filename, "w")
- print >> f, pid
- f.close()
- sys.exit(0)
-
-try:
- server.serve_forever()
-except KeyboardInterrupt:
- sys.exit(0)
diff --git a/flashproxy-client b/flashproxy-client
new file mode 100755
index 0000000..1f85f87
--- /dev/null
+++ b/flashproxy-client
@@ -0,0 +1,932 @@
+#!/usr/bin/env python
+
+import array
+import base64
+import cStringIO
+import getopt
+import httplib
+import os
+import re
+import select
+import socket
+import struct
+import subprocess
+import sys
+import time
+import traceback
+import urllib
+import xml.sax.saxutils
+import BaseHTTPServer
+
+try:
+ from hashlib import sha1
+except ImportError:
+ # Python 2.4 uses this name.
+ from sha import sha as sha1
+
+try:
+ import numpy
+except ImportError:
+ numpy = None
+
+DEFAULT_REMOTE_ADDRESS = "0.0.0.0"
+DEFAULT_REMOTE_PORT = 9000
+DEFAULT_LOCAL_ADDRESS = "127.0.0.1"
+DEFAULT_LOCAL_PORT = 9001
+
+LOG_DATE_FORMAT = "%Y-%m-%d %H:%M:%S"
+
+class options(object):
+ local_addr = None
+ remote_addr = None
+ facilitator_addr = None
+
+ log_filename = None
+ log_file = sys.stdout
+ daemonize = False
+ register = False
+ pid_filename = None
+ safe_logging = True
+
+# We accept up to this many bytes from a socket not yet matched with a partner
+# before disconnecting it.
+UNCONNECTED_BUFFER_LIMIT = 10240
+
+def usage(f = sys.stdout):
+ print >> f, """\
+Usage: %(progname)s --register [LOCAL][:PORT] [REMOTE][:PORT]
+Wait for connections on a local and a remote port. When any pair of connections
+exists, data is ferried between them until one side is closed. By default
+LOCAL is "%(local)s" and REMOTE is "%(remote)s".
+
+The local connection acts as a SOCKS4a proxy, but the host and port in the SOCKS
+request are ignored and the local connection is always linked to a remote
+connection.
+
+If the --register option is used, then your IP address will be sent to the
+facilitator so that proxies can connect to you. You need to register in some way
+in order to get any service. The --facilitator option allows controlling which
+facilitator is used; if omitted, it uses a public default.
+ --daemon daemonize (Unix only).
+ -f, --facilitator=HOST[:PORT] advertise willingness to receive connections to
+ HOST:PORT.
+ -h, --help show this help.
+ -l, --log FILENAME write log to FILENAME (default stdout).
+ --pidfile FILENAME write PID to FILENAME after daemonizing.
+ -r, --register register with the facilitator.
+ --unsafe-logging don't scrub IP addresses from logs.\
+""" % {
+ "progname": sys.argv[0],
+ "local": format_addr((DEFAULT_LOCAL_ADDRESS, DEFAULT_LOCAL_PORT)),
+ "remote": format_addr((DEFAULT_REMOTE_ADDRESS, DEFAULT_REMOTE_PORT)),
+}
+
+def safe_str(s):
+ """Return s if options.safe_logging is true, and "[scrubbed]" otherwise."""
+ if options.safe_logging:
+ return "[scrubbed]"
+ else:
+ return s
+
+def log(msg):
+ print >> options.log_file, (u"%s %s" % (time.strftime(LOG_DATE_FORMAT), msg)).encode("UTF-8")
+ options.log_file.flush()
+
+def parse_addr_spec(spec, defhost = None, defport = None):
+ host = None
+ port = None
+ m = None
+ # IPv6 syntax.
+ if not m:
+ m = re.match(ur'^\[(.+)\]:(\d+)$', spec)
+ if m:
+ host, port = m.groups()
+ af = socket.AF_INET6
+ if not m:
+ m = re.match(ur'^\[(.+)\]:?$', spec)
+ if m:
+ host, = m.groups()
+ af = socket.AF_INET6
+ # IPv4 syntax.
+ if not m:
+ m = re.match(ur'^(.+):(\d+)$', spec)
+ if m:
+ host, port = m.groups()
+ af = socket.AF_INET
+ if not m:
+ m = re.match(ur'^:?(\d+)$', spec)
+ if m:
+ port, = m.groups()
+ af = 0
+ if not m:
+ host = spec
+ af = 0
+ host = host or defhost
+ port = port or defport
+ if not (host and port):
+ raise ValueError("Bad address specification \"%s\"" % spec)
+ return host, int(port)
+
+def format_addr(addr):
+ host, port = addr
+ if not host:
+ return u":%d" % port
+ # Numeric IPv6 address?
+ try:
+ addrs = socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM, socket.IPPROTO_TCP, socket.AI_NUMERICHOST)
+ af = addrs[0][0]
+ except socket.gaierror, e:
+ af = 0
+ if af == socket.AF_INET6:
+ return u"[%s]:%d" % (host, port)
+ else:
+ return u"%s:%d" % (host, port)
+
+def safe_format_addr(addr):
+ return safe_str(format_addr(addr))
+ host, port = addr
+ if not host:
+ return u":%d" % port
+ # Numeric IPv6 address?
+ try:
+ addrs = socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM, socket.IPPROTO_TCP, socket.AI_NUMERICHOST)
+ af = addrs[0][0]
+ except socket.gaierror, e:
+ af = 0
+ if af == socket.AF_INET6:
+ return u"[%s]:%d" % (host, port)
+ else:
+ return u"%s:%d" % (host, port)
+
+
+
+def apply_mask_numpy(payload, mask_key):
+ if len(payload) == 0:
+ return ""
+ payload_a = numpy.frombuffer(payload, dtype="|u4", count=len(payload)//4)
+ m, = numpy.frombuffer(mask_key, dtype="|u4", count=1)
+ result = numpy.bitwise_xor(payload_a, m).tostring()
+ i = len(payload) // 4 * 4
+ if i < len(payload):
+ remainder = []
+ while i < len(payload):
+ remainder.append(chr(ord(payload[i]) ^ ord(mask_key[i % 4])))
+ i += 1
+ result = result + "".join(remainder)
+ return result
+
+def apply_mask_py(payload, mask_key):
+ result = array.array("B", payload)
+ m = array.array("B", mask_key)
+ i = 0
+ while i < len(result) - 7:
+ result[i] ^= m[0]
+ result[i+1] ^= m[1]
+ result[i+2] ^= m[2]
+ result[i+3] ^= m[3]
+ result[i+4] ^= m[0]
+ result[i+5] ^= m[1]
+ result[i+6] ^= m[2]
+ result[i+7] ^= m[3]
+ i += 8
+ while i < len(result):
+ result[i] ^= m[i%4]
+ i += 1
+ return result.tostring()
+
+if numpy is not None:
+ apply_mask = apply_mask_numpy
+else:
+ apply_mask = apply_mask_py
+
+class WebSocketFrame(object):
+ def __init__(self):
+ self.fin = False
+ self.opcode = None
+ self.payload = None
+
+ def is_control(self):
+ return (self.opcode & 0x08) != 0
+
+class WebSocketMessage(object):
+ def __init__(self):
+ self.opcode = None
+ self.payload = None
+
+ def is_control(self):
+ return (self.opcode & 0x08) != 0
+
+class WebSocketDecoder(object):
+ """RFC 6455 section 5 is about the WebSocket framing format."""
+ # Raise an exception rather than buffer anything larger than this.
+ MAX_MESSAGE_LENGTH = 1024 * 1024
+
+ class MaskingError(ValueError):
+ pass
+
+ def __init__(self, use_mask = False):
+ """use_mask should be True for server-to-client sockets, and False for
+ client-to-server sockets."""
+ self.use_mask = use_mask
+
+ # Per-frame state.
+ self.buf = ""
+
+ # Per-message state.
+ self.message_buf = ""
+ self.message_opcode = None
+
+ def feed(self, data):
+ self.buf += data
+
+ def read_frame(self):
+ """Read a frame from the internal buffer, if one is available. Returns a
+ WebSocketFrame object, or None if there are no complete frames to
+ read."""
+ # RFC 6255 section 5.2.
+ if len(self.buf) < 2:
+ return None
+ offset = 0
+ b0, b1 = struct.unpack_from(">BB", self.buf, offset)
+ offset += 2
+ fin = (b0 & 0x80) != 0
+ opcode = b0 & 0x0f
+ frame_masked = (b1 & 0x80) != 0
+ payload_len = b1 & 0x7f
+
+ if payload_len == 126:
+ if len(self.buf) < offset + 2:
+ return None
+ payload_len, = struct.unpack_from(">H", self.buf, offset)
+ offset += 2
+ elif payload_len == 127:
+ if len(self.buf) < offset + 8:
+ return None
+ payload_len, = struct.unpack_from(">Q", self.buf, offset)
+ offset += 8
+
+ if frame_masked:
+ if not self.use_mask:
+ # "A client MUST close a connection if it detects a masked
+ # frame."
+ raise self.MaskingError("Got masked payload from server")
+ if len(self.buf) < offset + 4:
+ return None
+ mask_key = self.buf[offset:offset+4]
+ offset += 4
+ else:
+ if self.use_mask:
+ # "The server MUST close the connection upon receiving a frame
+ # that is not masked."
+ raise self.MaskingError("Got unmasked payload from client")
+ mask_key = None
+
+ if payload_len > self.MAX_MESSAGE_LENGTH:
+ raise ValueError("Refusing to buffer payload of %d bytes" % payload_len)
+
+ if len(self.buf) < offset + payload_len:
+ return None
+ if mask_key:
+ payload = apply_mask(self.buf[offset:offset+payload_len], mask_key)
+ else:
+ payload = self.buf[offset:offset+payload_len]
+ self.buf = self.buf[offset+payload_len:]
+
+ frame = WebSocketFrame()
+ frame.fin = fin
+ frame.opcode = opcode
+ frame.payload = payload
+
+ return frame
+
+ def read_message(self):
+ """Read a complete message. If the opcode is 1, the payload is decoded
+ from a UTF-8 binary string to a unicode string. If a control frame is
+ read while another fragmented message is in progress, the control frame
+ is returned as a new message immediately. Returns None if there is no
+ complete frame to be read."""
+ # RFC 6455 section 5.4 is about fragmentation.
+ while True:
+ frame = self.read_frame()
+ if frame is None:
+ return None
+ # "Control frames (see Section 5.5) MAY be injected in the middle of
+ # a fragmented message. Control frames themselves MUST NOT be
+ # fragmented."
+ if frame.is_control():
+ if not frame.fin:
+ raise ValueError("Control frame (opcode %d) has FIN bit clear" % frame.opcode)
+ message = WebSocketMessage()
+ message.opcode = frame.opcode
+ message.payload = frame.payload
+ return message
+
+ if self.message_opcode is None:
+ if frame.opcode == 0:
+ raise ValueError("First frame has opcode 0")
+ self.message_opcode = frame.opcode
+ else:
+ if frame.opcode != 0:
+ raise ValueError("Non-first frame has nonzero opcode %d" % frame.opcode)
+ self.message_buf += frame.payload
+
+ if frame.fin:
+ break
+ message = WebSocketMessage()
+ message.opcode = self.message_opcode
+ message.payload = self.message_buf
+ self.postprocess_message(message)
+ self.message_opcode = None
+ self.message_buf = ""
+
+ return message
+
+ def postprocess_message(self, message):
+ if message.opcode == 1:
+ message.payload = message.payload.decode("utf-8")
+ return message
+
+class WebSocketEncoder(object):
+ def __init__(self, use_mask = False):
+ self.use_mask = use_mask
+
+ def encode_frame(self, opcode, payload):
+ if opcode >= 16:
+ raise ValueError("Opcode of %d is >= 16" % opcode)
+ length = len(payload)
+
+ if self.use_mask:
+ mask_key = os.urandom(4)
+ payload = apply_mask(payload, mask_key)
+ mask_bit = 0x80
+ else:
+ mask_key = ""
+ mask_bit = 0x00
+
+ if length < 126:
+ len_b, len_ext = length, ""
+ elif length < 0x10000:
+ len_b, len_ext = 126, struct.pack(">H", length)
+ elif length < 0x10000000000000000:
+ len_b, len_ext = 127, struct.pack(">Q", length)
+ else:
+ raise ValueError("payload length of %d is too long" % length)
+
+ return chr(0x80 | opcode) + chr(mask_bit | len_b) + len_ext + mask_key + payload
+
+ def encode_message(self, opcode, payload):
+ if opcode == 1:
+ payload = payload.encode("utf-8")
+ return self.encode_frame(opcode, payload)
+
+# WebSocket implementations generally support text (opcode 1) messages, which
+# are UTF-8-encoded text. Not all support binary (opcode 2) messages. During the
+# WebSocket handshake, we use the "base64" value of the Sec-WebSocket-Protocol
+# header field to indicate that text frames should encoded UTF-8-encoded
+# base64-encoded binary data. Binary messages are always interpreted verbatim,
+# but text messages are rejected if "base64" was not negotiated.
+#
+# The idea here is that browsers that know they don't support binary messages
+# can negotiate "base64" with both endpoints and still reliably transport binary
+# data. Those that know they can support binary messages can just use binary
+# messages in the straightforward way.
+
+class WebSocketBinaryDecoder(object):
+ def __init__(self, protocols, use_mask = False):
+ self.dec = WebSocketDecoder(use_mask)
+ self.base64 = "base64" in protocols
+
+ def feed(self, data):
+ self.dec.feed(data)
+
+ def read(self):
+ """Returns None when there are currently no data to be read. Returns ""
+ when a close message is received."""
+ while True:
+ message = self.dec.read_message()
+ if message is None:
+ return None
+ elif message.opcode == 1:
+ if not self.base64:
+ raise ValueError("Received text message on decoder incapable of base64")
+ payload = base64.b64decode(message.payload)
+ if payload:
+ return payload
+ elif message.opcode == 2:
+ if message.payload:
+ return message.payload
+ elif message.opcode == 8:
+ return ""
+ # Ignore all other opcodes.
+ return None
+
+class WebSocketBinaryEncoder(object):
+ def __init__(self, protocols, use_mask = False):
+ self.enc = WebSocketEncoder(use_mask)
+ self.base64 = "base64" in protocols
+
+ def encode(self, data):
+ if self.base64:
+ return self.enc.encode_message(1, base64.b64encode(data))
+ else:
+ return self.enc.encode_message(2, data)
+
+
+def listen_socket(addr):
+ """Return a nonblocking socket listening on the given address."""
+ addrinfo = socket.getaddrinfo(addr[0], addr[1], 0, socket.SOCK_STREAM, socket.IPPROTO_TCP)[0]
+ s = socket.socket(addrinfo[0], addrinfo[1], addrinfo[2])
+ s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+ s.bind(addr)
+ s.listen(10)
+ s.setblocking(0)
+ return s
+
+def format_peername(s):
+ try:
+ return safe_format_addr(s.getpeername())
+ except socket.error, e:
+ return "<unconnected>"
+
+# How long to wait for a WebSocket request on the remote socket. It is limited
+# to avoid Slowloris-like attacks.
+WEBSOCKET_REQUEST_TIMEOUT = 2.0
+
+class WebSocketRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
+ def __init__(self, request_text, fd):
+ self.rfile = cStringIO.StringIO(request_text)
+ self.wfile = fd.makefile()
+ self.error = False
+ self.raw_requestline = self.rfile.readline()
+ self.parse_request()
+
+ def log_message(self, *args):
+ pass
+
+ def send_error(self, code, message = None):
+ BaseHTTPServer.BaseHTTPRequestHandler.send_error(self, code, message)
+ self.error = True
+
+MAGIC_GUID = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
+
+def handle_websocket_request(fd):
+ request_text = fd.recv(10 * 1024)
+ handler = WebSocketRequestHandler(request_text, fd)
+ if handler.error or not hasattr(handler, "path"):
+ return None
+ method = handler.command
+ path = handler.path
+ headers = handler.headers
+
+ # See RFC 6455 section 4.2.1 for this sequence of checks.
+ #
+ # 1. An HTTP/1.1 or higher GET request, including a "Request-URI"...
+ if method != "GET":
+ handler.send_error(405)
+ return None
+ if path != "/":
+ handler.send_error(404)
+ return None
+
+ # 2. A |Host| header field containing the server's authority.
+ # We deliberately skip this test.
+
+ # 3. An |Upgrade| header field containing the value "websocket", treated as
+ # an ASCII case-insensitive value.
+ if "websocket" not in [x.strip().lower() for x in headers.get("upgrade").split(",")]:
+ handler.send_error(400)
+ return None
+
+ # 4. A |Connection| header field that includes the token "Upgrade", treated
+ # as an ASCII case-insensitive value.
+ if "upgrade" not in [x.strip().lower() for x in headers.get("connection").split(",")]:
+ handler.send_error(400)
+ return None
+
+ # 5. A |Sec-WebSocket-Key| header field with a base64-encoded value that,
+ # when decoded, is 16 bytes in length.
+ try:
+ key = headers.get("sec-websocket-key")
+ if len(base64.b64decode(key)) != 16:
+ raise TypeError("Sec-WebSocket-Key must be 16 bytes")
+ except TypeError:
+ handler.send_error(400)
+ return None
+
+ # 6. A |Sec-WebSocket-Version| header field, with a value of 13. We also
+ # allow 8 from draft-ietf-hybi-thewebsocketprotocol-10.
+ version = headers.get("sec-websocket-version")
+ KNOWN_VERSIONS = ["8", "13"]
+ if version not in KNOWN_VERSIONS:
+ # "If this version does not match a version understood by the server,
+ # the server MUST abort the WebSocket handshake described in this
+ # section and instead send an appropriate HTTP error code (such as 426
+ # Upgrade Required) and a |Sec-WebSocket-Version| header field
+ # indicating the version(s) the server is capable of understanding."
+ handler.send_response(426)
+ handler.send_header("Sec-WebSocket-Version", ", ".join(KNOWN_VERSIONS))
+ handler.end_headers()
+ return None
+
+ # 7. Optionally, an |Origin| header field.
+
+ # 8. Optionally, a |Sec-WebSocket-Protocol| header field, with a list of
+ # values indicating which protocols the client would like to speak, ordered
+ # by preference.
+ protocols_str = headers.get("sec-websocket-protocol")
+ if protocols_str is None:
+ protocols = []
+ else:
+ protocols = [x.strip().lower() for x in protocols_str.split(",")]
+
+ # 9. Optionally, a |Sec-WebSocket-Extensions| header field...
+
+ # 10. Optionally, other header fields...
+
+ # See RFC 6455 section 4.2.2, item 5 for these steps.
+
+ # 1. A Status-Line with a 101 response code as per RFC 2616.
+ handler.send_response(101)
+ # 2. An |Upgrade| header field with value "websocket" as per RFC 2616.
+ handler.send_header("Upgrade", "websocket")
+ # 3. A |Connection| header field with value "Upgrade".
+ handler.send_header("Connection", "Upgrade")
+ # 4. A |Sec-WebSocket-Accept| header field. The value of this header field
+ # is constructed by concatenating /key/, defined above in step 4 in Section
+ # 4.2.2, with the string "258EAFA5-E914-47DA-95CA-C5AB0DC85B11", taking the
+ # SHA-1 hash of this concatenated value to obtain a 20-byte value and
+ # base64-encoding (see Section 4 of [RFC4648]) this 20-byte hash.
+ accept_key = base64.b64encode(sha1(key + MAGIC_GUID).digest())
+ handler.send_header("Sec-WebSocket-Accept", accept_key)
+ # 5. Optionally, a |Sec-WebSocket-Protocol| header field, with a value
+ # /subprotocol/ as defined in step 4 in Section 4.2.2.
+ if "base64" in protocols:
+ handler.send_header("Sec-WebSocket-Protocol", "base64")
+ # 6. Optionally, a |Sec-WebSocket-Extensions| header field...
+
+ handler.end_headers()
+
+ return protocols
+
+def grab_string(s, pos):
+ """Grab a NUL-terminated string from the given string, starting at the given
+ offset. Return (pos, str) tuple, or (pos, None) on error."""
+ i = pos
+ while i < len(s):
+ if s[i] == '\0':
+ return (i + 1, s[pos:i])
+ i += 1
+ return pos, None
+
+# http://ftp.icm.edu.pl/packages/socks/socks4/SOCKS4.protocol
+# https://en.wikipedia.org/wiki/SOCKS#SOCKS4a
+def parse_socks_request(data):
+ """Parse the 8-byte SOCKS header at the beginning of data. Returns a
+ (dest, port) tuple. Raises ValueError on error."""
+ try:
+ ver, cmd, dport, o1, o2, o3, o4 = struct.unpack(">BBHBBBB", data[:8])
+ except struct.error:
+ raise ValueError("Couldn't unpack SOCKS4 header")
+ if ver != 4:
+ raise ValueError("Wrong SOCKS version (%d)" % ver)
+ if cmd != 1:
+ raise ValueError("Wrong SOCKS command (%d)" % cmd)
+ pos, userid = grab_string(data, 8)
+ if userid is None:
+ raise ValueError("Couldn't read userid")
+ if o1 == 0 and o2 == 0 and o3 == 0 and o4 != 0:
+ pos, dest = grab_string(data, pos)
+ if dest is None:
+ raise ValueError("Couldn't read destination")
+ else:
+ dest = "%d.%d.%d.%d" % (o1, o2, o3, o4)
+ return dest, dport
+
+def handle_socks_request(fd):
+ try:
+ addr = fd.getpeername()
+ data = fd.recv(100)
+ except socket.error, e:
+ log(u"Socket error from SOCKS-pending: %s" % repr(str(e)))
+ return False
+ try:
+ dest_addr = parse_socks_request(data)
+ except ValueError, e:
+ log(u"Error parsing SOCKS request: %s." % str(e))
+ # Error reply.
+ fd.sendall(struct.pack(">BBHBBBB", 0, 91, 0, 0, 0, 0, 0))
+ return False
+ log(u"Got SOCKS request for %s." % safe_format_addr(dest_addr))
+ fd.sendall(struct.pack(">BBHBBBB", 0, 90, dest_addr[1], 127, 0, 0, 1))
+ # Note we throw away the requested address and port.
+ return True
+
+def report_pending():
+ log(u"locals (%d): %s" % (len(locals), [format_peername(x) for x in locals]))
+ log(u"remotes (%d): %s" % (len(remotes), [format_peername(x) for x in remotes]))
+
+def register():
+ if not options.register:
+ return
+
+ # sys.path[0] is initialized to the directory containing the Python script file.
+ script_dir = sys.path[0]
+ if not script_dir:
+ # Maybe the script was read from stdin; in any case don't guess at the directory.
+ return
+ command = [os.path.join(script_dir, "flashproxy-reg-http")]
+ spec = format_addr((None, options.remote_addr[1]))
+ if options.facilitator_addr is None:
+ log(u"Registering \"%s\"." % spec)
+ else:
+ command += [format_addr(options.facilitator_addr)]
+ command += ["-a", spec]
+ try:
+ p = subprocess.Popen(command)
+ except OSError, e:
+ log(u"Failed to register: %s" % str(e))
+
+def proxy_chunk_local_to_remote(local, remote, data = None):
+ if data is None:
+ try:
+ data = local.recv(65536)
+ except socket.error, e: # Can be "Connection reset by peer".
+ log(u"Socket error from local: %s" % repr(str(e)))
+ remote.close()
+ return False
+ if not data:
+ log(u"EOF from local %s." % format_peername(local))
+ local.close()
+ remote.close()
+ return False
+ else:
+ try:
+ remote.send_chunk(data)
+ except socket.error, e:
+ log(u"Socket error writing to remote: %s" % repr(str(e)))
+ local.close()
+ return False
+ return True
+
+def proxy_chunk_remote_to_local(remote, local, data = None):
+ if data is None:
+ try:
+ data = remote.recv(65536)
+ except socket.error, e: # Can be "Connection reset by peer".
+ log(u"Socket error from remote: %s" % repr(str(e)))
+ local.close()
+ return False
+ if not data:
+ log(u"EOF from remote %s." % format_peername(remote))
+ remote.close()
+ local.close()
+ return False
+ else:
+ remote.dec.feed(data)
+ while True:
+ try:
+ data = remote.dec.read()
+ except (WebSocketDecoder.MaskingError, ValueError), e:
+ log(u"WebSocket decode error from remote: %s" % repr(str(e)))
+ remote.close()
+ local.close()
+ return False
+ if data is None:
+ break
+ elif not data:
+ log(u"WebSocket close from remote %s." % format_peername(remote))
+ remote.close()
+ local.close()
+ return False
+ try:
+ local.send_chunk(data)
+ except socket.error, e:
+ log(u"Socket error writing to local: %s" % repr(str(e)))
+ remote.close()
+ return False
+ return True
+
+def receive_unlinked(fd, label):
+ """Receive and buffer data on a socket that has not been linked yet. Returns
+ True iff there was no error and the socket may still be used; otherwise, the
+ socket will be closed before returning."""
+
+ try:
+ data = fd.recv(1024)
+ except socket.error, e:
+ log(u"Socket error from %s: %s" % (label, repr(str(e))))
+ fd.close()
+ return False
+ if not data:
+ log(u"EOF from unlinked %s %s with %d bytes buffered." % (label, format_peername(fd), len(fd.buf)))
+ fd.close()
+ return False
+ else:
+ log(u"Data from unlinked %s %s (%d bytes)." % (label, format_peername(fd), len(data)))
+ fd.buf += data
+ if len(fd.buf) >= UNCONNECTED_BUFFER_LIMIT:
+ log(u"Refusing to buffer more than %d bytes from %s %s." % (UNCONNECTED_BUFFER_LIMIT, label, format_peername(fd)))
+ fd.close()
+ return False
+ return True
+
+def match_proxies():
+ while unlinked_remotes and unlinked_locals:
+ remote = unlinked_remotes.pop(0)
+ local = unlinked_locals.pop(0)
+ remote_addr, remote_port = remote.getpeername()
+ local_addr, local_port = local.getpeername()
+ log(u"Linking %s and %s." % (format_peername(local), format_peername(remote)))
+ remote.partner = local
+ local.partner = remote
+ if remote.buf:
+ if not proxy_chunk_remote_to_local(remote, local, remote.buf):
+ remotes.remove(remote)
+ locals.remove(local)
+ register()
+ return
+ if local.buf:
+ if not proxy_chunk_local_to_remote(local, remote, local.buf):
+ remotes.remove(remote)
+ locals.remove(local)
+ return
+
+class TimeoutSocket(object):
+ def __init__(self, fd):
+ self.fd = fd
+ self.birthday = time.time()
+
+ def age(self):
+ return time.time() - self.birthday
+
+ def __getattr__(self, name):
+ return getattr(self.fd, name)
+
+class RemoteSocket(object):
+ def __init__(self, fd, protocols):
+ self.fd = fd
+ self.buf = ""
+ self.partner = None
+ self.dec = WebSocketBinaryDecoder(protocols, use_mask = True)
+ self.enc = WebSocketBinaryEncoder(protocols, use_mask = False)
+
+ def send_chunk(self, data):
+ self.sendall(self.enc.encode(data))
+
+ def __getattr__(self, name):
+ return getattr(self.fd, name)
+
+class LocalSocket(object):
+ def __init__(self, fd):
+ self.fd = fd
+ self.buf = ""
+ self.partner = None
+
+ def send_chunk(self, data):
+ self.sendall(data)
+
+ def __getattr__(self, name):
+ return getattr(self.fd, name)
+
+def main():
+ while True:
+ rset = [remote_s, local_s] + websocket_pending + socks_pending + locals + remotes
+ rset, _, _ = select.select(rset, [], [], WEBSOCKET_REQUEST_TIMEOUT)
+ for fd in rset:
+ if fd == remote_s:
+ remote_c, addr = fd.accept()
+ log(u"Remote connection from %s." % safe_format_addr(addr))
+ websocket_pending.append(TimeoutSocket(remote_c))
+ elif fd == local_s:
+ local_c, addr = fd.accept()
+ log(u"Local connection from %s." % safe_format_addr(addr))
+ socks_pending.append(local_c)
+ register()
+ elif fd in websocket_pending:
+ log(u"Data from WebSocket-pending %s." % safe_format_addr(addr))
+ protocols = handle_websocket_request(fd)
+ if protocols is not None:
+ wrapped = RemoteSocket(fd, protocols)
+ remotes.append(wrapped)
+ unlinked_remotes.append(wrapped)
+ else:
+ fd.close()
+ websocket_pending.remove(fd)
+ report_pending()
+ elif fd in socks_pending:
+ log(u"SOCKS request from %s." % safe_format_addr(addr))
+ if handle_socks_request(fd):
+ wrapped = LocalSocket(fd)
+ locals.append(wrapped)
+ unlinked_locals.append(wrapped)
+ else:
+ fd.close()
+ socks_pending.remove(fd)
+ report_pending()
+ elif fd in remotes:
+ local = fd.partner
+ if local:
+ if not proxy_chunk_remote_to_local(fd, local):
+ remotes.remove(fd)
+ locals.remove(local)
+ register()
+ else:
+ if not receive_unlinked(fd, "remote"):
+ remotes.remove(fd)
+ unlinked_remotes.remove(fd)
+ register()
+ report_pending()
+ elif fd in locals:
+ remote = fd.partner
+ if remote:
+ if not proxy_chunk_local_to_remote(fd, remote):
+ remotes.remove(remote)
+ locals.remove(fd)
+ else:
+ if not receive_unlinked(fd, "local"):
+ locals.remove(fd)
+ unlinked_locals.remove(fd)
+ report_pending()
+ match_proxies()
+ while websocket_pending:
+ pending = websocket_pending[0]
+ if pending.age() < WEBSOCKET_REQUEST_TIMEOUT:
+ break
+ log(u"Expired remote connection from %s." % format_peername(pending))
+ pending.close()
+ websocket_pending.pop(0)
+ report_pending()
+
+if __name__ == "__main__":
+ opts, args = getopt.gnu_getopt(sys.argv[1:], "f:hl:r", ["daemon", "facilitator=", "help", "log=", "pidfile=", "register", "unsafe-logging"])
+ for o, a in opts:
+ if o == "--daemon":
+ options.daemonize = True
+ elif o == "-f" or o == "--facilitator":
+ options.facilitator_addr = parse_addr_spec(a)
+ elif o == "-h" or o == "--help":
+ usage()
+ sys.exit()
+ elif o == "-l" or o == "--log":
+ options.log_filename = a
+ elif o == "--pidfile":
+ options.pid_filename = a
+ elif o == "-r" or o == "--register":
+ options.register = True
+ elif o == "--unsafe-logging":
+ options.safe_logging = False
+
+ if len(args) == 0:
+ options.local_addr = (DEFAULT_LOCAL_ADDRESS, DEFAULT_LOCAL_PORT)
+ options.remote_addr = (DEFAULT_REMOTE_ADDRESS, DEFAULT_REMOTE_PORT)
+ elif len(args) == 1:
+ options.local_addr = parse_addr_spec(args[0], DEFAULT_LOCAL_ADDRESS, DEFAULT_LOCAL_PORT)
+ options.remote_addr = (DEFAULT_REMOTE_ADDRESS, DEFAULT_REMOTE_PORT)
+ elif len(args) == 2:
+ options.local_addr = parse_addr_spec(args[0], DEFAULT_LOCAL_ADDRESS, DEFAULT_LOCAL_PORT)
+ options.remote_addr = parse_addr_spec(args[1], DEFAULT_REMOTE_ADDRESS, DEFAULT_REMOTE_PORT)
+ else:
+ usage(sys.stderr)
+ sys.exit(1)
+
+ if options.log_filename:
+ options.log_file = open(options.log_filename, "a")
+ # Send error tracebacks to the log.
+ sys.stderr = options.log_file
+ else:
+ options.log_file = sys.stdout
+
+ # Local socket, accepting SOCKS requests from localhost
+ local_s = listen_socket(options.local_addr)
+ # Remote socket, accepting remote WebSocket connections from proxies.
+ remote_s = listen_socket(options.remote_addr)
+
+ # New remote sockets waiting to finish their WebSocket negotiation.
+ websocket_pending = []
+ # Remote connection sockets.
+ remotes = []
+ # Remotes not yet linked with a local. This is a subset of remotes.
+ unlinked_remotes = []
+ # New local sockets waiting to finish their SOCKS negotiation.
+ socks_pending = []
+ # Local Tor sockets, after SOCKS negotiation.
+ locals = []
+ # Locals not yet linked with a remote. This is a subset of remotes.
+ unlinked_locals = []
+
+ register()
+
+ if options.daemonize:
+ log(u"Daemonizing.")
+ pid = os.fork()
+ if pid != 0:
+ if options.pid_filename:
+ f = open(options.pid_filename, "w")
+ print >> f, pid
+ f.close()
+ sys.exit(0)
+ try:
+ main()
+ except Exception:
+ exc = traceback.format_exc()
+ log("".join(exc))
diff --git a/flashproxy-client-test b/flashproxy-client-test
new file mode 100755
index 0000000..2992bd0
--- /dev/null
+++ b/flashproxy-client-test
@@ -0,0 +1,233 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import socket
+import subprocess
+import sys
+import unittest
+
+# Special tricks to load a module whose filename contains a dash and doesn't end
+# in ".py".
+import imp
+dont_write_bytecode = sys.dont_write_bytecode
+sys.dont_write_bytecode = True
+flashproxy = imp.load_source("flashproxy", "flashproxy-client")
+parse_socks_request = flashproxy.parse_socks_request
+WebSocketDecoder = flashproxy.WebSocketDecoder
+WebSocketEncoder = flashproxy.WebSocketEncoder
+sys.dont_write_bytecode = dont_write_bytecode
+del dont_write_bytecode
+del flashproxy
+
+LOCAL_ADDRESS = ("127.0.0.1", 40000)
+REMOTE_ADDRESS = ("127.0.0.1", 40001)
+
+class TestSocks(unittest.TestCase):
+ def test_parse_socks_request_empty(self):
+ self.assertRaises(ValueError, parse_socks_request, "")
+ def test_parse_socks_request_short(self):
+ self.assertRaises(ValueError, parse_socks_request, "\x04\x01\x99\x99\x01\x02\x03\x04")
+ def test_parse_socks_request_ip_userid_missing(self):
+ dest, port = parse_socks_request("\x04\x01\x99\x99\x01\x02\x03\x04\x00")
+ dest, port = parse_socks_request("\x04\x01\x99\x99\x01\x02\x03\x04\x00userid")
+ self.assertEqual((dest, port), ("1.2.3.4", 0x9999))
+ def test_parse_socks_request_ip(self):
+ dest, port = parse_socks_request("\x04\x01\x99\x99\x01\x02\x03\x04userid\x00")
+ self.assertEqual((dest, port), ("1.2.3.4", 0x9999))
+ def test_parse_socks_request_hostname_missing(self):
+ self.assertRaises(ValueError, parse_socks_request, "\x04\x01\x99\x99\x00\x00\x00\x01userid\x00")
+ self.assertRaises(ValueError, parse_socks_request, "\x04\x01\x99\x99\x00\x00\x00\x01userid\x00abc")
+ def test_parse_socks_request_hostname(self):
+ dest, port = parse_socks_request("\x04\x01\x99\x99\x00\x00\x00\x01userid\x00abc\x00")
+
+def read_frames(dec):
+ frames = []
+ while True:
+ frame = dec.read_frame()
+ if frame is None:
+ break
+ frames.append((frame.fin, frame.opcode, frame.payload))
+ return frames
+
+def read_messages(dec):
+ messages = []
+ while True:
+ message = dec.read_message()
+ if message is None:
+ break
+ messages.append((message.opcode, message.payload))
+ return messages
+
+class TestWebSocketDecoder(unittest.TestCase):
+ def test_rfc(self):
+ """Test samples from RFC 6455 section 5.7."""
+ TESTS = [
+ ("\x81\x05\x48\x65\x6c\x6c\x6f", False,
+ [(True, 1, "Hello")],
+ [(1, u"Hello")]),
+ ("\x81\x85\x37\xfa\x21\x3d\x7f\x9f\x4d\x51\x58", True,
+ [(True, 1, "Hello")],
+ [(1, u"Hello")]),
+ ("\x01\x03\x48\x65\x6c\x80\x02\x6c\x6f", False,
+ [(False, 1, "Hel"), (True, 0, "lo")],
+ [(1, u"Hello")]),
+ ("\x89\x05\x48\x65\x6c\x6c\x6f", False,
+ [(True, 9, "Hello")],
+ [(9, u"Hello")]),
+ ("\x8a\x85\x37\xfa\x21\x3d\x7f\x9f\x4d\x51\x58", True,
+ [(True, 10, "Hello")],
+ [(10, u"Hello")]),
+ ("\x82\x7e\x01\x00" + "\x00" * 256, False,
+ [(True, 2, "\x00" * 256)],
+ [(2, "\x00" * 256)]),
+ ("\x82\x7f\x00\x00\x00\x00\x00\x01\x00\x00" + "\x00" * 65536, False,
+ [(True, 2, "\x00" * 65536)],
+ [(2, "\x00" * 65536)]),
+ ("\x82\x7f\x00\x00\x00\x00\x00\x01\x00\x03" + "ABCD" * 16384 + "XYZ", False,
+ [(True, 2, "ABCD" * 16384 + "XYZ")],
+ [(2, "ABCD" * 16384 + "XYZ")]),
+ ]
+ for data, use_mask, expected_frames, expected_messages in TESTS:
+ dec = WebSocketDecoder(use_mask = use_mask)
+ dec.feed(data)
+ actual_frames = read_frames(dec)
+ self.assertEqual(actual_frames, expected_frames)
+
+ dec = WebSocketDecoder(use_mask = use_mask)
+ dec.feed(data)
+ actual_messages = read_messages(dec)
+ self.assertEqual(actual_messages, expected_messages)
+
+ dec = WebSocketDecoder(use_mask = not use_mask)
+ dec.feed(data)
+ self.assertRaises(WebSocketDecoder.MaskingError, dec.read_frame)
+
+ def test_empty_feed(self):
+ """Test that the decoder can handle a zero-byte feed."""
+ dec = WebSocketDecoder()
+ self.assertEqual(dec.read_frame(), None)
+ dec.feed("")
+ self.assertEqual(dec.read_frame(), None)
+ dec.feed("\x81\x05H")
+ self.assertEqual(dec.read_frame(), None)
+ dec.feed("ello")
+ self.assertEqual(read_frames(dec), [(True, 1, u"Hello")])
+
+ def test_empty_frame(self):
+ """Test that a frame may contain a zero-byte payload."""
+ dec = WebSocketDecoder()
+ dec.feed("\x81\x00")
+ self.assertEqual(read_frames(dec), [(True, 1, u"")])
+ dec.feed("\x82\x00")
+ self.assertEqual(read_frames(dec), [(True, 2, "")])
+
+ def test_empty_message(self):
+ """Test that a message may have a zero-byte payload."""
+ dec = WebSocketDecoder()
+ dec.feed("\x01\x00\x00\x00\x80\x00")
+ self.assertEqual(read_messages(dec), [(1, u"")])
+ dec.feed("\x02\x00\x00\x00\x80\x00")
+ self.assertEqual(read_messages(dec), [(2, "")])
+
+ def test_interleaved_control(self):
+ """Test that control messages interleaved with fragmented messages are
+ returned."""
+ dec = WebSocketDecoder()
+ dec.feed("\x89\x04PING\x01\x03Hel\x8a\x04PONG\x80\x02lo\x89\x04PING")
+ self.assertEqual(read_messages(dec), [(9, "PING"), (10, "PONG"), (1, u"Hello"), (9, "PING")])
+
+ def test_fragmented_control(self):
+ """Test that illegal fragmented control messages cause an error."""
+ dec = WebSocketDecoder()
+ dec.feed("\x09\x04PING")
+ self.assertRaises(ValueError, dec.read_message)
+
+ def test_zero_opcode(self):
+ """Test that it is an error for the first frame in a message to have an
+ opcode of 0."""
+ dec = WebSocketDecoder()
+ dec.feed("\x80\x05Hello")
+ self.assertRaises(ValueError, dec.read_message)
+ dec = WebSocketDecoder()
+ dec.feed("\x00\x05Hello")
+ self.assertRaises(ValueError, dec.read_message)
+
+ def test_nonzero_opcode(self):
+ """Test that every frame after the first must have a zero opcode."""
+ dec = WebSocketDecoder()
+ dec.feed("\x01\x01H\x01\x02el\x80\x02lo")
+ self.assertRaises(ValueError, dec.read_message)
+ dec = WebSocketDecoder()
+ dec.feed("\x01\x01H\x00\x02el\x01\x02lo")
+ self.assertRaises(ValueError, dec.read_message)
+
+ def test_utf8(self):
+ """Test that text frames (opcode 1) are decoded from UTF-8."""
+ text = u"Hello World or Καλημέρα κόσμε or こんにちは 世界 or \U0001f639"
+ utf8_text = text.encode("utf-8")
+ dec = WebSocketDecoder()
+ dec.feed("\x81" + chr(len(utf8_text)) + utf8_text)
+ self.assertEqual(read_messages(dec), [(1, text)])
+
+ def test_wrong_utf8(self):
+ """Test that failed UTF-8 decoding causes an error."""
+ TESTS = [
+ "\xc0\x41", # Non-shortest form.
+ "\xc2", # Unfinished sequence.
+ ]
+ for test in TESTS:
+ dec = WebSocketDecoder()
+ dec.feed("\x81" + chr(len(test)) + test)
+ self.assertRaises(ValueError, dec.read_message)
+
+ def test_overly_large_payload(self):
+ """Test that large payloads are rejected."""
+ dec = WebSocketDecoder()
+ dec.feed("\x82\x7f\x00\x00\x00\x00\x01\x00\x00\x00")
+ self.assertRaises(ValueError, dec.read_frame)
+
+class TestWebSocketEncoder(unittest.TestCase):
+ def test_length(self):
+ """Test that payload lengths are encoded using the smallest number of
+ bytes."""
+ TESTS = [(0, 0), (125, 0), (126, 2), (65535, 2), (65536, 8)]
+ for length, encoded_length in TESTS:
+ enc = WebSocketEncoder(use_mask = False)
+ eframe = enc.encode_frame(2, "\x00" * length)
+ self.assertEqual(len(eframe), 1 + 1 + encoded_length + length)
+ enc = WebSocketEncoder(use_mask = True)
+ eframe = enc.encode_frame(2, "\x00" * length)
+ self.assertEqual(len(eframe), 1 + 1 + encoded_length + 4 + length)
+
+ def test_roundtrip(self):
+ TESTS = [
+ (1, u"Hello world"),
+ (1, u"Hello \N{WHITE SMILING FACE}"),
+ ]
+ for opcode, payload in TESTS:
+ for use_mask in (False, True):
+ enc = WebSocketEncoder(use_mask = use_mask)
+ enc_message = enc.encode_message(opcode, payload)
+ dec = WebSocketDecoder(use_mask = use_mask)
+ dec.feed(enc_message)
+ self.assertEqual(read_messages(dec), [(opcode, payload)])
+
+def format_address(addr):
+ return "%s:%d" % addr
+
+class TestConnectionLimit(unittest.TestCase):
+ def setUp(self):
+ self.p = subprocess.Popen(["./flashproxy-client", format_address(LOCAL_ADDRESS), format_address(REMOTE_ADDRESS)])
+
+ def tearDown(self):
+ self.p.terminate()
+
+ def test_remote_limit(self):
+ """Test that the client transport plugin limits the number of remote
+ connections that it will accept."""
+ for i in range(5):
+ s = socket.create_connection(REMOTE_ADDRESS, 2)
+ self.assertRaises(socket.error, socket.create_connection, REMOTE_ADDRESS)
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/flashproxy-client-test.py b/flashproxy-client-test.py
deleted file mode 100755
index 35d49ed..0000000
--- a/flashproxy-client-test.py
+++ /dev/null
@@ -1,224 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-import socket
-import subprocess
-import unittest
-flashproxy = __import__("flashproxy-client")
-parse_socks_request = flashproxy.parse_socks_request
-WebSocketDecoder = flashproxy.WebSocketDecoder
-WebSocketEncoder = flashproxy.WebSocketEncoder
-del flashproxy
-
-LOCAL_ADDRESS = ("127.0.0.1", 40000)
-REMOTE_ADDRESS = ("127.0.0.1", 40001)
-
-class TestSocks(unittest.TestCase):
- def test_parse_socks_request_empty(self):
- self.assertRaises(ValueError, parse_socks_request, "")
- def test_parse_socks_request_short(self):
- self.assertRaises(ValueError, parse_socks_request, "\x04\x01\x99\x99\x01\x02\x03\x04")
- def test_parse_socks_request_ip_userid_missing(self):
- dest, port = parse_socks_request("\x04\x01\x99\x99\x01\x02\x03\x04\x00")
- dest, port = parse_socks_request("\x04\x01\x99\x99\x01\x02\x03\x04\x00userid")
- self.assertEqual((dest, port), ("1.2.3.4", 0x9999))
- def test_parse_socks_request_ip(self):
- dest, port = parse_socks_request("\x04\x01\x99\x99\x01\x02\x03\x04userid\x00")
- self.assertEqual((dest, port), ("1.2.3.4", 0x9999))
- def test_parse_socks_request_hostname_missing(self):
- self.assertRaises(ValueError, parse_socks_request, "\x04\x01\x99\x99\x00\x00\x00\x01userid\x00")
- self.assertRaises(ValueError, parse_socks_request, "\x04\x01\x99\x99\x00\x00\x00\x01userid\x00abc")
- def test_parse_socks_request_hostname(self):
- dest, port = parse_socks_request("\x04\x01\x99\x99\x00\x00\x00\x01userid\x00abc\x00")
-
-def read_frames(dec):
- frames = []
- while True:
- frame = dec.read_frame()
- if frame is None:
- break
- frames.append((frame.fin, frame.opcode, frame.payload))
- return frames
-
-def read_messages(dec):
- messages = []
- while True:
- message = dec.read_message()
- if message is None:
- break
- messages.append((message.opcode, message.payload))
- return messages
-
-class TestWebSocketDecoder(unittest.TestCase):
- def test_rfc(self):
- """Test samples from RFC 6455 section 5.7."""
- TESTS = [
- ("\x81\x05\x48\x65\x6c\x6c\x6f", False,
- [(True, 1, "Hello")],
- [(1, u"Hello")]),
- ("\x81\x85\x37\xfa\x21\x3d\x7f\x9f\x4d\x51\x58", True,
- [(True, 1, "Hello")],
- [(1, u"Hello")]),
- ("\x01\x03\x48\x65\x6c\x80\x02\x6c\x6f", False,
- [(False, 1, "Hel"), (True, 0, "lo")],
- [(1, u"Hello")]),
- ("\x89\x05\x48\x65\x6c\x6c\x6f", False,
- [(True, 9, "Hello")],
- [(9, u"Hello")]),
- ("\x8a\x85\x37\xfa\x21\x3d\x7f\x9f\x4d\x51\x58", True,
- [(True, 10, "Hello")],
- [(10, u"Hello")]),
- ("\x82\x7e\x01\x00" + "\x00" * 256, False,
- [(True, 2, "\x00" * 256)],
- [(2, "\x00" * 256)]),
- ("\x82\x7f\x00\x00\x00\x00\x00\x01\x00\x00" + "\x00" * 65536, False,
- [(True, 2, "\x00" * 65536)],
- [(2, "\x00" * 65536)]),
- ("\x82\x7f\x00\x00\x00\x00\x00\x01\x00\x03" + "ABCD" * 16384 + "XYZ", False,
- [(True, 2, "ABCD" * 16384 + "XYZ")],
- [(2, "ABCD" * 16384 + "XYZ")]),
- ]
- for data, use_mask, expected_frames, expected_messages in TESTS:
- dec = WebSocketDecoder(use_mask = use_mask)
- dec.feed(data)
- actual_frames = read_frames(dec)
- self.assertEqual(actual_frames, expected_frames)
-
- dec = WebSocketDecoder(use_mask = use_mask)
- dec.feed(data)
- actual_messages = read_messages(dec)
- self.assertEqual(actual_messages, expected_messages)
-
- dec = WebSocketDecoder(use_mask = not use_mask)
- dec.feed(data)
- self.assertRaises(WebSocketDecoder.MaskingError, dec.read_frame)
-
- def test_empty_feed(self):
- """Test that the decoder can handle a zero-byte feed."""
- dec = WebSocketDecoder()
- self.assertEqual(dec.read_frame(), None)
- dec.feed("")
- self.assertEqual(dec.read_frame(), None)
- dec.feed("\x81\x05H")
- self.assertEqual(dec.read_frame(), None)
- dec.feed("ello")
- self.assertEqual(read_frames(dec), [(True, 1, u"Hello")])
-
- def test_empty_frame(self):
- """Test that a frame may contain a zero-byte payload."""
- dec = WebSocketDecoder()
- dec.feed("\x81\x00")
- self.assertEqual(read_frames(dec), [(True, 1, u"")])
- dec.feed("\x82\x00")
- self.assertEqual(read_frames(dec), [(True, 2, "")])
-
- def test_empty_message(self):
- """Test that a message may have a zero-byte payload."""
- dec = WebSocketDecoder()
- dec.feed("\x01\x00\x00\x00\x80\x00")
- self.assertEqual(read_messages(dec), [(1, u"")])
- dec.feed("\x02\x00\x00\x00\x80\x00")
- self.assertEqual(read_messages(dec), [(2, "")])
-
- def test_interleaved_control(self):
- """Test that control messages interleaved with fragmented messages are
- returned."""
- dec = WebSocketDecoder()
- dec.feed("\x89\x04PING\x01\x03Hel\x8a\x04PONG\x80\x02lo\x89\x04PING")
- self.assertEqual(read_messages(dec), [(9, "PING"), (10, "PONG"), (1, u"Hello"), (9, "PING")])
-
- def test_fragmented_control(self):
- """Test that illegal fragmented control messages cause an error."""
- dec = WebSocketDecoder()
- dec.feed("\x09\x04PING")
- self.assertRaises(ValueError, dec.read_message)
-
- def test_zero_opcode(self):
- """Test that it is an error for the first frame in a message to have an
- opcode of 0."""
- dec = WebSocketDecoder()
- dec.feed("\x80\x05Hello")
- self.assertRaises(ValueError, dec.read_message)
- dec = WebSocketDecoder()
- dec.feed("\x00\x05Hello")
- self.assertRaises(ValueError, dec.read_message)
-
- def test_nonzero_opcode(self):
- """Test that every frame after the first must have a zero opcode."""
- dec = WebSocketDecoder()
- dec.feed("\x01\x01H\x01\x02el\x80\x02lo")
- self.assertRaises(ValueError, dec.read_message)
- dec = WebSocketDecoder()
- dec.feed("\x01\x01H\x00\x02el\x01\x02lo")
- self.assertRaises(ValueError, dec.read_message)
-
- def test_utf8(self):
- """Test that text frames (opcode 1) are decoded from UTF-8."""
- text = u"Hello World or Καλημέρα κόσμε or こんにちは 世界 or \U0001f639"
- utf8_text = text.encode("utf-8")
- dec = WebSocketDecoder()
- dec.feed("\x81" + chr(len(utf8_text)) + utf8_text)
- self.assertEqual(read_messages(dec), [(1, text)])
-
- def test_wrong_utf8(self):
- """Test that failed UTF-8 decoding causes an error."""
- TESTS = [
- "\xc0\x41", # Non-shortest form.
- "\xc2", # Unfinished sequence.
- ]
- for test in TESTS:
- dec = WebSocketDecoder()
- dec.feed("\x81" + chr(len(test)) + test)
- self.assertRaises(ValueError, dec.read_message)
-
- def test_overly_large_payload(self):
- """Test that large payloads are rejected."""
- dec = WebSocketDecoder()
- dec.feed("\x82\x7f\x00\x00\x00\x00\x01\x00\x00\x00")
- self.assertRaises(ValueError, dec.read_frame)
-
-class TestWebSocketEncoder(unittest.TestCase):
- def test_length(self):
- """Test that payload lengths are encoded using the smallest number of
- bytes."""
- TESTS = [(0, 0), (125, 0), (126, 2), (65535, 2), (65536, 8)]
- for length, encoded_length in TESTS:
- enc = WebSocketEncoder(use_mask = False)
- eframe = enc.encode_frame(2, "\x00" * length)
- self.assertEqual(len(eframe), 1 + 1 + encoded_length + length)
- enc = WebSocketEncoder(use_mask = True)
- eframe = enc.encode_frame(2, "\x00" * length)
- self.assertEqual(len(eframe), 1 + 1 + encoded_length + 4 + length)
-
- def test_roundtrip(self):
- TESTS = [
- (1, u"Hello world"),
- (1, u"Hello \N{WHITE SMILING FACE}"),
- ]
- for opcode, payload in TESTS:
- for use_mask in (False, True):
- enc = WebSocketEncoder(use_mask = use_mask)
- enc_message = enc.encode_message(opcode, payload)
- dec = WebSocketDecoder(use_mask = use_mask)
- dec.feed(enc_message)
- self.assertEqual(read_messages(dec), [(opcode, payload)])
-
-def format_address(addr):
- return "%s:%d" % addr
-
-class TestConnectionLimit(unittest.TestCase):
- def setUp(self):
- self.p = subprocess.Popen(["./flashproxy-client.py", format_address(LOCAL_ADDRESS), format_address(REMOTE_ADDRESS)])
-
- def tearDown(self):
- self.p.terminate()
-
- def test_remote_limit(self):
- """Test that the client transport plugin limits the number of remote
- connections that it will accept."""
- for i in range(5):
- s = socket.create_connection(REMOTE_ADDRESS, 2)
- self.assertRaises(socket.error, socket.create_connection, REMOTE_ADDRESS)
-
-if __name__ == "__main__":
- unittest.main()
diff --git a/flashproxy-client.py b/flashproxy-client.py
deleted file mode 100755
index 8afd0c0..0000000
--- a/flashproxy-client.py
+++ /dev/null
@@ -1,932 +0,0 @@
-#!/usr/bin/env python
-
-import array
-import base64
-import cStringIO
-import getopt
-import httplib
-import os
-import re
-import select
-import socket
-import struct
-import subprocess
-import sys
-import time
-import traceback
-import urllib
-import xml.sax.saxutils
-import BaseHTTPServer
-
-try:
- from hashlib import sha1
-except ImportError:
- # Python 2.4 uses this name.
- from sha import sha as sha1
-
-try:
- import numpy
-except ImportError:
- numpy = None
-
-DEFAULT_REMOTE_ADDRESS = "0.0.0.0"
-DEFAULT_REMOTE_PORT = 9000
-DEFAULT_LOCAL_ADDRESS = "127.0.0.1"
-DEFAULT_LOCAL_PORT = 9001
-
-LOG_DATE_FORMAT = "%Y-%m-%d %H:%M:%S"
-
-class options(object):
- local_addr = None
- remote_addr = None
- facilitator_addr = None
-
- log_filename = None
- log_file = sys.stdout
- daemonize = False
- register = False
- pid_filename = None
- safe_logging = True
-
-# We accept up to this many bytes from a socket not yet matched with a partner
-# before disconnecting it.
-UNCONNECTED_BUFFER_LIMIT = 10240
-
-def usage(f = sys.stdout):
- print >> f, """\
-Usage: %(progname)s --register [LOCAL][:PORT] [REMOTE][:PORT]
-Wait for connections on a local and a remote port. When any pair of connections
-exists, data is ferried between them until one side is closed. By default
-LOCAL is "%(local)s" and REMOTE is "%(remote)s".
-
-The local connection acts as a SOCKS4a proxy, but the host and port in the SOCKS
-request are ignored and the local connection is always linked to a remote
-connection.
-
-If the --register option is used, then your IP address will be sent to the
-facilitator so that proxies can connect to you. You need to register in some way
-in order to get any service. The --facilitator option allows controlling which
-facilitator is used; if omitted, it uses a public default.
- --daemon daemonize (Unix only).
- -f, --facilitator=HOST[:PORT] advertise willingness to receive connections to
- HOST:PORT.
- -h, --help show this help.
- -l, --log FILENAME write log to FILENAME (default stdout).
- --pidfile FILENAME write PID to FILENAME after daemonizing.
- -r, --register register with the facilitator.
- --unsafe-logging don't scrub IP addresses from logs.\
-""" % {
- "progname": sys.argv[0],
- "local": format_addr((DEFAULT_LOCAL_ADDRESS, DEFAULT_LOCAL_PORT)),
- "remote": format_addr((DEFAULT_REMOTE_ADDRESS, DEFAULT_REMOTE_PORT)),
-}
-
-def safe_str(s):
- """Return s if options.safe_logging is true, and "[scrubbed]" otherwise."""
- if options.safe_logging:
- return "[scrubbed]"
- else:
- return s
-
-def log(msg):
- print >> options.log_file, (u"%s %s" % (time.strftime(LOG_DATE_FORMAT), msg)).encode("UTF-8")
- options.log_file.flush()
-
-def parse_addr_spec(spec, defhost = None, defport = None):
- host = None
- port = None
- m = None
- # IPv6 syntax.
- if not m:
- m = re.match(ur'^\[(.+)\]:(\d+)$', spec)
- if m:
- host, port = m.groups()
- af = socket.AF_INET6
- if not m:
- m = re.match(ur'^\[(.+)\]:?$', spec)
- if m:
- host, = m.groups()
- af = socket.AF_INET6
- # IPv4 syntax.
- if not m:
- m = re.match(ur'^(.+):(\d+)$', spec)
- if m:
- host, port = m.groups()
- af = socket.AF_INET
- if not m:
- m = re.match(ur'^:?(\d+)$', spec)
- if m:
- port, = m.groups()
- af = 0
- if not m:
- host = spec
- af = 0
- host = host or defhost
- port = port or defport
- if not (host and port):
- raise ValueError("Bad address specification \"%s\"" % spec)
- return host, int(port)
-
-def format_addr(addr):
- host, port = addr
- if not host:
- return u":%d" % port
- # Numeric IPv6 address?
- try:
- addrs = socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM, socket.IPPROTO_TCP, socket.AI_NUMERICHOST)
- af = addrs[0][0]
- except socket.gaierror, e:
- af = 0
- if af == socket.AF_INET6:
- return u"[%s]:%d" % (host, port)
- else:
- return u"%s:%d" % (host, port)
-
-def safe_format_addr(addr):
- return safe_str(format_addr(addr))
- host, port = addr
- if not host:
- return u":%d" % port
- # Numeric IPv6 address?
- try:
- addrs = socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM, socket.IPPROTO_TCP, socket.AI_NUMERICHOST)
- af = addrs[0][0]
- except socket.gaierror, e:
- af = 0
- if af == socket.AF_INET6:
- return u"[%s]:%d" % (host, port)
- else:
- return u"%s:%d" % (host, port)
-
-
-
-def apply_mask_numpy(payload, mask_key):
- if len(payload) == 0:
- return ""
- payload_a = numpy.frombuffer(payload, dtype="|u4", count=len(payload)//4)
- m, = numpy.frombuffer(mask_key, dtype="|u4", count=1)
- result = numpy.bitwise_xor(payload_a, m).tostring()
- i = len(payload) // 4 * 4
- if i < len(payload):
- remainder = []
- while i < len(payload):
- remainder.append(chr(ord(payload[i]) ^ ord(mask_key[i % 4])))
- i += 1
- result = result + "".join(remainder)
- return result
-
-def apply_mask_py(payload, mask_key):
- result = array.array("B", payload)
- m = array.array("B", mask_key)
- i = 0
- while i < len(result) - 7:
- result[i] ^= m[0]
- result[i+1] ^= m[1]
- result[i+2] ^= m[2]
- result[i+3] ^= m[3]
- result[i+4] ^= m[0]
- result[i+5] ^= m[1]
- result[i+6] ^= m[2]
- result[i+7] ^= m[3]
- i += 8
- while i < len(result):
- result[i] ^= m[i%4]
- i += 1
- return result.tostring()
-
-if numpy is not None:
- apply_mask = apply_mask_numpy
-else:
- apply_mask = apply_mask_py
-
-class WebSocketFrame(object):
- def __init__(self):
- self.fin = False
- self.opcode = None
- self.payload = None
-
- def is_control(self):
- return (self.opcode & 0x08) != 0
-
-class WebSocketMessage(object):
- def __init__(self):
- self.opcode = None
- self.payload = None
-
- def is_control(self):
- return (self.opcode & 0x08) != 0
-
-class WebSocketDecoder(object):
- """RFC 6455 section 5 is about the WebSocket framing format."""
- # Raise an exception rather than buffer anything larger than this.
- MAX_MESSAGE_LENGTH = 1024 * 1024
-
- class MaskingError(ValueError):
- pass
-
- def __init__(self, use_mask = False):
- """use_mask should be True for server-to-client sockets, and False for
- client-to-server sockets."""
- self.use_mask = use_mask
-
- # Per-frame state.
- self.buf = ""
-
- # Per-message state.
- self.message_buf = ""
- self.message_opcode = None
-
- def feed(self, data):
- self.buf += data
-
- def read_frame(self):
- """Read a frame from the internal buffer, if one is available. Returns a
- WebSocketFrame object, or None if there are no complete frames to
- read."""
- # RFC 6255 section 5.2.
- if len(self.buf) < 2:
- return None
- offset = 0
- b0, b1 = struct.unpack_from(">BB", self.buf, offset)
- offset += 2
- fin = (b0 & 0x80) != 0
- opcode = b0 & 0x0f
- frame_masked = (b1 & 0x80) != 0
- payload_len = b1 & 0x7f
-
- if payload_len == 126:
- if len(self.buf) < offset + 2:
- return None
- payload_len, = struct.unpack_from(">H", self.buf, offset)
- offset += 2
- elif payload_len == 127:
- if len(self.buf) < offset + 8:
- return None
- payload_len, = struct.unpack_from(">Q", self.buf, offset)
- offset += 8
-
- if frame_masked:
- if not self.use_mask:
- # "A client MUST close a connection if it detects a masked
- # frame."
- raise self.MaskingError("Got masked payload from server")
- if len(self.buf) < offset + 4:
- return None
- mask_key = self.buf[offset:offset+4]
- offset += 4
- else:
- if self.use_mask:
- # "The server MUST close the connection upon receiving a frame
- # that is not masked."
- raise self.MaskingError("Got unmasked payload from client")
- mask_key = None
-
- if payload_len > self.MAX_MESSAGE_LENGTH:
- raise ValueError("Refusing to buffer payload of %d bytes" % payload_len)
-
- if len(self.buf) < offset + payload_len:
- return None
- if mask_key:
- payload = apply_mask(self.buf[offset:offset+payload_len], mask_key)
- else:
- payload = self.buf[offset:offset+payload_len]
- self.buf = self.buf[offset+payload_len:]
-
- frame = WebSocketFrame()
- frame.fin = fin
- frame.opcode = opcode
- frame.payload = payload
-
- return frame
-
- def read_message(self):
- """Read a complete message. If the opcode is 1, the payload is decoded
- from a UTF-8 binary string to a unicode string. If a control frame is
- read while another fragmented message is in progress, the control frame
- is returned as a new message immediately. Returns None if there is no
- complete frame to be read."""
- # RFC 6455 section 5.4 is about fragmentation.
- while True:
- frame = self.read_frame()
- if frame is None:
- return None
- # "Control frames (see Section 5.5) MAY be injected in the middle of
- # a fragmented message. Control frames themselves MUST NOT be
- # fragmented."
- if frame.is_control():
- if not frame.fin:
- raise ValueError("Control frame (opcode %d) has FIN bit clear" % frame.opcode)
- message = WebSocketMessage()
- message.opcode = frame.opcode
- message.payload = frame.payload
- return message
-
- if self.message_opcode is None:
- if frame.opcode == 0:
- raise ValueError("First frame has opcode 0")
- self.message_opcode = frame.opcode
- else:
- if frame.opcode != 0:
- raise ValueError("Non-first frame has nonzero opcode %d" % frame.opcode)
- self.message_buf += frame.payload
-
- if frame.fin:
- break
- message = WebSocketMessage()
- message.opcode = self.message_opcode
- message.payload = self.message_buf
- self.postprocess_message(message)
- self.message_opcode = None
- self.message_buf = ""
-
- return message
-
- def postprocess_message(self, message):
- if message.opcode == 1:
- message.payload = message.payload.decode("utf-8")
- return message
-
-class WebSocketEncoder(object):
- def __init__(self, use_mask = False):
- self.use_mask = use_mask
-
- def encode_frame(self, opcode, payload):
- if opcode >= 16:
- raise ValueError("Opcode of %d is >= 16" % opcode)
- length = len(payload)
-
- if self.use_mask:
- mask_key = os.urandom(4)
- payload = apply_mask(payload, mask_key)
- mask_bit = 0x80
- else:
- mask_key = ""
- mask_bit = 0x00
-
- if length < 126:
- len_b, len_ext = length, ""
- elif length < 0x10000:
- len_b, len_ext = 126, struct.pack(">H", length)
- elif length < 0x10000000000000000:
- len_b, len_ext = 127, struct.pack(">Q", length)
- else:
- raise ValueError("payload length of %d is too long" % length)
-
- return chr(0x80 | opcode) + chr(mask_bit | len_b) + len_ext + mask_key + payload
-
- def encode_message(self, opcode, payload):
- if opcode == 1:
- payload = payload.encode("utf-8")
- return self.encode_frame(opcode, payload)
-
-# WebSocket implementations generally support text (opcode 1) messages, which
-# are UTF-8-encoded text. Not all support binary (opcode 2) messages. During the
-# WebSocket handshake, we use the "base64" value of the Sec-WebSocket-Protocol
-# header field to indicate that text frames should encoded UTF-8-encoded
-# base64-encoded binary data. Binary messages are always interpreted verbatim,
-# but text messages are rejected if "base64" was not negotiated.
-#
-# The idea here is that browsers that know they don't support binary messages
-# can negotiate "base64" with both endpoints and still reliably transport binary
-# data. Those that know they can support binary messages can just use binary
-# messages in the straightforward way.
-
-class WebSocketBinaryDecoder(object):
- def __init__(self, protocols, use_mask = False):
- self.dec = WebSocketDecoder(use_mask)
- self.base64 = "base64" in protocols
-
- def feed(self, data):
- self.dec.feed(data)
-
- def read(self):
- """Returns None when there are currently no data to be read. Returns ""
- when a close message is received."""
- while True:
- message = self.dec.read_message()
- if message is None:
- return None
- elif message.opcode == 1:
- if not self.base64:
- raise ValueError("Received text message on decoder incapable of base64")
- payload = base64.b64decode(message.payload)
- if payload:
- return payload
- elif message.opcode == 2:
- if message.payload:
- return message.payload
- elif message.opcode == 8:
- return ""
- # Ignore all other opcodes.
- return None
-
-class WebSocketBinaryEncoder(object):
- def __init__(self, protocols, use_mask = False):
- self.enc = WebSocketEncoder(use_mask)
- self.base64 = "base64" in protocols
-
- def encode(self, data):
- if self.base64:
- return self.enc.encode_message(1, base64.b64encode(data))
- else:
- return self.enc.encode_message(2, data)
-
-
-def listen_socket(addr):
- """Return a nonblocking socket listening on the given address."""
- addrinfo = socket.getaddrinfo(addr[0], addr[1], 0, socket.SOCK_STREAM, socket.IPPROTO_TCP)[0]
- s = socket.socket(addrinfo[0], addrinfo[1], addrinfo[2])
- s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
- s.bind(addr)
- s.listen(10)
- s.setblocking(0)
- return s
-
-def format_peername(s):
- try:
- return safe_format_addr(s.getpeername())
- except socket.error, e:
- return "<unconnected>"
-
-# How long to wait for a WebSocket request on the remote socket. It is limited
-# to avoid Slowloris-like attacks.
-WEBSOCKET_REQUEST_TIMEOUT = 2.0
-
-class WebSocketRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
- def __init__(self, request_text, fd):
- self.rfile = cStringIO.StringIO(request_text)
- self.wfile = fd.makefile()
- self.error = False
- self.raw_requestline = self.rfile.readline()
- self.parse_request()
-
- def log_message(self, *args):
- pass
-
- def send_error(self, code, message = None):
- BaseHTTPServer.BaseHTTPRequestHandler.send_error(self, code, message)
- self.error = True
-
-MAGIC_GUID = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
-
-def handle_websocket_request(fd):
- request_text = fd.recv(10 * 1024)
- handler = WebSocketRequestHandler(request_text, fd)
- if handler.error or not hasattr(handler, "path"):
- return None
- method = handler.command
- path = handler.path
- headers = handler.headers
-
- # See RFC 6455 section 4.2.1 for this sequence of checks.
- #
- # 1. An HTTP/1.1 or higher GET request, including a "Request-URI"...
- if method != "GET":
- handler.send_error(405)
- return None
- if path != "/":
- handler.send_error(404)
- return None
-
- # 2. A |Host| header field containing the server's authority.
- # We deliberately skip this test.
-
- # 3. An |Upgrade| header field containing the value "websocket", treated as
- # an ASCII case-insensitive value.
- if "websocket" not in [x.strip().lower() for x in headers.get("upgrade").split(",")]:
- handler.send_error(400)
- return None
-
- # 4. A |Connection| header field that includes the token "Upgrade", treated
- # as an ASCII case-insensitive value.
- if "upgrade" not in [x.strip().lower() for x in headers.get("connection").split(",")]:
- handler.send_error(400)
- return None
-
- # 5. A |Sec-WebSocket-Key| header field with a base64-encoded value that,
- # when decoded, is 16 bytes in length.
- try:
- key = headers.get("sec-websocket-key")
- if len(base64.b64decode(key)) != 16:
- raise TypeError("Sec-WebSocket-Key must be 16 bytes")
- except TypeError:
- handler.send_error(400)
- return None
-
- # 6. A |Sec-WebSocket-Version| header field, with a value of 13. We also
- # allow 8 from draft-ietf-hybi-thewebsocketprotocol-10.
- version = headers.get("sec-websocket-version")
- KNOWN_VERSIONS = ["8", "13"]
- if version not in KNOWN_VERSIONS:
- # "If this version does not match a version understood by the server,
- # the server MUST abort the WebSocket handshake described in this
- # section and instead send an appropriate HTTP error code (such as 426
- # Upgrade Required) and a |Sec-WebSocket-Version| header field
- # indicating the version(s) the server is capable of understanding."
- handler.send_response(426)
- handler.send_header("Sec-WebSocket-Version", ", ".join(KNOWN_VERSIONS))
- handler.end_headers()
- return None
-
- # 7. Optionally, an |Origin| header field.
-
- # 8. Optionally, a |Sec-WebSocket-Protocol| header field, with a list of
- # values indicating which protocols the client would like to speak, ordered
- # by preference.
- protocols_str = headers.get("sec-websocket-protocol")
- if protocols_str is None:
- protocols = []
- else:
- protocols = [x.strip().lower() for x in protocols_str.split(",")]
-
- # 9. Optionally, a |Sec-WebSocket-Extensions| header field...
-
- # 10. Optionally, other header fields...
-
- # See RFC 6455 section 4.2.2, item 5 for these steps.
-
- # 1. A Status-Line with a 101 response code as per RFC 2616.
- handler.send_response(101)
- # 2. An |Upgrade| header field with value "websocket" as per RFC 2616.
- handler.send_header("Upgrade", "websocket")
- # 3. A |Connection| header field with value "Upgrade".
- handler.send_header("Connection", "Upgrade")
- # 4. A |Sec-WebSocket-Accept| header field. The value of this header field
- # is constructed by concatenating /key/, defined above in step 4 in Section
- # 4.2.2, with the string "258EAFA5-E914-47DA-95CA-C5AB0DC85B11", taking the
- # SHA-1 hash of this concatenated value to obtain a 20-byte value and
- # base64-encoding (see Section 4 of [RFC4648]) this 20-byte hash.
- accept_key = base64.b64encode(sha1(key + MAGIC_GUID).digest())
- handler.send_header("Sec-WebSocket-Accept", accept_key)
- # 5. Optionally, a |Sec-WebSocket-Protocol| header field, with a value
- # /subprotocol/ as defined in step 4 in Section 4.2.2.
- if "base64" in protocols:
- handler.send_header("Sec-WebSocket-Protocol", "base64")
- # 6. Optionally, a |Sec-WebSocket-Extensions| header field...
-
- handler.end_headers()
-
- return protocols
-
-def grab_string(s, pos):
- """Grab a NUL-terminated string from the given string, starting at the given
- offset. Return (pos, str) tuple, or (pos, None) on error."""
- i = pos
- while i < len(s):
- if s[i] == '\0':
- return (i + 1, s[pos:i])
- i += 1
- return pos, None
-
-# http://ftp.icm.edu.pl/packages/socks/socks4/SOCKS4.protocol
-# https://en.wikipedia.org/wiki/SOCKS#SOCKS4a
-def parse_socks_request(data):
- """Parse the 8-byte SOCKS header at the beginning of data. Returns a
- (dest, port) tuple. Raises ValueError on error."""
- try:
- ver, cmd, dport, o1, o2, o3, o4 = struct.unpack(">BBHBBBB", data[:8])
- except struct.error:
- raise ValueError("Couldn't unpack SOCKS4 header")
- if ver != 4:
- raise ValueError("Wrong SOCKS version (%d)" % ver)
- if cmd != 1:
- raise ValueError("Wrong SOCKS command (%d)" % cmd)
- pos, userid = grab_string(data, 8)
- if userid is None:
- raise ValueError("Couldn't read userid")
- if o1 == 0 and o2 == 0 and o3 == 0 and o4 != 0:
- pos, dest = grab_string(data, pos)
- if dest is None:
- raise ValueError("Couldn't read destination")
- else:
- dest = "%d.%d.%d.%d" % (o1, o2, o3, o4)
- return dest, dport
-
-def handle_socks_request(fd):
- try:
- addr = fd.getpeername()
- data = fd.recv(100)
- except socket.error, e:
- log(u"Socket error from SOCKS-pending: %s" % repr(str(e)))
- return False
- try:
- dest_addr = parse_socks_request(data)
- except ValueError, e:
- log(u"Error parsing SOCKS request: %s." % str(e))
- # Error reply.
- fd.sendall(struct.pack(">BBHBBBB", 0, 91, 0, 0, 0, 0, 0))
- return False
- log(u"Got SOCKS request for %s." % safe_format_addr(dest_addr))
- fd.sendall(struct.pack(">BBHBBBB", 0, 90, dest_addr[1], 127, 0, 0, 1))
- # Note we throw away the requested address and port.
- return True
-
-def report_pending():
- log(u"locals (%d): %s" % (len(locals), [format_peername(x) for x in locals]))
- log(u"remotes (%d): %s" % (len(remotes), [format_peername(x) for x in remotes]))
-
-def register():
- if not options.register:
- return
-
- # sys.path[0] is initialized to the directory containing the Python script file.
- script_dir = sys.path[0]
- if not script_dir:
- # Maybe the script was read from stdin; in any case don't guess at the directory.
- return
- command = [os.path.join(script_dir, "flashproxy-reg-http.py")]
- spec = format_addr((None, options.remote_addr[1]))
- if options.facilitator_addr is None:
- log(u"Registering \"%s\"." % spec)
- else:
- command += [format_addr(options.facilitator_addr)]
- command += ["-a", spec]
- try:
- p = subprocess.Popen(command)
- except OSError, e:
- log(u"Failed to register: %s" % str(e))
-
-def proxy_chunk_local_to_remote(local, remote, data = None):
- if data is None:
- try:
- data = local.recv(65536)
- except socket.error, e: # Can be "Connection reset by peer".
- log(u"Socket error from local: %s" % repr(str(e)))
- remote.close()
- return False
- if not data:
- log(u"EOF from local %s." % format_peername(local))
- local.close()
- remote.close()
- return False
- else:
- try:
- remote.send_chunk(data)
- except socket.error, e:
- log(u"Socket error writing to remote: %s" % repr(str(e)))
- local.close()
- return False
- return True
-
-def proxy_chunk_remote_to_local(remote, local, data = None):
- if data is None:
- try:
- data = remote.recv(65536)
- except socket.error, e: # Can be "Connection reset by peer".
- log(u"Socket error from remote: %s" % repr(str(e)))
- local.close()
- return False
- if not data:
- log(u"EOF from remote %s." % format_peername(remote))
- remote.close()
- local.close()
- return False
- else:
- remote.dec.feed(data)
- while True:
- try:
- data = remote.dec.read()
- except (WebSocketDecoder.MaskingError, ValueError), e:
- log(u"WebSocket decode error from remote: %s" % repr(str(e)))
- remote.close()
- local.close()
- return False
- if data is None:
- break
- elif not data:
- log(u"WebSocket close from remote %s." % format_peername(remote))
- remote.close()
- local.close()
- return False
- try:
- local.send_chunk(data)
- except socket.error, e:
- log(u"Socket error writing to local: %s" % repr(str(e)))
- remote.close()
- return False
- return True
-
-def receive_unlinked(fd, label):
- """Receive and buffer data on a socket that has not been linked yet. Returns
- True iff there was no error and the socket may still be used; otherwise, the
- socket will be closed before returning."""
-
- try:
- data = fd.recv(1024)
- except socket.error, e:
- log(u"Socket error from %s: %s" % (label, repr(str(e))))
- fd.close()
- return False
- if not data:
- log(u"EOF from unlinked %s %s with %d bytes buffered." % (label, format_peername(fd), len(fd.buf)))
- fd.close()
- return False
- else:
- log(u"Data from unlinked %s %s (%d bytes)." % (label, format_peername(fd), len(data)))
- fd.buf += data
- if len(fd.buf) >= UNCONNECTED_BUFFER_LIMIT:
- log(u"Refusing to buffer more than %d bytes from %s %s." % (UNCONNECTED_BUFFER_LIMIT, label, format_peername(fd)))
- fd.close()
- return False
- return True
-
-def match_proxies():
- while unlinked_remotes and unlinked_locals:
- remote = unlinked_remotes.pop(0)
- local = unlinked_locals.pop(0)
- remote_addr, remote_port = remote.getpeername()
- local_addr, local_port = local.getpeername()
- log(u"Linking %s and %s." % (format_peername(local), format_peername(remote)))
- remote.partner = local
- local.partner = remote
- if remote.buf:
- if not proxy_chunk_remote_to_local(remote, local, remote.buf):
- remotes.remove(remote)
- locals.remove(local)
- register()
- return
- if local.buf:
- if not proxy_chunk_local_to_remote(local, remote, local.buf):
- remotes.remove(remote)
- locals.remove(local)
- return
-
-class TimeoutSocket(object):
- def __init__(self, fd):
- self.fd = fd
- self.birthday = time.time()
-
- def age(self):
- return time.time() - self.birthday
-
- def __getattr__(self, name):
- return getattr(self.fd, name)
-
-class RemoteSocket(object):
- def __init__(self, fd, protocols):
- self.fd = fd
- self.buf = ""
- self.partner = None
- self.dec = WebSocketBinaryDecoder(protocols, use_mask = True)
- self.enc = WebSocketBinaryEncoder(protocols, use_mask = False)
-
- def send_chunk(self, data):
- self.sendall(self.enc.encode(data))
-
- def __getattr__(self, name):
- return getattr(self.fd, name)
-
-class LocalSocket(object):
- def __init__(self, fd):
- self.fd = fd
- self.buf = ""
- self.partner = None
-
- def send_chunk(self, data):
- self.sendall(data)
-
- def __getattr__(self, name):
- return getattr(self.fd, name)
-
-def main():
- while True:
- rset = [remote_s, local_s] + websocket_pending + socks_pending + locals + remotes
- rset, _, _ = select.select(rset, [], [], WEBSOCKET_REQUEST_TIMEOUT)
- for fd in rset:
- if fd == remote_s:
- remote_c, addr = fd.accept()
- log(u"Remote connection from %s." % safe_format_addr(addr))
- websocket_pending.append(TimeoutSocket(remote_c))
- elif fd == local_s:
- local_c, addr = fd.accept()
- log(u"Local connection from %s." % safe_format_addr(addr))
- socks_pending.append(local_c)
- register()
- elif fd in websocket_pending:
- log(u"Data from WebSocket-pending %s." % safe_format_addr(addr))
- protocols = handle_websocket_request(fd)
- if protocols is not None:
- wrapped = RemoteSocket(fd, protocols)
- remotes.append(wrapped)
- unlinked_remotes.append(wrapped)
- else:
- fd.close()
- websocket_pending.remove(fd)
- report_pending()
- elif fd in socks_pending:
- log(u"SOCKS request from %s." % safe_format_addr(addr))
- if handle_socks_request(fd):
- wrapped = LocalSocket(fd)
- locals.append(wrapped)
- unlinked_locals.append(wrapped)
- else:
- fd.close()
- socks_pending.remove(fd)
- report_pending()
- elif fd in remotes:
- local = fd.partner
- if local:
- if not proxy_chunk_remote_to_local(fd, local):
- remotes.remove(fd)
- locals.remove(local)
- register()
- else:
- if not receive_unlinked(fd, "remote"):
- remotes.remove(fd)
- unlinked_remotes.remove(fd)
- register()
- report_pending()
- elif fd in locals:
- remote = fd.partner
- if remote:
- if not proxy_chunk_local_to_remote(fd, remote):
- remotes.remove(remote)
- locals.remove(fd)
- else:
- if not receive_unlinked(fd, "local"):
- locals.remove(fd)
- unlinked_locals.remove(fd)
- report_pending()
- match_proxies()
- while websocket_pending:
- pending = websocket_pending[0]
- if pending.age() < WEBSOCKET_REQUEST_TIMEOUT:
- break
- log(u"Expired remote connection from %s." % format_peername(pending))
- pending.close()
- websocket_pending.pop(0)
- report_pending()
-
-if __name__ == "__main__":
- opts, args = getopt.gnu_getopt(sys.argv[1:], "f:hl:r", ["daemon", "facilitator=", "help", "log=", "pidfile=", "register", "unsafe-logging"])
- for o, a in opts:
- if o == "--daemon":
- options.daemonize = True
- elif o == "-f" or o == "--facilitator":
- options.facilitator_addr = parse_addr_spec(a)
- elif o == "-h" or o == "--help":
- usage()
- sys.exit()
- elif o == "-l" or o == "--log":
- options.log_filename = a
- elif o == "--pidfile":
- options.pid_filename = a
- elif o == "-r" or o == "--register":
- options.register = True
- elif o == "--unsafe-logging":
- options.safe_logging = False
-
- if len(args) == 0:
- options.local_addr = (DEFAULT_LOCAL_ADDRESS, DEFAULT_LOCAL_PORT)
- options.remote_addr = (DEFAULT_REMOTE_ADDRESS, DEFAULT_REMOTE_PORT)
- elif len(args) == 1:
- options.local_addr = parse_addr_spec(args[0], DEFAULT_LOCAL_ADDRESS, DEFAULT_LOCAL_PORT)
- options.remote_addr = (DEFAULT_REMOTE_ADDRESS, DEFAULT_REMOTE_PORT)
- elif len(args) == 2:
- options.local_addr = parse_addr_spec(args[0], DEFAULT_LOCAL_ADDRESS, DEFAULT_LOCAL_PORT)
- options.remote_addr = parse_addr_spec(args[1], DEFAULT_REMOTE_ADDRESS, DEFAULT_REMOTE_PORT)
- else:
- usage(sys.stderr)
- sys.exit(1)
-
- if options.log_filename:
- options.log_file = open(options.log_filename, "a")
- # Send error tracebacks to the log.
- sys.stderr = options.log_file
- else:
- options.log_file = sys.stdout
-
- # Local socket, accepting SOCKS requests from localhost
- local_s = listen_socket(options.local_addr)
- # Remote socket, accepting remote WebSocket connections from proxies.
- remote_s = listen_socket(options.remote_addr)
-
- # New remote sockets waiting to finish their WebSocket negotiation.
- websocket_pending = []
- # Remote connection sockets.
- remotes = []
- # Remotes not yet linked with a local. This is a subset of remotes.
- unlinked_remotes = []
- # New local sockets waiting to finish their SOCKS negotiation.
- socks_pending = []
- # Local Tor sockets, after SOCKS negotiation.
- locals = []
- # Locals not yet linked with a remote. This is a subset of remotes.
- unlinked_locals = []
-
- register()
-
- if options.daemonize:
- log(u"Daemonizing.")
- pid = os.fork()
- if pid != 0:
- if options.pid_filename:
- f = open(options.pid_filename, "w")
- print >> f, pid
- f.close()
- sys.exit(0)
- try:
- main()
- except Exception:
- exc = traceback.format_exc()
- log("".join(exc))
diff --git a/flashproxy-reg-http b/flashproxy-reg-http
new file mode 100755
index 0000000..209f77e
--- /dev/null
+++ b/flashproxy-reg-http
@@ -0,0 +1,111 @@
+#!/usr/bin/env python
+
+import getopt
+import httplib
+import socket
+import re
+import sys
+import urllib
+
+DEFAULT_REMOTE_ADDR = ""
+DEFAULT_REMOTE_PORT = 9000
+DEFAULT_FACILITATOR_HOST = "tor-facilitator.bamsoftware.com"
+DEFAULT_FACILITATOR_PORT = 9002
+
+class options(object):
+ facilitator_addr = None
+ remote_addr = None
+
+def usage(f = sys.stdout):
+ print >> f, """\
+Usage: %(progname)s [HOSTNAME][:PORT]
+Register with a flash proxy facilitator using an HTTP POST. By default the
+facilitator address is "%(fac_addr)s".
+
+ -a, --address=ADDRESS register the given address instead of \"%(remote_addr)s\".
+ -h, --help show this help. \
+""" % {
+ "progname": sys.argv[0],
+ "fac_addr": format_addr((DEFAULT_FACILITATOR_HOST, DEFAULT_FACILITATOR_PORT)),
+ "remote_addr": format_addr((DEFAULT_REMOTE_ADDR, DEFAULT_REMOTE_PORT)),
+}
+
+def parse_addr_spec(spec, defhost = None, defport = None):
+ host = None
+ port = None
+ m = None
+ # IPv6 syntax.
+ if not m:
+ m = re.match(ur'^\[(.+)\]:(\d+)$', spec)
+ if m:
+ host, port = m.groups()
+ af = socket.AF_INET6
+ if not m:
+ m = re.match(ur'^\[(.+)\]:?$', spec)
+ if m:
+ host, = m.groups()
+ af = socket.AF_INET6
+ # IPv4 syntax.
+ if not m:
+ m = re.match(ur'^(.+):(\d+)$', spec)
+ if m:
+ host, port = m.groups()
+ af = socket.AF_INET
+ if not m:
+ m = re.match(ur'^:?(\d+)$', spec)
+ if m:
+ port, = m.groups()
+ af = 0
+ if not m:
+ host = spec
+ af = 0
+ host = host or defhost
+ port = port or defport
+ if not port:
+ raise ValueError("Bad address specification \"%s\"" % spec)
+ return host, int(port)
+
+def format_addr(addr):
+ host, port = addr
+ if not host:
+ return u":%d" % port
+ # Numeric IPv6 address?
+ try:
+ addrs = socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM, socket.IPPROTO_TCP, socket.AI_NUMERICHOST)
+ af = addrs[0][0]
+ except socket.gaierror, e:
+ af = 0
+ if af == socket.AF_INET6:
+ return u"[%s]:%d" % (host, port)
+ else:
+ return u"%s:%d" % (host, port)
+
+options.facilitator_addr = (DEFAULT_FACILITATOR_HOST, DEFAULT_FACILITATOR_PORT)
+options.remote_addr = (DEFAULT_REMOTE_ADDR, DEFAULT_REMOTE_PORT)
+
+opts, args = getopt.gnu_getopt(sys.argv[1:], "a:h", ["address=", "help"])
+for o, a in opts:
+ if o == "-a" or o == "--address":
+ options.remote_addr = parse_addr_spec(a, DEFAULT_REMOTE_ADDR, DEFAULT_REMOTE_PORT)
+ elif o == "-h" or o == "--help":
+ usage()
+ sys.exit()
+
+if len(args) == 0:
+ pass
+elif len(args) == 1:
+ options.facilitator_addr = parse_addr_spec(args[0], DEFAULT_FACILITATOR_HOST, DEFAULT_FACILITATOR_PORT)
+else:
+ usage(sys.stderr)
+ sys.exit(1)
+
+spec = format_addr(options.remote_addr)
+http = httplib.HTTPConnection(*options.facilitator_addr)
+try:
+ http.request("POST", "/", urllib.urlencode({"client": spec}))
+except Exception, e:
+ print >> sys.stderr, "Failed to register: %s" % str(e)
+ sys.exit(1)
+http.close()
+
+print "Registered \"%s\" with %s." % (spec, format_addr(options.facilitator_addr))
diff --git a/flashproxy-reg-http.py b/flashproxy-reg-http.py
deleted file mode 100755
index 209f77e..0000000
--- a/flashproxy-reg-http.py
+++ /dev/null
@@ -1,111 +0,0 @@
-#!/usr/bin/env python
-
-import getopt
-import httplib
-import socket
-import re
-import sys
-import urllib
-
-DEFAULT_REMOTE_ADDR = ""
-DEFAULT_REMOTE_PORT = 9000
-DEFAULT_FACILITATOR_HOST = "tor-facilitator.bamsoftware.com"
-DEFAULT_FACILITATOR_PORT = 9002
-
-class options(object):
- facilitator_addr = None
- remote_addr = None
-
-def usage(f = sys.stdout):
- print >> f, """\
-Usage: %(progname)s [HOSTNAME][:PORT]
-Register with a flash proxy facilitator using an HTTP POST. By default the
-facilitator address is "%(fac_addr)s".
-
- -a, --address=ADDRESS register the given address instead of \"%(remote_addr)s\".
- -h, --help show this help. \
-""" % {
- "progname": sys.argv[0],
- "fac_addr": format_addr((DEFAULT_FACILITATOR_HOST, DEFAULT_FACILITATOR_PORT)),
- "remote_addr": format_addr((DEFAULT_REMOTE_ADDR, DEFAULT_REMOTE_PORT)),
-}
-
-def parse_addr_spec(spec, defhost = None, defport = None):
- host = None
- port = None
- m = None
- # IPv6 syntax.
- if not m:
- m = re.match(ur'^\[(.+)\]:(\d+)$', spec)
- if m:
- host, port = m.groups()
- af = socket.AF_INET6
- if not m:
- m = re.match(ur'^\[(.+)\]:?$', spec)
- if m:
- host, = m.groups()
- af = socket.AF_INET6
- # IPv4 syntax.
- if not m:
- m = re.match(ur'^(.+):(\d+)$', spec)
- if m:
- host, port = m.groups()
- af = socket.AF_INET
- if not m:
- m = re.match(ur'^:?(\d+)$', spec)
- if m:
- port, = m.groups()
- af = 0
- if not m:
- host = spec
- af = 0
- host = host or defhost
- port = port or defport
- if not port:
- raise ValueError("Bad address specification \"%s\"" % spec)
- return host, int(port)
-
-def format_addr(addr):
- host, port = addr
- if not host:
- return u":%d" % port
- # Numeric IPv6 address?
- try:
- addrs = socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM, socket.IPPROTO_TCP, socket.AI_NUMERICHOST)
- af = addrs[0][0]
- except socket.gaierror, e:
- af = 0
- if af == socket.AF_INET6:
- return u"[%s]:%d" % (host, port)
- else:
- return u"%s:%d" % (host, port)
-
-options.facilitator_addr = (DEFAULT_FACILITATOR_HOST, DEFAULT_FACILITATOR_PORT)
-options.remote_addr = (DEFAULT_REMOTE_ADDR, DEFAULT_REMOTE_PORT)
-
-opts, args = getopt.gnu_getopt(sys.argv[1:], "a:h", ["address=", "help"])
-for o, a in opts:
- if o == "-a" or o == "--address":
- options.remote_addr = parse_addr_spec(a, DEFAULT_REMOTE_ADDR, DEFAULT_REMOTE_PORT)
- elif o == "-h" or o == "--help":
- usage()
- sys.exit()
-
-if len(args) == 0:
- pass
-elif len(args) == 1:
- options.facilitator_addr = parse_addr_spec(args[0], DEFAULT_FACILITATOR_HOST, DEFAULT_FACILITATOR_PORT)
-else:
- usage(sys.stderr)
- sys.exit(1)
-
-spec = format_addr(options.remote_addr)
-http = httplib.HTTPConnection(*options.facilitator_addr)
-try:
- http.request("POST", "/", urllib.urlencode({"client": spec}))
-except Exception, e:
- print >> sys.stderr, "Failed to register: %s" % str(e)
- sys.exit(1)
-http.close()
-
-print "Registered \"%s\" with %s." % (spec, format_addr(options.facilitator_addr))
diff --git a/init.d/facilitator b/init.d/facilitator
index 152f03c..4e8ab1d 100755
--- a/init.d/facilitator
+++ b/init.d/facilitator
@@ -5,7 +5,7 @@
#
# chkconfig: 2345 90 10
# description: Flash proxy facilitator.
-# processname: facilitator.py
+# processname: facilitator
# pidfile: /var/flashproxy/facilitator.pid
# Installation instructions:
@@ -22,7 +22,7 @@ RELAY=...
BINDIR=/usr/local/bin
VARDIR=/var/flashproxy
-PROG=$BINDIR/facilitator.py
+PROG=$BINDIR/facilitator
PIDFILE=$VARDIR/facilitator.pid
USER=flashproxy
diff --git a/torrc b/torrc
index 216c292..4ee54e1 100644
--- a/torrc
+++ b/torrc
@@ -1,6 +1,6 @@
## Configuration file for Tor over flash proxies.
## Usage:
-## python flashproxy-client.py --register
+## flashproxy-client --register
## tor -f torrc
ClientTransportPlugin websocket socks4 127.0.0.1:9001
1
0

[translation/vidalia_alpha] Update translations for vidalia_alpha
by translation@torproject.org 22 Jul '12
by translation@torproject.org 22 Jul '12
22 Jul '12
commit ad9c3ac31f606073b6d36c953daa08023fbe58ba
Author: Translation commit bot <translation(a)torproject.org>
Date: Sun Jul 22 14:45:14 2012 +0000
Update translations for vidalia_alpha
---
he/vidalia_he.po | 1520 +++++++++++++++++++++++++++---------------------------
1 files changed, 763 insertions(+), 757 deletions(-)
diff --git a/he/vidalia_he.po b/he/vidalia_he.po
index e9acbd4..fb1190d 100644
--- a/he/vidalia_he.po
+++ b/he/vidalia_he.po
@@ -1,13 +1,19 @@
#
# Translators:
+# Amichay P. K. <am1chay.p.k(a)gmail.com>, 2011.
+# Elifelet h<ttps://www.transifex.com/accounts/profile/Elifelet/, 2012.
+# Isratine Citizen <genghiskhan(a)gmx.ca>, 2012.
+# Runa A. Sandvik <runa.sandvik(a)gmail.com>, 2011.
# runasand <runa.sandvik(a)gmail.com>, 2011.
+# Something Another <roeyjobsyud(a)gmail.com>, 2012.
+# <static.172(a)gmail.com>, 2012.
msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: https://trac.torproject.org/projects/tor\n"
"POT-Creation-Date: 2012-03-21 17:46+0000\n"
-"PO-Revision-Date: 2012-03-22 09:01+0000\n"
-"Last-Translator: runasand <runa.sandvik(a)gmail.com>\n"
+"PO-Revision-Date: 2012-07-22 14:26+0000\n"
+"Last-Translator: GenghisKhan <genghiskhan(a)gmx.ca>\n"
"Language-Team: translations(a)vidalia-project.net\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -22,32 +28,32 @@ msgstr "אודות Vidalia"
msgctxt "AboutDialog"
msgid "License"
-msgstr ""
+msgstr "רישיון"
msgctxt "AboutDialog"
msgid "Vidalia 0.2.0"
-msgstr "Vidalia"
+msgstr "Vidalia 0.2.0"
msgctxt "AboutDialog"
msgid "Tor 0.2.0.32"
-msgstr ""
+msgstr "Tor 0.2.0.32"
msgctxt "AboutDialog"
msgid "Qt 4.4.2"
-msgstr "4.4.2"
+msgstr "Qt 4.4.2"
msgctxt "AdvancedPage"
msgid "'%1' is not a valid IP address."
-msgstr "%1 אינו כתובת IP חוקית."
+msgstr "%1 אינו כתובת IP תקפה."
msgctxt "AdvancedPage"
msgid ""
"You selected 'Password' authentication, but did not specify a password."
-msgstr "בחרת באימות 'סיסמה', אך לא הגדרת סיסמה."
+msgstr "בחרת באימות 'סיסמה', אך לא ציינת סיסמה."
msgctxt "AdvancedPage"
msgid "Select Tor Configuration File"
-msgstr "בחר קובץ הגדרות ל-Tor"
+msgstr "בחירת קובץ תצורת Tor"
msgctxt "AdvancedPage"
msgid "File Not Found"
@@ -59,27 +65,27 @@ msgstr "%1 לא קיים. האם ברצונך ליצור אותו?"
msgctxt "AdvancedPage"
msgid "Failed to Create File"
-msgstr "כשלון בעת יצירת קובץ"
+msgstr "כשל בעת יצירת קובץ"
msgctxt "AdvancedPage"
msgid "Unable to create %1 [%2]"
-msgstr "לא יכול ליצור %1 (%2)"
+msgstr "לא יכול ליצור %1 [%2]"
msgctxt "AdvancedPage"
msgid "Select a Directory to Use for Tor Data"
-msgstr "בחר ספריה לאחסון המידע של Tor"
+msgstr "בחירת ספריה לשימוש עבור מידע של Tor"
msgctxt "AdvancedPage"
msgid "Unable to remove Tor Service"
-msgstr "לא יכול להסיר את שירות Tor"
+msgstr "לא ניתן להסיר את שירות Tor"
msgctxt "AdvancedPage"
msgid "Unable to install Tor Service"
-msgstr "לא יכול להתקין את שירות Tor"
+msgstr "לא ניתן להתקין את שירות Tor"
msgctxt "AdvancedPage"
msgid "Vidalia was unable to install the Tor service."
-msgstr "Vidalia לא הצליח להתקין את שירות Tor."
+msgstr "Vidalia לא הצליח להתקין את השירות Tor."
msgctxt "AdvancedPage"
msgid "Authentication:"
@@ -95,7 +101,7 @@ msgstr "כלום"
msgctxt "AdvancedPage"
msgid "Cookie"
-msgstr "עוגיה"
+msgstr "עוגייה"
msgctxt "AdvancedPage"
msgid "Password"
@@ -111,91 +117,91 @@ msgstr ":"
msgctxt "AdvancedPage"
msgid "Tor Configuration File"
-msgstr ""
+msgstr "קובץ תצורת Tor"
msgctxt "AdvancedPage"
msgid "Start the Tor software with the specified configuration file (torrc)"
-msgstr ""
+msgstr "הפעלת Tor באמצעות קובץ התצורה המצוין (torrc)"
msgctxt "AdvancedPage"
msgid "Select path to your configuration file"
-msgstr ""
+msgstr "בחירת נתיב אל קובץ התצורה"
msgctxt "AdvancedPage"
msgid "Browse"
-msgstr "חפש"
+msgstr "עיון"
msgctxt "AdvancedPage"
msgid "Data Directory"
-msgstr ""
+msgstr "מדור מידע"
msgctxt "AdvancedPage"
msgid "Store data for the Tor software in the following directory"
-msgstr ""
+msgstr "אחסון מידע עבור Tor במדור זה"
msgctxt "AdvancedPage"
msgid "Select the directory used to store data for the Tor software"
-msgstr ""
+msgstr "בחירת המדור שישמש לאחסון מידע עבור Tor"
msgctxt "AdvancedPage"
msgid "Tor Control"
-msgstr ""
+msgstr "שליטה ב-Tor"
msgctxt "AdvancedPage"
msgid "Use TCP connection (ControlPort)"
-msgstr ""
+msgstr "שימוש בחיבור TCP (ControlPort)"
msgctxt "AdvancedPage"
msgid "Path:"
-msgstr ""
+msgstr "נתיב:"
msgctxt "AdvancedPage"
msgid "Use Unix domain socket (ControlSocket)"
-msgstr ""
+msgstr "שימוש ב-Unix domain socket (ControlSocket)"
msgctxt "AdvancedPage"
msgid "Edit current torrc"
-msgstr ""
+msgstr "עריכת קובץ torrc נוכחי"
msgctxt "AdvancedPage"
msgid "NOTE: this will edit the currently loaded torrc"
-msgstr ""
+msgstr "לתשומת לבך: פעולה זו תערוך את קובץ torrc שטעון כעת"
msgctxt "AdvancedPage"
msgid "ControlSocket path doesn't exist."
-msgstr ""
+msgstr "נתיב הקרת Socket אינו קיים."
msgctxt "AdvancedPage"
msgid ""
"The specified Tor configuration file location contains characters that "
"cannot be represented in your system's current 8-bit character encoding."
-msgstr ""
+msgstr "מיקום קובץ תצורת Tor שצוין מכיל תווים שלא ניתן להציגם בקידוד 8-bit הנוכחי של מערכתך."
msgctxt "AdvancedPage"
msgid ""
"The specified Tor data directory location contains characters that cannot be"
" represented in your system's current 8-bit character encoding."
-msgstr ""
+msgstr "מיקום מדור מידע Tor שצוין מכיל תווים שלא ניתן להציגם בקידוד 8-bit הנוכחי של מערכתך."
msgctxt "AdvancedPage"
msgid "Warning"
-msgstr ""
+msgstr "אזהרה"
msgctxt "AdvancedPage"
msgid "You changed torrc path, would you like to restart Tor?"
-msgstr ""
+msgstr "שינית את הנתיב של torrc, האם ברצונך לאתחל את Tor?"
msgctxt "AdvancedPage"
msgid "Tor Configuration File (torrc);;All Files (*)"
-msgstr ""
+msgstr "קובץ תצורת Tor (torrc);;כל הקבצים (*)"
msgctxt "AdvancedPage"
msgid "Select a file to use for Tor socket path"
-msgstr ""
+msgstr "בחירת קובץ לשימוש עבור Tor socket path"
msgctxt "AdvancedPage"
msgid "Configure ControlPort automatically"
-msgstr ""
+msgstr "הגדרה אוטומטית של בקרת־יציאה (ControlPort)"
msgctxt "AdvancedPage"
msgid ""
@@ -205,7 +211,7 @@ msgstr ""
msgctxt "AdvancedPage"
msgid "Panic"
-msgstr ""
+msgstr "בהלה"
msgctxt "AdvancedPage"
msgid ""
@@ -214,29 +220,29 @@ msgstr ""
msgctxt "AdvancedPage"
msgid "Enable panic button"
-msgstr ""
+msgstr "אפשור כפתור בהלה"
msgctxt "AdvancedPage"
msgid "Panic path:"
-msgstr ""
+msgstr "נתיב בהלה:"
msgctxt "AdvancedPage"
msgid ""
"You've checked the autoconfiguration option for the ControlPort, but "
"provided no Data Directory. Please add one, or uncheck the \"Configure "
"ControlPort automatically\" option."
-msgstr ""
+msgstr "בחרת באפשרות תצורה אוטומטית עבור בקרת יציאה, אולם לא סיפקת מידע מדור. נא להוסיף אחד, או לכבות את האפשרות \"הגדרה אוטומטית של בקרת־יציאה\"."
msgctxt "AdvancedPage"
msgid ""
"Vidalia was unable to remove the Tor service.\n"
"\n"
"You may need to remove it manually."
-msgstr ""
+msgstr "Vidalia לא מסוגל היה להסיר את Tor.\n\nייתכן שעליך להסיר אותו ידנית."
msgctxt "AdvancedPage"
msgid "Select a Directory to Use for Panic"
-msgstr ""
+msgstr "בחירת מדור לשימוש בבהלה"
msgctxt "AppearancePage"
msgid "Language"
@@ -244,7 +250,7 @@ msgstr "שפה"
msgctxt "AppearancePage"
msgid "Choose the language used in Vidalia"
-msgstr "בחר שפה לשימוש על ידי Vidalia"
+msgstr "בחירת שפה לשימוש ביישום Vidalia"
msgctxt "AppearancePage"
msgid "Style"
@@ -252,28 +258,28 @@ msgstr "סגנון"
msgctxt "AppearancePage"
msgid "Choose Vidalia's interface style"
-msgstr "בחר את סגנון הממשק של Vidalia"
+msgstr "בחירת סגנון הממשק של Vidalia"
msgctxt "AppearancePage"
msgid "Vidalia was unable to load the selected language translation."
-msgstr ""
+msgstr "Vidalia לא מסוגל היה לטעון את קבצי התרגום הנבחרים."
msgctxt "AppearancePage"
msgid ""
"System Icon Preferences (changes will take effect when you restart Vidalia)"
-msgstr ""
+msgstr "העדפות סמל מערכת (שינויים יכנסו לתוקף בעת אתחול Vidalia)"
msgctxt "AppearancePage"
msgid "Show the Tray Icon and Dock Icon (default)"
-msgstr ""
+msgstr "הצגת סמל המגש וסמל הרציף (ברירת מחדל)"
msgctxt "AppearancePage"
msgid "Hide the Tray Icon"
-msgstr ""
+msgstr "הסתרת סמל המגש"
msgctxt "AppearancePage"
msgid "Hide the Dock Icon"
-msgstr ""
+msgstr "הסתרת סמל הרציף"
msgctxt "BandwidthGraph"
msgid "Since:"
@@ -281,11 +287,11 @@ msgstr "מאז:"
msgctxt "BandwidthGraph"
msgid "Hide Settings"
-msgstr "הסתר הגדרות"
+msgstr "הסתרת הגדרות"
msgctxt "BandwidthGraph"
msgid "Show Settings"
-msgstr "הצג הגדרות"
+msgstr "הצגת הגדרות"
msgctxt "BandwidthGraph"
msgid "Reset"
@@ -309,7 +315,7 @@ msgstr "סגנון"
msgctxt "BandwidthGraph"
msgid "Changes the transparency of the Bandwidth Graph"
-msgstr "שנה את השקיפות של גרף רוחב הפס"
+msgstr "שינוי את השקיפות של גרף רוחב הפס"
msgctxt "BandwidthGraph"
msgid "100"
@@ -321,7 +327,7 @@ msgstr "% אטום"
msgctxt "BandwidthGraph"
msgid "Save"
-msgstr "שמור"
+msgstr "שמירה"
msgctxt "BandwidthGraph"
msgid "Cancel"
@@ -329,55 +335,55 @@ msgstr "ביטול"
msgctxt "BandwidthGraph"
msgid "Bandwidth Graph"
-msgstr ""
+msgstr "גרף רוחב פס"
msgctxt "BridgeDownloader"
msgid "Starting HTTPS bridge request..."
-msgstr ""
+msgstr "מפעיל כעת בקשת גשר HTTPS..."
msgctxt "BridgeDownloader"
msgid "Connecting to %1:%2..."
-msgstr ""
+msgstr "מתחבר כעת אל %1:%2..."
msgctxt "BridgeDownloader"
msgid "Sending an HTTPS request for bridges..."
-msgstr ""
+msgstr "שולח כעת בקשת HTTPS עבור גשרים..."
msgctxt "BridgeDownloader"
msgid "Downloading a list of bridges..."
-msgstr ""
+msgstr "טוען כעת רשימת גשרים..."
msgctxt "BridgeDownloaderProgressDialog"
msgid "Downloading Bridges"
-msgstr ""
+msgstr "טוען גשרים כעת..."
msgctxt "BridgeDownloaderProgressDialog"
msgid "Unable to download bridges: %1"
-msgstr ""
+msgstr "לא מסוגל לטעון גשרים: %1"
msgctxt "BridgeDownloaderProgressDialog"
msgid "Retrying bridge request..."
-msgstr ""
+msgstr "מנסה שוב בקשת גשר כעת..."
msgctxt "BridgeUsageDialog"
msgid "Country"
-msgstr ""
+msgstr "מדינה"
msgctxt "BridgeUsageDialog"
msgid "# Clients"
-msgstr ""
+msgstr "# לקוחות"
msgctxt "BridgeUsageDialog"
msgid "Clients from the following countries have used your relay since %1"
-msgstr ""
+msgstr "לקוחות מן המדינות הבאות השתמשו בממסרך מאז %1"
msgctxt "BridgeUsageDialog"
msgid "Bridge Usage Summary"
-msgstr ""
+msgstr "סיכום שימוש בגשר"
msgctxt "BridgeUsageDialog"
msgid "Client Summary"
-msgstr ""
+msgstr "סיכום קליינטים"
msgctxt "Circuit"
msgid "New"
@@ -397,7 +403,7 @@ msgstr "נכשל"
msgctxt "Circuit"
msgid "Closed"
-msgstr "סגור"
+msgstr "סגירה"
msgctxt "Circuit"
msgid "Unknown"
@@ -421,11 +427,11 @@ msgstr "קרב למעגל"
msgctxt "CircuitListWidget"
msgid "Close Circuit (Del)"
-msgstr "סגור מעגל (Del)"
+msgstr "סגירת מעגל (Del)"
msgctxt "CircuitListWidget"
msgid "Close Stream (Del)"
-msgstr "סגור זרם (Del)"
+msgstr "סגירת זרם (Del)"
msgctxt "ConfigDialog"
msgid "General"
@@ -437,7 +443,7 @@ msgstr "רשת"
msgctxt "ConfigDialog"
msgid "Sharing"
-msgstr ""
+msgstr "שיתוף"
msgctxt "ConfigDialog"
msgid "Appearance"
@@ -457,15 +463,15 @@ msgstr "תקלה בעת שמירת הגדרות"
msgctxt "ConfigDialog"
msgid "Vidalia was unable to save your %1 settings."
-msgstr "Vidalia לא הצליח לשמור את השינויים בהגדרות 1%."
+msgstr "Vidalia לא הצליח לשמור את השינויים בהגדרות 1%."
msgctxt "ConfigDialog"
msgid "Error Applying Settings"
-msgstr "תקלה בעת הפעלת שינויים"
+msgstr "תקלה בעת החלת הגדרות"
msgctxt "ConfigDialog"
msgid "Vidalia was unable to apply your %1 settings to Tor."
-msgstr "Vidalia לא הצליח להפעיל את השינויים בהגדרות 1%."
+msgstr "Vidalia לא הצליח להפעיל את השינויים בהגדרות 1%."
msgctxt "ConfigDialog"
msgid "Settings"
@@ -473,931 +479,931 @@ msgstr "הגדרות"
msgctxt "ControlConnection"
msgid "Vidalia was unable to connect to Tor. (%1)"
-msgstr "Vidalia לא הצליח להתחבר ל-Tor. (%1)"
+msgstr "Vidalia לא הצליח להתחבר אל Tor. (%1)"
msgctxt "ControlConnection"
msgid "Control socket is not connected."
-msgstr "סוקט שליטה לא מחובר."
+msgstr "socket בקרה אינו מחובר."
msgctxt "ControlPasswordInputDialog"
msgid "Problem connecting to Tor"
-msgstr ""
+msgstr "בעיה בעת התחברות אל Tor"
msgctxt "ControlPasswordInputDialog"
msgid ""
"Vidalia can try to restart Tor for you. Doing so will close all currently "
"active connections through your Tor process."
-msgstr ""
+msgstr "Vidalia יכול לנסות לאתחל את Tor עבורך. בעושך כך יסגרו כל החיבורים שפעילים כעת דרך תהליך Tor הנוכחי."
msgctxt "ControlPasswordInputDialog"
msgid ""
"Tor is already running, but Vidalia can't connect to it.\n"
"\n"
"This can happen when something else (such as another active Vidalia process, or a Vidalia process that crashed) launched Tor."
-msgstr ""
+msgstr "Tor כבר מורץ, אך Vidalia לא מסוגל להתחבר אליו.\n\nזה יכול לקרות כאשר משהו אחר (כגון תהליך פעיל אחר של Vidalia, או תהליך שהתרסק) שיגר את Tor."
msgctxt "ControlPasswordInputDialog"
msgid ""
"You will need to shut down the Tor process before Vidalia can launch a new "
"one."
-msgstr ""
+msgstr "עליך לכבות את התהליך Tor לשני שתהיה ביכולתו של Vidalia לשגר אחד חדש."
msgctxt "ControlSocket"
msgid "Control socket is not connected."
-msgstr "סוקט שליטה לא מחובר."
+msgstr "socket בקרה אינו מחובר."
msgctxt "ControlSocket"
msgid "Error sending control command. [%1]"
-msgstr "שגיעה בעת שליחת פקודת שליטה. (%1)"
+msgstr "שגיאה בעת שליחת פקודת בקרה. (%1)"
msgctxt "ControlSocket"
msgid "Socket disconnected while attempting to read a line of data."
-msgstr "סוקט נסגר בזמן נסיון לקרוא שורת מידע."
+msgstr "Socket נסגר במהלך ניסיון לקרוא שורת מידע."
msgctxt "ControlSocket"
msgid "Invalid control reply. [%1]"
-msgstr "תשובת שליטה שגויה. (%1)"
+msgstr "תשובת בקרה שגויה. (%1)"
msgctxt "CountryInfo"
msgid "Afghanistan"
-msgstr ""
+msgstr "אפגניסטן"
msgctxt "CountryInfo"
msgid "Andorra"
-msgstr ""
+msgstr "אנדורה"
msgctxt "CountryInfo"
msgid "Angola"
-msgstr ""
+msgstr "אנגולה"
msgctxt "CountryInfo"
msgid "Antigua & Barbuda"
-msgstr ""
+msgstr "אנטיגואה וברבודה"
msgctxt "CountryInfo"
msgid "Argentina"
-msgstr ""
+msgstr "ארגנטינה"
msgctxt "CountryInfo"
msgid "Armenia"
-msgstr ""
+msgstr "ארמניה"
msgctxt "CountryInfo"
msgid "Australia"
-msgstr "אודות Vidalia"
+msgstr "אוסטרליה"
msgctxt "CountryInfo"
msgid "Azerbaijan"
-msgstr ""
+msgstr "אזרביג'אן"
msgctxt "CountryInfo"
msgid "Bahamas"
-msgstr ""
+msgstr "בהאמה"
msgctxt "CountryInfo"
msgid "Bangladesh"
-msgstr ""
+msgstr "בנגאלדש"
msgctxt "CountryInfo"
msgid "Barbados"
-msgstr ""
+msgstr "ברבדוס"
msgctxt "CountryInfo"
msgid "Belarus"
-msgstr ""
+msgstr "בלרוס"
msgctxt "CountryInfo"
msgid "Belgium"
-msgstr ""
+msgstr "בלגיה"
msgctxt "CountryInfo"
msgid "Belize"
-msgstr ""
+msgstr "בליז"
msgctxt "CountryInfo"
msgid "Bhutan"
-msgstr ""
+msgstr "בוטן"
msgctxt "CountryInfo"
msgid "Bolivia"
-msgstr ""
+msgstr "בוליביה"
msgctxt "CountryInfo"
msgid "Bosnia & Herzegovina"
-msgstr ""
+msgstr "בוסניה והרצגובינה"
msgctxt "CountryInfo"
msgid "Botswana"
-msgstr ""
+msgstr "בוצואנה"
msgctxt "CountryInfo"
msgid "Brazil"
-msgstr ""
+msgstr "ברזיל"
msgctxt "CountryInfo"
msgid "Brunei Darussalam"
-msgstr ""
+msgstr "ברוני דרוסלם"
msgctxt "CountryInfo"
msgid "Bulgaria"
-msgstr ""
+msgstr "בולגריה"
msgctxt "CountryInfo"
msgid "Burkina Faso"
-msgstr ""
+msgstr "בורקינה פאסו"
msgctxt "CountryInfo"
msgid "Burundi"
-msgstr ""
+msgstr "בורונדי"
msgctxt "CountryInfo"
msgid "Cambodia"
-msgstr ""
+msgstr "קמבודיה"
msgctxt "CountryInfo"
msgid "Cameroon"
-msgstr ""
+msgstr "קמרון"
msgctxt "CountryInfo"
msgid "Canada"
-msgstr ""
+msgstr "קנדה"
msgctxt "CountryInfo"
msgid "Cape Verde"
-msgstr ""
+msgstr "קייפ ורדה"
msgctxt "CountryInfo"
msgid "Central African Republic"
-msgstr ""
+msgstr "רפובליקת מרכז אפריקה"
msgctxt "CountryInfo"
msgid "Chad"
-msgstr ""
+msgstr "צ'אד"
msgctxt "CountryInfo"
msgid "Chile"
-msgstr ""
+msgstr "צ'ילה"
msgctxt "CountryInfo"
msgid "China"
-msgstr ""
+msgstr "סין"
msgctxt "CountryInfo"
msgid "Colombia"
-msgstr ""
+msgstr "קולומביה"
msgctxt "CountryInfo"
msgid "Comoros"
-msgstr ""
+msgstr "איי קומורו"
msgctxt "CountryInfo"
msgid "Congo, The Democratic Republic of the"
-msgstr ""
+msgstr "הרפובליקה הדמוקרטית של קונגו"
msgctxt "CountryInfo"
msgid "Congo"
-msgstr ""
+msgstr "קונגו"
msgctxt "CountryInfo"
msgid "Costa Rica"
-msgstr ""
+msgstr "קוסטה ריקה"
msgctxt "CountryInfo"
msgid "Cote dâIvoire"
-msgstr ""
+msgstr "חוף השנהב"
msgctxt "CountryInfo"
msgid "Croatia"
-msgstr ""
+msgstr "קרואטיה"
msgctxt "CountryInfo"
msgid "Cuba"
-msgstr ""
+msgstr "קובה"
msgctxt "CountryInfo"
msgid "Cyprus"
-msgstr ""
+msgstr "קפריסין"
msgctxt "CountryInfo"
msgid "Czech Republic"
-msgstr ""
+msgstr "קזחסטן"
msgctxt "CountryInfo"
msgid "Denmark"
-msgstr ""
+msgstr "דנמרק"
msgctxt "CountryInfo"
msgid "Djibouti"
-msgstr "אודות"
+msgstr "ג'יבוטי"
msgctxt "CountryInfo"
msgid "Dominica"
-msgstr ""
+msgstr "דומיניקה"
msgctxt "CountryInfo"
msgid "Dominican Republic"
-msgstr ""
+msgstr "הרפובליקה הדומיניקנית"
msgctxt "CountryInfo"
msgid "Ecuador"
-msgstr ""
+msgstr "אקוודור"
msgctxt "CountryInfo"
msgid "Egypt"
-msgstr ""
+msgstr "מצריים"
msgctxt "CountryInfo"
msgid "El Salvador"
-msgstr ""
+msgstr "אל-סלוודור"
msgctxt "CountryInfo"
msgid "Equatorial Guinea"
-msgstr ""
+msgstr "גיניאה המשוונית"
msgctxt "CountryInfo"
msgid "Eritrea"
-msgstr ""
+msgstr "אריטראה"
msgctxt "CountryInfo"
msgid "Estonia"
-msgstr ""
+msgstr "אסטוניה"
msgctxt "CountryInfo"
msgid "France"
-msgstr "ביטול"
+msgstr "צרפת"
msgctxt "CountryInfo"
msgid "Gabon"
-msgstr ""
+msgstr "גיבון"
msgctxt "CountryInfo"
msgid "Gambia"
-msgstr ""
+msgstr "גמביה"
msgctxt "CountryInfo"
msgid "Georgia"
-msgstr ""
+msgstr "גאורגיה"
msgctxt "CountryInfo"
msgid "Germany"
-msgstr ""
+msgstr "גרמניה"
msgctxt "CountryInfo"
msgid "Ghana"
-msgstr ""
+msgstr "גאנה"
msgctxt "CountryInfo"
msgid "Grenada"
-msgstr ""
+msgstr "גראנאדה"
msgctxt "CountryInfo"
msgid "Guatemala"
-msgstr ""
+msgstr "גואטמאלה"
msgctxt "CountryInfo"
msgid "Guinea"
-msgstr "כללי"
+msgstr "גינאה"
msgctxt "CountryInfo"
msgid "Guinea-Bissau"
-msgstr ""
+msgstr "גינאה-ביסאו"
msgctxt "CountryInfo"
msgid "Guyana"
-msgstr ""
+msgstr "גיאנה"
msgctxt "CountryInfo"
msgid "Hong Kong"
-msgstr ""
+msgstr "הונג-קונג"
msgctxt "CountryInfo"
msgid "Haiti"
-msgstr ""
+msgstr "האיטי"
msgctxt "CountryInfo"
msgid "Honduras"
-msgstr ""
+msgstr "הונדורס"
msgctxt "CountryInfo"
msgid "Israel"
-msgstr ""
+msgstr "ישראל"
msgctxt "CountryInfo"
msgid "Italy"
-msgstr ""
+msgstr "איטליה"
msgctxt "CountryInfo"
msgid "Jamaica"
-msgstr ""
+msgstr "ג'מאיקה"
msgctxt "CountryInfo"
msgid "Japan"
-msgstr ""
+msgstr "יפן"
msgctxt "CountryInfo"
msgid "Jordan"
-msgstr ""
+msgstr "ירדן"
msgctxt "CountryInfo"
msgid "Kazakhstan"
-msgstr ""
+msgstr "קזחסטן"
msgctxt "CountryInfo"
msgid "Kenya"
-msgstr ""
+msgstr "קניה"
msgctxt "CountryInfo"
msgid "Kiribati"
-msgstr ""
+msgstr "קיריבאטי"
msgctxt "CountryInfo"
msgid "Kuwait"
-msgstr ""
+msgstr "כווית"
msgctxt "CountryInfo"
msgid "Kyrgyzstan"
-msgstr ""
+msgstr "קירגיזיסטן"
msgctxt "CountryInfo"
msgid "Laos"
-msgstr ""
+msgstr "לאוס"
msgctxt "CountryInfo"
msgid "Latvia"
-msgstr ""
+msgstr "לטביה"
msgctxt "CountryInfo"
msgid "Lebanon"
-msgstr ""
+msgstr "לבנון"
msgctxt "CountryInfo"
msgid "Lesotho"
-msgstr ""
+msgstr "לסוטו"
msgctxt "CountryInfo"
msgid "Liberia"
-msgstr ""
+msgstr "ליבריה"
msgctxt "CountryInfo"
msgid "Liechtenstein"
-msgstr ""
+msgstr "ליכטנשטיין"
msgctxt "CountryInfo"
msgid "Lithuania"
-msgstr ""
+msgstr "ליטא"
msgctxt "CountryInfo"
msgid "Luxembourg"
-msgstr ""
+msgstr "לוקסמבורג"
msgctxt "CountryInfo"
msgid "Macedonia"
-msgstr ""
+msgstr "מקדוניה"
msgctxt "CountryInfo"
msgid "Madagascar"
-msgstr ""
+msgstr "מדגסקר"
msgctxt "CountryInfo"
msgid "Malawi"
-msgstr ""
+msgstr "מלאווי"
msgctxt "CountryInfo"
msgid "Malaysia"
-msgstr ""
+msgstr "מלזיה"
msgctxt "CountryInfo"
msgid "Mali"
-msgstr ""
+msgstr "מאלי"
msgctxt "CountryInfo"
msgid "Malta"
-msgstr ""
+msgstr "מלטה"
msgctxt "CountryInfo"
msgid "Marshall Islands"
-msgstr ""
+msgstr "איי מרשל"
msgctxt "CountryInfo"
msgid "Mauritania"
-msgstr ""
+msgstr "מאוריטניה"
msgctxt "CountryInfo"
msgid "Mauritius"
-msgstr ""
+msgstr "מאוריציוס"
msgctxt "CountryInfo"
msgid "Micronesia"
-msgstr ""
+msgstr "מיקרונזיה"
msgctxt "CountryInfo"
msgid "Moldova"
-msgstr ""
+msgstr "מולדובה"
msgctxt "CountryInfo"
msgid "Monaco"
-msgstr ""
+msgstr "מונקו"
msgctxt "CountryInfo"
msgid "Mongolia"
-msgstr ""
+msgstr "מונגוליה"
msgctxt "CountryInfo"
msgid "Montenegro"
-msgstr ""
+msgstr "מונטנגרו"
msgctxt "CountryInfo"
msgid "Morocco"
-msgstr ""
+msgstr "מרוקו"
msgctxt "CountryInfo"
msgid "Mozambique"
-msgstr ""
+msgstr "מוזמביק"
msgctxt "CountryInfo"
msgid "Namibia"
-msgstr ""
+msgstr "נמיביה"
msgctxt "CountryInfo"
msgid "Nauru"
-msgstr ""
+msgstr "Nauru"
msgctxt "CountryInfo"
msgid "Nepal"
-msgstr ""
+msgstr "נפאל"
msgctxt "CountryInfo"
msgid "Netherlands"
-msgstr ""
+msgstr "הולנד"
msgctxt "CountryInfo"
msgid "New Zealand"
-msgstr ""
+msgstr "ניוזילנד"
msgctxt "CountryInfo"
msgid "Nicaragua"
-msgstr ""
+msgstr "ניקרגואה"
msgctxt "CountryInfo"
msgid "Niger"
-msgstr ""
+msgstr "ניגר"
msgctxt "CountryInfo"
msgid "Nigeria"
-msgstr ""
+msgstr "ניגריה"
msgctxt "CountryInfo"
msgid "Norway"
-msgstr "קדימה"
+msgstr "נורווגיה"
msgctxt "CountryInfo"
msgid "Oman"
-msgstr ""
+msgstr "עמאן"
msgctxt "CountryInfo"
msgid "Pakistan"
-msgstr ""
+msgstr "פקיסטן"
msgctxt "CountryInfo"
msgid "Palau"
-msgstr ""
+msgstr "בפאלאא"
msgctxt "CountryInfo"
msgid "Palestine"
-msgstr ""
+msgstr "פלסטין"
msgctxt "CountryInfo"
msgid "Panama"
-msgstr ""
+msgstr "פנמה"
msgctxt "CountryInfo"
msgid "Papua New Guinea"
-msgstr ""
+msgstr "פאפה ניו גיני"
msgctxt "CountryInfo"
msgid "Paraguay"
-msgstr ""
+msgstr "פרגוואי"
msgctxt "CountryInfo"
msgid "Peru"
-msgstr ""
+msgstr "פרו"
msgctxt "CountryInfo"
msgid "Philippines"
-msgstr ""
+msgstr "הפיליפינים"
msgctxt "CountryInfo"
msgid "Poland"
-msgstr ""
+msgstr "פולין"
msgctxt "CountryInfo"
msgid "Portugal"
-msgstr "פורט:"
+msgstr "פורטוגל"
msgctxt "CountryInfo"
msgid "Qatar"
-msgstr ""
+msgstr "קטאר"
msgctxt "CountryInfo"
msgid "Romania"
-msgstr ""
+msgstr "רומניה"
msgctxt "CountryInfo"
msgid "Russia"
-msgstr ""
+msgstr "רוסיה"
msgctxt "CountryInfo"
msgid "Rwanda"
-msgstr ""
+msgstr "רואנדה"
msgctxt "CountryInfo"
msgid "Saint Kitts & Nevis"
-msgstr ""
+msgstr "סנט קיטס ונוויס"
msgctxt "CountryInfo"
msgid "Saint Lucia"
-msgstr ""
+msgstr "סט. לושיה"
msgctxt "CountryInfo"
msgid "Saint Vincent & the Grenadines"
-msgstr ""
+msgstr "סנט וינסנט והגרנדינים"
msgctxt "CountryInfo"
msgid "Samoa"
-msgstr ""
+msgstr "סמואה"
msgctxt "CountryInfo"
msgid "San Marino"
-msgstr ""
+msgstr "סן מרינו"
msgctxt "CountryInfo"
msgid "Sao Tome & Principe"
-msgstr ""
+msgstr "סאו טומה ופרינסיפה"
msgctxt "CountryInfo"
msgid "Saudi Arabia"
-msgstr ""
+msgstr "ערב הסעודית"
msgctxt "CountryInfo"
msgid "Senegal"
-msgstr "כללי"
+msgstr "סנגל"
msgctxt "CountryInfo"
msgid "Serbia"
-msgstr ""
+msgstr "סרביה"
msgctxt "CountryInfo"
msgid "Seychelles"
-msgstr ""
+msgstr "סיישל"
msgctxt "CountryInfo"
msgid "Sierra Leone"
-msgstr ""
+msgstr "סיירה לאונה"
msgctxt "CountryInfo"
msgid "Singapore"
-msgstr ""
+msgstr "סינגפור"
msgctxt "CountryInfo"
msgid "Slovakia"
-msgstr ""
+msgstr "סלובקיה"
msgctxt "CountryInfo"
msgid "Slovenia"
-msgstr ""
+msgstr "סלובניה"
msgctxt "CountryInfo"
msgid "Solomon Islands"
-msgstr ""
+msgstr "איי שלמה"
msgctxt "CountryInfo"
msgid "Somalia"
-msgstr ""
+msgstr "סומליה"
msgctxt "CountryInfo"
msgid "South Africa"
-msgstr ""
+msgstr "דרום אפריקה"
msgctxt "CountryInfo"
msgid "Spain"
-msgstr ""
+msgstr "ספרד"
msgctxt "CountryInfo"
msgid "Sri Lanka"
-msgstr ""
+msgstr "סרי לנקה"
msgctxt "CountryInfo"
msgid "Sudan"
-msgstr ""
+msgstr "סודן"
msgctxt "CountryInfo"
msgid "Suriname"
-msgstr ""
+msgstr "סורינאם"
msgctxt "CountryInfo"
msgid "Swaziland"
-msgstr ""
+msgstr "סווזילנד"
msgctxt "CountryInfo"
msgid "Sweden"
-msgstr ""
+msgstr "שוודיה"
msgctxt "CountryInfo"
msgid "Switzerland"
-msgstr ""
+msgstr "שוויצריה"
msgctxt "CountryInfo"
msgid "Syria"
-msgstr ""
+msgstr "סוריה"
msgctxt "CountryInfo"
msgid "Tajikistan"
-msgstr ""
+msgstr "טג'יקיסטן"
msgctxt "CountryInfo"
msgid "Tanzania"
-msgstr ""
+msgstr "טנזניה"
msgctxt "CountryInfo"
msgid "Thailand"
-msgstr ""
+msgstr "תאילנד"
msgctxt "CountryInfo"
msgid "Timor-Leste (East Timor)"
-msgstr ""
+msgstr "טימור-לאסטה (מזרח טימור)"
msgctxt "CountryInfo"
msgid "Togo"
-msgstr ""
+msgstr "טוגו"
msgctxt "CountryInfo"
msgid "Tonga"
-msgstr ""
+msgstr "טונגה"
msgctxt "CountryInfo"
msgid "Trinidad & Tobago"
-msgstr ""
+msgstr "טרינידד וטובגו"
msgctxt "CountryInfo"
msgid "Tunisia"
-msgstr ""
+msgstr "טוניס"
msgctxt "CountryInfo"
msgid "Turkey"
-msgstr ""
+msgstr "טורקיה"
msgctxt "CountryInfo"
msgid "Turkmenistan"
-msgstr ""
+msgstr "טורקמניסטן"
msgctxt "CountryInfo"
msgid "Tuvalu"
-msgstr ""
+msgstr "טובאלו"
msgctxt "CountryInfo"
msgid "Uganda"
-msgstr ""
+msgstr "אוגנדה"
msgctxt "CountryInfo"
msgid "Ukraine"
-msgstr ""
+msgstr "אוקראינה"
msgctxt "CountryInfo"
msgid "United Arab Emirates"
-msgstr ""
+msgstr "איחוד האמירויות הערביות"
msgctxt "CountryInfo"
msgid "United Kingdom"
-msgstr ""
+msgstr "בריטניה"
msgctxt "CountryInfo"
msgid "United States"
-msgstr ""
+msgstr "ארצות הברית"
msgctxt "CountryInfo"
msgid "Uruguay"
-msgstr ""
+msgstr "אורוגוואי"
msgctxt "CountryInfo"
msgid "Uzbekistan"
-msgstr ""
+msgstr "אוזבקיסטן"
msgctxt "CountryInfo"
msgid "Vanuatu"
-msgstr ""
+msgstr "ונואטו"
msgctxt "CountryInfo"
msgid "Vatican"
-msgstr ""
+msgstr "וותיקן"
msgctxt "CountryInfo"
msgid "Venezuela"
-msgstr ""
+msgstr "וונצואלה"
msgctxt "CountryInfo"
msgid "Vietnam"
-msgstr ""
+msgstr "וויאטנם"
msgctxt "CountryInfo"
msgid "Western Sahara"
-msgstr ""
+msgstr "סהרה המערבית"
msgctxt "CountryInfo"
msgid "Yemen"
-msgstr ""
+msgstr "תימן"
msgctxt "CountryInfo"
msgid "Zambia"
-msgstr ""
+msgstr "זמביה"
msgctxt "CountryInfo"
msgid "Zimbabwe"
-msgstr ""
+msgstr "זימבבואה"
msgctxt "CountryInfo"
msgid "Zaire"
-msgstr ""
+msgstr "זאיר"
msgctxt "CountryInfo"
msgid "Albania"
-msgstr ""
+msgstr "אלבניה"
msgctxt "CountryInfo"
msgid "Algeria"
-msgstr ""
+msgstr "אלג'יריה"
msgctxt "CountryInfo"
msgid "Austria"
-msgstr ""
+msgstr "אוסטריה"
msgctxt "CountryInfo"
msgid "Bahrain"
-msgstr ""
+msgstr "בחריין"
msgctxt "CountryInfo"
msgid "Benin"
-msgstr ""
+msgstr "בנין"
msgctxt "CountryInfo"
msgid "Ethiopia"
-msgstr ""
+msgstr "אתיופיה"
msgctxt "CountryInfo"
msgid "Fiji"
-msgstr ""
+msgstr "פיג'י"
msgctxt "CountryInfo"
msgid "Finland"
-msgstr ""
+msgstr "פינלנד"
msgctxt "CountryInfo"
msgid "Greece"
-msgstr ""
+msgstr "יוון"
msgctxt "CountryInfo"
msgid "Guam"
-msgstr ""
+msgstr "גואם"
msgctxt "CountryInfo"
msgid "Hungary"
-msgstr ""
+msgstr "הונגריה"
msgctxt "CountryInfo"
msgid "Iceland"
-msgstr ""
+msgstr "איסלנד"
msgctxt "CountryInfo"
msgid "India"
-msgstr ""
+msgstr "הודו"
msgctxt "CountryInfo"
msgid "Indonesia"
-msgstr ""
+msgstr "אינדונזיה"
msgctxt "CountryInfo"
msgid "Iran"
-msgstr ""
+msgstr "איראן"
msgctxt "CountryInfo"
msgid "Iraq"
-msgstr ""
+msgstr "עיראק"
msgctxt "CountryInfo"
msgid "Ireland"
-msgstr ""
+msgstr "אירלנד"
msgctxt "CountryInfo"
msgid "Korea, North"
-msgstr ""
+msgstr "צפון קוריאה"
msgctxt "CountryInfo"
msgid "Korea, South"
-msgstr ""
+msgstr "דרום קוריאה"
msgctxt "CountryInfo"
msgid "Libya"
-msgstr ""
+msgstr "לוב"
msgctxt "CountryInfo"
msgid "Maldives"
-msgstr ""
+msgstr "המלדיבים"
msgctxt "CountryInfo"
msgid "Mexico"
-msgstr ""
+msgstr "מקסיקו"
msgctxt "CountryInfo"
msgid "Myanmar"
-msgstr ""
+msgstr "מיאנמאר"
msgctxt "CountryInfo"
msgid "Taiwan"
-msgstr ""
+msgstr "טאיוואן"
msgctxt "CrashReportDialog"
msgid "Submit a Crash Report"
-msgstr ""
+msgstr "שליחת דו״ח התרסקות"
msgctxt "CrashReportDialog"
msgid "Vidalia encountered an error and needed to close"
-msgstr ""
+msgstr "Vidalia נתקל בשגיאה ונאלץ להסגר"
msgctxt "CrashReportDialog"
msgid "Restart Vidalia"
-msgstr ""
+msgstr "אתחול Vidalia"
msgctxt "CrashReportDialog"
msgid "Don't Restart"
-msgstr ""
+msgstr "לא לאתחל"
msgctxt "CrashReportDialog"
msgid "Unable to restart Vidalia"
-msgstr ""
+msgstr "לא ניתן לאתחל את Vidalia"
msgctxt "CrashReportDialog"
msgid ""
"We were unable to automatically restart Vidalia. Please restart Vidalia "
"manually."
-msgstr ""
+msgstr "אין ביכולתנו לאתחל את Vidalia באופן אוטומטי. נא לאתחל את Vidalia ידנית."
msgctxt "CrashReportDialog"
msgid "Please fill a ticket in:"
-msgstr ""
+msgstr "נא למלא ספח כרטיס בכתובת:"
msgctxt "CrashReportDialog"
msgid ""
"<a "
"href=\"https://trac.torproject.org/projects/tor/newticket\">https://trac.torproject.org/projects/tor/newticket</a>"
-msgstr ""
+msgstr "<a href=\"https://trac.torproject.org/projects/tor/newticket\">https://trac.torproject.org/projects/tor/newticket</a>"
msgctxt "CrashReportDialog"
msgid ""
"A crash report has been created that you can send to the Vidalia developers "
"to help identify and fix the problem. The submitted report does not contain "
"any personally identifying information."
-msgstr ""
+msgstr "דו״ח התרסקות נוצר וביכולתך לשלוחו אל המפתחים של Vidalia כדי לעזור לזהות ולתקן את הבעיה. הדו״ח שנשלח לא מכיל שום מידע אישי שעלול לזהותך."
msgctxt "CrashReportDialog"
msgid ""
"with a description of what you were doing before the application crashed, "
"along with the following files corresponding to the crash report:"
-msgstr ""
+msgstr "יחד עם תיאור של מה הינך עושה לפני שהיישום מתרסק, ביחד עם הקבצים הבאים שתואמים לדו״ח ההתרסקות:"
msgctxt "DebugDialog"
msgid "Plugin debug output"
-msgstr ""
+msgstr "פלט ניפוי שגיאות של תוסף"
msgctxt "DebugDialog"
msgid "Plugin Output"
-msgstr ""
+msgstr "פלט תוסף"
msgctxt "DebugDialog"
msgid "Syntax Errors"
-msgstr ""
+msgstr "שגיאות תחביר"
msgctxt "DebugDialog"
msgid "Exceptions"
-msgstr ""
+msgstr "יוצאים מן הכלל"
msgctxt "GeneralPage"
msgid "Executables (*.exe)"
-msgstr "קבצי הרצה (exe.*)"
+msgstr "קבצי הרצה (*.exe)"
msgctxt "GeneralPage"
msgid "Select Path to Tor"
-msgstr "בחר נתיב ל-Tor"
+msgstr "בחירת נתיב אל Tor"
msgctxt "GeneralPage"
msgid "You must specify the name of your Tor executable."
-msgstr "חובה לציין את קובץ הרצת Tor שלך."
+msgstr "עליך לציין את השם של קובץ הרצת Tor שלך."
msgctxt "GeneralPage"
msgid "Start Vidalia when my system starts"
-msgstr ""
+msgstr "הפעלת Vidalia בעת הפעלת המערכת"
msgctxt "GeneralPage"
msgid "Browse"
-msgstr "חפש"
+msgstr "עיון"
msgctxt "GeneralPage"
msgid "Tor"
@@ -1405,59 +1411,59 @@ msgstr "Tor"
msgctxt "GeneralPage"
msgid "Software Updates"
-msgstr ""
+msgstr "עדכוני תוכנה"
msgctxt "GeneralPage"
msgid "Check for new software updates automatically"
-msgstr ""
+msgstr "חיפוש עבור עדכוני תוכנה חדשים אוטומטית"
msgctxt "GeneralPage"
msgid "Check Now"
-msgstr ""
+msgstr "חפש עכשיו"
msgctxt "GeneralPage"
msgid "Connect to Tor automatically"
-msgstr ""
+msgstr "התחברות אל Tor אוטומטית"
msgctxt "GraphFrame"
msgid "%1 KB/s"
-msgstr "%1 KB/s"
+msgstr "%1 ק״ב/ש"
msgctxt "GraphFrame"
msgid "%1 KB"
-msgstr "%1 KB"
+msgstr "%1 ק״ב"
msgctxt "GraphFrame"
msgid "%1 MB"
-msgstr "%1 MB"
+msgstr "%1 מ״ב"
msgctxt "GraphFrame"
msgid "%1 GB"
-msgstr "%1 GB"
+msgstr "%1 ג״ב"
msgctxt "GraphFrame"
msgid "Recv:"
-msgstr ""
+msgstr "התקבלו:"
msgctxt "GraphFrame"
msgid "Sent:"
-msgstr ""
+msgstr "נשלחו:"
msgctxt "HelpBrowser"
msgid "Supplied XML file is not a valid Contents document."
-msgstr "קובץ XML נתון אינו קובץ תוכן חוקי."
+msgstr "קובץ XML שסופק אינו מסמך תכנים תקף."
msgctxt "HelpBrowser"
msgid "Search reached end of document"
-msgstr "החיפוש הגיע לסוף המסמך"
+msgstr "החיפוש הגיע אל סוף המסמך"
msgctxt "HelpBrowser"
msgid "Search reached start of document"
-msgstr "החיפוש הגיע לתחילת המסמך"
+msgstr "החיפוש הגיע אל תחילת המסמך"
msgctxt "HelpBrowser"
msgid "Text not found in document"
-msgstr "הטקסט לא נמצא במסמך"
+msgstr "התמליל לא נמצא במסמך"
msgctxt "HelpBrowser"
msgid "Found %1 results"
@@ -1465,7 +1471,7 @@ msgstr "נמצאו 1% תוצאות"
msgctxt "HelpBrowser"
msgid "Vidalia Help"
-msgstr "עזרת Vidalia"
+msgstr "עזרה - Vidalia"
msgctxt "HelpBrowser"
msgid "Back"
@@ -1473,7 +1479,7 @@ msgstr "אחורה"
msgctxt "HelpBrowser"
msgid "Move to previous page (Backspace)"
-msgstr "חזור לדף הקודם (Backspace)"
+msgstr "חזרה אל דף הקודם (Backspace)"
msgctxt "HelpBrowser"
msgid "Backspace"
@@ -1485,7 +1491,7 @@ msgstr "קדימה"
msgctxt "HelpBrowser"
msgid "Move to next page (Shift+Backspace)"
-msgstr "עבור לדף הבא (Shift+Backspace)"
+msgstr "מעבר אל הדף הבא (Shift+Backspace)"
msgctxt "HelpBrowser"
msgid "Shift+Backspace"
@@ -1497,7 +1503,7 @@ msgstr "דף בית"
msgctxt "HelpBrowser"
msgid "Move to the Home page (Ctrl+H)"
-msgstr "עבור לדף הבית (Ctrl+H)"
+msgstr "מעבר אל דף הבית (Ctrl+H)"
msgctxt "HelpBrowser"
msgid "Ctrl+H"
@@ -1505,11 +1511,11 @@ msgstr "Ctrl+H"
msgctxt "HelpBrowser"
msgid "Find"
-msgstr "מצא"
+msgstr "מציאה"
msgctxt "HelpBrowser"
msgid "Search for a word or phrase on current page (Ctrl+F)"
-msgstr "חפש מילה או ביטוי בדף הנוכחי (Ctrl+F)"
+msgstr "חיפש עבור מילה או ביטוי בדף הנוכחי (Ctrl+F)"
msgctxt "HelpBrowser"
msgid "Ctrl+F"
@@ -1517,11 +1523,11 @@ msgstr "Ctrl+F"
msgctxt "HelpBrowser"
msgid "Close"
-msgstr "סגור"
+msgstr "סגירה"
msgctxt "HelpBrowser"
msgid "Close Vidalia Help"
-msgstr "סגור את עזרת Vidalia"
+msgstr "סגירת עזרה - Vidalia"
msgctxt "HelpBrowser"
msgid "Esc"
@@ -1529,19 +1535,19 @@ msgstr "Esc"
msgctxt "HelpBrowser"
msgid "Find:"
-msgstr "מצא:"
+msgstr "מציאה:"
msgctxt "HelpBrowser"
msgid "Find Previous"
-msgstr "מצא הבא"
+msgstr "מציאת הבא"
msgctxt "HelpBrowser"
msgid "Find Next"
-msgstr "מצא קודם"
+msgstr "מציאת קודם"
msgctxt "HelpBrowser"
msgid "Case sensitive"
-msgstr "התחשב ב-Case"
+msgstr "התאמת אותיות גדולות/קטנות"
msgctxt "HelpBrowser"
msgid "Whole words only"
@@ -1553,11 +1559,11 @@ msgstr "נושאי עזרה"
msgctxt "HelpBrowser"
msgid "Contents"
-msgstr "תוכן"
+msgstr "תכנים"
msgctxt "HelpBrowser"
msgid "Search"
-msgstr "חפש"
+msgstr "חיפוש"
msgctxt "HelpBrowser"
msgid "Searching for:"
@@ -1569,100 +1575,100 @@ msgstr "מסמכים שנמצאו"
msgctxt "HelpBrowser"
msgid "Error Loading Help Contents:"
-msgstr ""
+msgstr "שגיאה בעת טעינת תכני עזרה:"
msgctxt "HelpTextBrowser"
msgid "Opening External Link"
-msgstr ""
+msgstr "פתיחת קישור חיצוני"
msgctxt "HelpTextBrowser"
msgid ""
"Vidalia can open the link you selected in your default Web browser. If your "
"browser is not currently configured to use Tor then the request will not be "
"anonymous."
-msgstr ""
+msgstr "Vidalia יכול לפתוח את הקישור שבחרת בדפדפן ברירת המחדל שלך. אם הדפדפן אינו מותאם לשימוש ביישום Tor, הבקשה לא תהיה אלמונית."
msgctxt "HelpTextBrowser"
msgid "Do you want Vidalia to open the link in your Web browser?"
-msgstr ""
+msgstr "האם ברצונך שהיישום Vidalia יפתח את הקישור בדפדפן?"
msgctxt "HelpTextBrowser"
msgid "Unable to Open Link"
-msgstr ""
+msgstr "לא ניתן לפתוח את הקישור"
msgctxt "HelpTextBrowser"
msgid ""
"Vidalia was unable to open the selected link in your Web browser. You can "
"still copy the URL and paste it into your browser."
-msgstr ""
+msgstr "Vidalia לא הצליח לפתוח את הקישור בדפדפן. ביכולתך להעתיק את הכתובת אל הדפדפן שלך בצורה ידנית."
msgctxt "HelpTextBrowser"
msgid "Error opening help file:"
-msgstr ""
+msgstr "שגיאה בפתיחת קובץ עזרה:"
msgctxt "LicenseDialog"
msgid "License Information"
-msgstr ""
+msgstr "מידע רישוי"
msgctxt "LicenseDialog"
msgid "License"
-msgstr ""
+msgstr "רישיון"
msgctxt "LicenseDialog"
msgid "Credits"
-msgstr ""
+msgstr "תודות"
msgctxt "LogEvent"
msgid "Debug"
-msgstr "דיבאג"
+msgstr "ניפוי שגיאות"
msgctxt "LogEvent"
msgid "Info"
-msgstr "מידע"
+msgstr "Info"
msgctxt "LogEvent"
msgid "Notice"
-msgstr "שים-לב"
+msgstr "Notice"
msgctxt "LogEvent"
msgid "Warning"
-msgstr "אזהרה"
+msgstr "Warning"
msgctxt "LogEvent"
msgid "Error"
-msgstr "שגיעה"
+msgstr "Error"
msgctxt "LogEvent"
msgid "Unknown"
-msgstr "לא ידוע"
+msgstr "Unknown"
msgctxt "LogTreeItem"
msgid "Debug"
-msgstr ""
+msgstr "ניפוי שגיאות"
msgctxt "LogTreeItem"
msgid "Info"
-msgstr ""
+msgstr "Info"
msgctxt "LogTreeItem"
msgid "Notice"
-msgstr ""
+msgstr "Notice"
msgctxt "LogTreeItem"
msgid "Warning"
-msgstr ""
+msgstr "Warning"
msgctxt "LogTreeItem"
msgid "Error"
-msgstr ""
+msgstr "Error"
msgctxt "LogTreeItem"
msgid "Unknown"
-msgstr ""
+msgstr "Unknown"
msgctxt "MainWindow"
msgid "Start Tor"
-msgstr ""
+msgstr "הפעלת Tor"
msgctxt "MainWindow"
msgid "Exit"
@@ -1670,7 +1676,7 @@ msgstr "יציאה"
msgctxt "MainWindow"
msgid "Bandwidth Graph"
-msgstr "גרף רוחב-פס"
+msgstr "גרף רוחב פס"
msgctxt "MainWindow"
msgid "Message Log"
@@ -1706,147 +1712,147 @@ msgstr "תצוגה"
msgctxt "MainWindow"
msgid "Connecting to a relay directory"
-msgstr ""
+msgstr "מתחבר כעת אל מדור ממסר"
msgctxt "MainWindow"
msgid "Establishing an encrypted directory connection"
-msgstr ""
+msgstr "מקים כעת חיבור ספריות מוצפן"
msgctxt "MainWindow"
msgid "Retrieving network status"
-msgstr ""
+msgstr "מאתר כעת את מצב הרשת"
msgctxt "MainWindow"
msgid "Loading network status"
-msgstr ""
+msgstr "טוען כעת את מצב הרשת"
msgctxt "MainWindow"
msgid "Loading authority certificates"
-msgstr ""
+msgstr "טוען כעת אישורים אמינים"
msgctxt "MainWindow"
msgid "Requesting relay information"
-msgstr ""
+msgstr "מבקש כעת מידע ממסר"
msgctxt "MainWindow"
msgid "Loading relay information"
-msgstr ""
+msgstr "טוען כעת מידע ממסר"
msgctxt "MainWindow"
msgid "Connecting to the Tor network"
-msgstr ""
+msgstr "מתחבר כעת אל רשת Tor"
msgctxt "MainWindow"
msgid "Establishing a Tor circuit"
-msgstr ""
+msgstr "מקים כעת מעגל Tor"
msgctxt "MainWindow"
msgid "Connected to the Tor network!"
-msgstr ""
+msgstr "מחובר לרשת Tor!"
msgctxt "MainWindow"
msgid "miscellaneous"
-msgstr ""
+msgstr "שונות"
msgctxt "MainWindow"
msgid "identity mismatch"
-msgstr ""
+msgstr "זהות אינה תואמת"
msgctxt "MainWindow"
msgid "done"
-msgstr ""
+msgstr "בוצע"
msgctxt "MainWindow"
msgid "connection refused"
-msgstr ""
+msgstr "החיבור נדחה"
msgctxt "MainWindow"
msgid "connection timeout"
-msgstr ""
+msgstr "החיבור התעכב"
msgctxt "MainWindow"
msgid "read/write error"
-msgstr ""
+msgstr "שגיאה בקריאה/כתיבה"
msgctxt "MainWindow"
msgid "no route to host"
-msgstr ""
+msgstr "אין נתיב אל השרת"
msgctxt "MainWindow"
msgid "insufficient resources"
-msgstr ""
+msgstr "משאבים לא מספיקים"
msgctxt "MainWindow"
msgid "unknown"
-msgstr ""
+msgstr "לא ידוע"
msgctxt "MainWindow"
msgid "Tor is not running"
-msgstr "Tor אינו רץ"
+msgstr "Tor אינו מורץ כעת"
msgctxt "MainWindow"
msgid "Tor is shutting down"
-msgstr "Tor בתהליך עצירה"
+msgstr "Tor בתהליך עצירה"
msgctxt "MainWindow"
msgid "Stop Tor"
-msgstr ""
+msgstr "עצירת Tor"
msgctxt "MainWindow"
msgid "Starting the Tor software"
-msgstr ""
+msgstr "מפעיל את Tor כעת"
msgctxt "MainWindow"
msgid "Starting Tor"
-msgstr ""
+msgstr "מפעיל את Tor כעת"
msgctxt "MainWindow"
msgid "Error Starting Tor"
-msgstr "שגיעה בעת התחלת Tor"
+msgstr "שגיאה בעת הפעלת Tor"
msgctxt "MainWindow"
msgid ""
"Vidalia was unable to start Tor. Check your settings to ensure the correct "
"name and location of your Tor executable is specified."
-msgstr "Vidalia לא הצליח להפעיל את Tor. אנא בדוק את ההגדרות וודא שהשם ומיקום קובץ הרצת Tor הינו נכון."
+msgstr "Vidalia לא הצליח להפעיל את Tor. נא לבדוק את ההגדרות ולוודא שהשם ומיקום קובץ הרצת Tor שצוינו אכן תקפים."
msgctxt "MainWindow"
msgid "Connecting to Tor"
-msgstr ""
+msgstr "מתחבר אל Tor כעת"
msgctxt "MainWindow"
msgid "Connection Error"
-msgstr ""
+msgstr "שגיאת חיבור"
msgctxt "MainWindow"
msgid "Relaying is Enabled"
-msgstr "מימסור מופעל"
+msgstr "ממסור מאופשר כעת"
msgctxt "MainWindow"
msgid "Error Shutting Down"
-msgstr ""
+msgstr "שגיאה במהלך כיבוי"
msgctxt "MainWindow"
msgid "Vidalia was unable to stop the Tor software."
-msgstr ""
+msgstr "Vidalia לא מסוגל היה לעצור את היישום Tor."
msgctxt "MainWindow"
msgid "Unexpected Error"
-msgstr ""
+msgstr "שגיאה בלתי צפוייה"
msgctxt "MainWindow"
msgid "Authenticating to Tor"
-msgstr ""
+msgstr "מזדהה מול Tor."
msgctxt "MainWindow"
msgid "Cookie Authentication Required"
-msgstr "אימות \"עוגיה\" דרוש"
+msgstr "אימות עוגייה (Cookie) נדרש"
msgctxt "MainWindow"
msgid ""
"The Tor software requires Vidalia to send the contents of an authentication "
"cookie, but Vidalia was unable to find one."
-msgstr ""
+msgstr "היישום Tor דורש מן Vidalia לשלוח את התכנים של עוגיית אימות, אך Vidalia לא מסוגל היה למצוא עוגייה שכזאת."
msgctxt "MainWindow"
msgid "Would you like to browse for the file 'control_auth_cookie' yourself?"
@@ -1854,35 +1860,35 @@ msgstr "האם ברצונך לציין את המיקום של הקובץ 'contro
msgctxt "MainWindow"
msgid "Data Directory"
-msgstr ""
+msgstr "מדור מידע"
msgctxt "MainWindow"
msgid "Control Cookie (control_auth_cookie)"
-msgstr ""
+msgstr "עוגיית בקרה (control_auth_cookie)"
msgctxt "MainWindow"
msgid "Error Registering for Events"
-msgstr "שגיעה בעת רישום לאירועים"
+msgstr "שגיאה בעת רישום לאירועים"
msgctxt "MainWindow"
msgid ""
"Vidalia was unable to register for some events. Many of Vidalia's features "
"may be unavailable."
-msgstr ""
+msgstr "Vidalia לא מסוגל היה להירשם למספר אירועים. כתוצאה מכך תכונות רבות של Vidalia לא יהיו זמינות."
msgctxt "MainWindow"
msgid "Tor Update Available"
-msgstr "עידכון Tor זמין"
+msgstr "עדכון Tor זמין"
msgctxt "MainWindow"
msgid ""
"The currently installed version of Tor is out of date or no longer "
"recommended. Please visit the Tor website to download the latest version."
-msgstr "גירסת Tor הנוכחית מיושנת ולא מומלצת יותר לשימוש. אנא בקר באתר Tor על מנת להוריד את הגירסה האחרונה."
+msgstr "גרסת Tor הנוכחית מיושנת ולא מומלצת יותר לשימוש. אנא בקר באתר Tor על מנת להוריד את הגרסה האחרונה."
msgctxt "MainWindow"
msgid "Tor website: %1"
-msgstr "אתר Tor: %1"
+msgstr "אתר Tor: %1"
msgctxt "MainWindow"
msgid ""
@@ -1892,15 +1898,15 @@ msgstr "כל החיבורים הבאים יראו שונים מהחיבורים
msgctxt "MainWindow"
msgid "Failed to Create New Identity"
-msgstr "כשלון ביצירת זהות חדשה"
+msgstr "כשל בעת יצירת זהות חדשה"
msgctxt "MainWindow"
msgid "Port Forwarding Failed"
-msgstr ""
+msgstr "כשל ב-Port Forwarding"
msgctxt "MainWindow"
msgid "Vidalia was unable to configure automatic port forwarding."
-msgstr ""
+msgstr "Vidalia לא מסוגל היה להתקין port forwarding באופן אוטומטי."
msgctxt "MainWindow"
msgid "Vidalia Control Panel"
@@ -1912,95 +1918,95 @@ msgstr "מצב"
msgctxt "MainWindow"
msgid "Password Reset Failed"
-msgstr ""
+msgstr "כשל באתחול סיסמה"
msgctxt "MainWindow"
msgid ""
"The currently installed version of Tor is out of date or no longer "
"recommended."
-msgstr "גירסת Tor הנוכחית מיושנת ולא מומלצת יותר לשימוש. אנא בקר באתר Tor על מנת להוריד את הגירסה האחרונה."
+msgstr "גרסת Tor שמותקנת כעת הינה מיושנת ולא מומלצת עוד לשימוש."
msgctxt "MainWindow"
msgid ""
"Would you like to check if a newer package is available for installation?"
-msgstr ""
+msgstr "האם ברצונך לבדוק אם חבילות חדשות יותר זמינות להתקנה?"
msgctxt "MainWindow"
msgid "Potentially Unsafe Connection"
-msgstr ""
+msgstr "חיבור לא בטוח פוטנציאלית"
msgctxt "MainWindow"
msgid ""
"Tor has automatically closed your connection in order to protect your "
"anonymity."
-msgstr ""
+msgstr "Tor סגר אוטומטית את החיבור על מנת לשמור על האלמוניות שלך."
msgctxt "MainWindow"
msgid "Update Failed"
-msgstr "עידכון Tor זמין"
+msgstr "כשל בעדכון Tor"
msgctxt "MainWindow"
msgid "Your software is up to date"
-msgstr ""
+msgstr "התוכנה שברשותך הינה מעודכנת"
msgctxt "MainWindow"
msgid ""
"There are no new Tor software packages available for your computer at this "
"time."
-msgstr ""
+msgstr "לא קיימות חבילות תוכנה חדשות שזמינות למחשבך כרגע."
msgctxt "MainWindow"
msgid "Installation Failed"
-msgstr ""
+msgstr "ההתקנה נכשלה"
msgctxt "MainWindow"
msgid "Vidalia was unable to install your software updates."
-msgstr "Vidalia לא הצליח להתקין את שירות Tor."
+msgstr "Vidalia לא הצליח להתקין את עדכוני התוכנה."
msgctxt "MainWindow"
msgid "The following error occurred:"
-msgstr ""
+msgstr "השגיאות הבאות אירעו:"
msgctxt "MainWindow"
msgid ""
"Anything sent over this connection could be monitored. Please check your "
"application's configuration and use only encrypted protocols, such as SSL, "
"if possible."
-msgstr ""
+msgstr "כל מה שנשלח דרך חיבור זה עלול להימצא תחת האזנה. נא לבדוק את תצורת היישום שלך בניסיון לעשות שימוש בפרוטוקולים מוצפנים בלבד, כגון SSL, במידה וניתן."
msgctxt "MainWindow"
msgid "toolBar"
-msgstr ""
+msgstr "סרגל כלים"
msgctxt "MainWindow"
msgid "Restart"
-msgstr ""
+msgstr "אתחול"
msgctxt "MainWindow"
msgid "Reload Tor's config"
-msgstr ""
+msgstr "טעינה מחודשת של תצורת Tor"
msgctxt "MainWindow"
msgid "Actions"
-msgstr ""
+msgstr "פעולות"
msgctxt "MainWindow"
msgid "Bootstrapping torrc from %1 to %2"
-msgstr ""
+msgstr "מחלץ כעת את torrc מן %1 אל %2"
msgctxt "MainWindow"
msgid ""
"Vidalia tried to restart Tor, but was not able to. Please check your Task "
"Manager to ensure there are no other Tor processes running."
-msgstr ""
+msgstr "Vidalia ניסה לאתחל את Tor, אך לא היה מסוגל לכך. נא לבדוק באמצעות מנהל המשימות שלך ולוודא שלא קיימים עוד תהליכים פעילים של Tor."
msgctxt "MainWindow"
msgid "Error reloading configuration"
-msgstr ""
+msgstr "שגיאה בטעינה מחודשת של תצורה"
msgctxt "MainWindow"
msgid "Vidalia was unable to reload Tor's configuration."
-msgstr ""
+msgstr "Vidalia לא הצליח לטעון מחדש את התצורה של Tor."
msgctxt "MainWindow"
msgid "No dettached tabs"
@@ -2008,7 +2014,7 @@ msgstr ""
msgctxt "MainWindow"
msgid "Panic is enabled"
-msgstr ""
+msgstr "בהלה מאופשרת כעת"
msgctxt "MainWindow"
msgid ""
@@ -2018,15 +2024,15 @@ msgstr ""
msgctxt "MainWindow"
msgid "New Circuit"
-msgstr ""
+msgstr "מעגל חדש"
msgctxt "MainWindow"
msgid "Debug output"
-msgstr ""
+msgstr "פלט ניפוי שגיאות"
msgctxt "MainWindow"
msgid "Panic!"
-msgstr ""
+msgstr "בהלה!"
msgctxt "MainWindow"
msgid "Reattach tabs"
@@ -2034,17 +2040,17 @@ msgstr ""
msgctxt "MainWindow"
msgid "Plugins"
-msgstr ""
+msgstr "תוספים"
msgctxt "MainWindow"
msgid "Your clock is wrong"
-msgstr ""
+msgstr "שעונך שגוי"
msgctxt "MainWindow"
msgid ""
"Your computer's clock is wrong, tor may not work as expected. Please check "
"the Message Log for more information."
-msgstr ""
+msgstr "שעון מחשבך הינו שגוי, Tor עלול שלא לעבוד כצפוי. נא לבחון את יומן ההודעות למידע נוסף."
msgctxt "MainWindow"
msgid ""
@@ -2052,68 +2058,68 @@ msgid ""
"\n"
"Here's the last error message:\n"
" %2"
-msgstr ""
+msgstr "Vidalia לא מסוגל להבין כיצד לדבר אל Tor מכיוון שאין ביכולתו לגשת אל קובץ זה: %1\n\nהנה הודעות השגיאה האחרונות:\n%2"
msgctxt "MainWindow"
msgid ""
"It seems Tor has stopped running since Vidalia started it.\n"
"\n"
"See the Advanced Message Log for more information."
-msgstr ""
+msgstr "נראה שהיישום Tor פסק מלפעול מאחר שהיישום Vidalia התחיל אותו.\n\nראו יומן הודעות מתקדם למידע נוסף."
msgctxt "MainWindow"
msgid ""
"You are currently running a relay. Terminating your relay will interrupt any open connections from clients.\n"
"\n"
"Would you like to shutdown gracefully and give clients time to find a new relay?"
-msgstr ""
+msgstr "קיים ממסר פעיל כעת. עצירת הממסר תפריע לחיבורים של משתמשים המחוברים דרכך.\n\nהאם ברצונך לעצור את הממסר בהדרגתיות, ובכך לאפשר למשתמשים המחוברים זה עתה לאתר ממסר אחר?"
msgctxt "MainWindow"
msgid ""
"Vidalia detected that the Tor software exited unexpectedly.\n"
"\n"
"Please check the message log for recent warning or error messages."
-msgstr ""
+msgstr "Vidalia הבחין כי היישום Tor נסגר באופן פתאומי.\n\nנא לבדוק את יומן ההודעות עבור הודעות אזהרה או שגיאה."
msgctxt "MainWindow"
msgid "failed (%1)"
-msgstr ""
+msgstr "כשל (%1)"
msgctxt "MainWindow"
msgid "(probably Telnet)"
-msgstr ""
+msgstr "(ייתכן Telnet)"
msgctxt "MainWindow"
msgid "(probably an email client)"
-msgstr ""
+msgstr "(ייתכן לקוח דוא״ל)"
msgctxt "MainWindow"
msgid ""
"One of your applications %1 appears to be making a potentially unencrypted "
"and unsafe connection to port %2."
-msgstr ""
+msgstr "נראה שיישום מן יישומך %1 מקיים באופן פוטנציאלי חיבור לא מוצפן ולא בטוח אל יציאה %2."
msgctxt "MainWindow"
msgid ""
"Your relay is shutting down.\n"
"Click 'Stop' again to stop your relay now."
-msgstr ""
+msgstr "ממסרך מתכבה כעת.\nניתן ללחוץ על 'עצור' כדי לעצורו כעת."
msgctxt "MessageLog"
msgid "Error Setting Filter"
-msgstr "שגעיה בעת קביעת סינון"
+msgstr "שגיאה בהגדרת סינון"
msgctxt "MessageLog"
msgid "Vidalia was unable to register for Tor's log events."
-msgstr "Vidalia לא הצליח להרשם ליומן האירועים של Tor."
+msgstr "Vidalia לא הצליח להירשם ליומן האירועים של Tor."
msgctxt "MessageLog"
msgid "Error Opening Log File"
-msgstr "שגיעה באת פתיחת קובץ יומן"
+msgstr "שגיאה בעת פתיחת קובץ יומן"
msgctxt "MessageLog"
msgid "Vidalia was unable to open the specified log file."
-msgstr "Vidalia לא הצליח לפתוח את קובץ היומן הנבחר."
+msgstr "Vidalia לא הצליח לפתוח את קובץ היומן שצוין."
msgctxt "MessageLog"
msgid "Log Filename Required"
@@ -2125,15 +2131,15 @@ msgstr "עליך להכניס שם קובץ על מנת לשמור הודעות
msgctxt "MessageLog"
msgid "Select Log File"
-msgstr "בחר קובץ יומן"
+msgstr "בחירת קובץ יומן"
msgctxt "MessageLog"
msgid "Save Log Messages"
-msgstr "שמור הודעות יומן"
+msgstr "שמירת הודעות יומן"
msgctxt "MessageLog"
msgid "Text Files (*.txt)"
-msgstr "קבצי טקסט (*.txt)"
+msgstr "קבצי טקסט (*.txt)"
msgctxt "MessageLog"
msgid "Vidalia"
@@ -2141,11 +2147,11 @@ msgstr "Vidalia"
msgctxt "MessageLog"
msgid "Find in Message Log"
-msgstr "חפש ביומן הודעות"
+msgstr "חיפוש ביומן הודעות"
msgctxt "MessageLog"
msgid "Find:"
-msgstr "חפש:"
+msgstr "חיפוש:"
msgctxt "MessageLog"
msgid "Not Found"
@@ -2173,27 +2179,27 @@ msgstr "גודל היסטוריה..."
msgctxt "MessageLog"
msgid "Set maximum number of messages to display"
-msgstr "קבע את מספר ההודעות המירבי להצגה"
+msgstr "הגדרת מספר ההודעות המירבי להצגה"
msgctxt "MessageLog"
msgid "Clear"
-msgstr "נקה"
+msgstr "איפוס"
msgctxt "MessageLog"
msgid "Clear all messages from the Message Log (Ctrl+E)"
-msgstr "נקה את כל ההודעות מיומן ההודעות (Ctrl+E)"
+msgstr "מחיקת כל ההודעות מן יומן ההודעות (Ctrl+E)"
msgctxt "MessageLog"
msgid "Ctrl+E"
-msgstr "(Ctrl+E)"
+msgstr "Ctrl+E"
msgctxt "MessageLog"
msgid "Copy"
-msgstr "העתק"
+msgstr "העתקה"
msgctxt "MessageLog"
msgid "Copy the selected messages to the clipboard (Ctrl+C)"
-msgstr "העתק את ההודעות הנבחרות ללוח-העריכה (Ctrl+C)"
+msgstr "העתקת ההודעות הנבחרות אל לוח־הגזירה (Ctrl+C)"
msgctxt "MessageLog"
msgid "Ctrl+C"
@@ -2205,7 +2211,7 @@ msgstr "בחר הכל"
msgctxt "MessageLog"
msgid "Select all messages (Ctrl+A)"
-msgstr "בחר את כל ההודעות (Ctrl+A)"
+msgstr "בחירת כל ההודעות (Ctrl+A)"
msgctxt "MessageLog"
msgid "Ctrl+A"
@@ -2217,15 +2223,15 @@ msgstr "שמור הכל"
msgctxt "MessageLog"
msgid "Save all messages to a file"
-msgstr "שמור את כל ההודעות לקובץ"
+msgstr "שמירת כל ההודעות אל קובץ"
msgctxt "MessageLog"
msgid "Save Selected"
-msgstr "שמור הודעות נבחרות"
+msgstr "שמירת הודעות הנבחרות"
msgctxt "MessageLog"
msgid "Save selected messages to a file"
-msgstr "שמור את ההודעות הנבחרות לקובץ"
+msgstr "שמירת הודעות נבחרות אל קובץ"
msgctxt "MessageLog"
msgid "Settings"
@@ -2233,7 +2239,7 @@ msgstr "הגדרות"
msgctxt "MessageLog"
msgid "Adjust Message Log Settings"
-msgstr "שנה הגדרות יומן הודעות"
+msgstr "התאמת הגדרות יומן הודעות"
msgctxt "MessageLog"
msgid "Ctrl+T"
@@ -2245,7 +2251,7 @@ msgstr "עזרה"
msgctxt "MessageLog"
msgid "Show the help browser"
-msgstr "הצג את דפדפן העזרה"
+msgstr "הצגת דפדפן העזרה"
msgctxt "MessageLog"
msgid "F1"
@@ -2253,11 +2259,11 @@ msgstr "F1"
msgctxt "MessageLog"
msgid "Close"
-msgstr "סגור"
+msgstr "סגירה"
msgctxt "MessageLog"
msgid "Close the Message Log"
-msgstr "סגור את יומן ההודעות"
+msgstr "סגירת יומן ההודעות"
msgctxt "MessageLog"
msgid "Esc"
@@ -2265,11 +2271,11 @@ msgstr "Esc"
msgctxt "MessageLog"
msgid "Find"
-msgstr "מצא"
+msgstr "מציאה"
msgctxt "MessageLog"
msgid "Find all messages containing the search text (Ctrl+F)"
-msgstr "מצא את כל ההודעות המכילות את טקסט החיפוש (Ctrl+F)"
+msgstr "מציאת את כל ההודעות המכילות את תמליל החיפוש (Ctrl+F)"
msgctxt "MessageLog"
msgid "Ctrl+F"
@@ -2289,15 +2295,15 @@ msgstr "הודעה"
msgctxt "MessageLog"
msgid "Saves the current Message Log settings"
-msgstr "שומר את ההגדרות הנוכחיות של יומן ההודעות"
+msgstr "שמירת הגדרות יומן ההודעות הנוכחיות"
msgctxt "MessageLog"
msgid "Save Settings"
-msgstr "שמור הגדרות"
+msgstr "שמירת הגדרות"
msgctxt "MessageLog"
msgid "Cancels changes made to settings"
-msgstr "מבטל את השינויים שנעשו"
+msgstr "ביטול השינויים שנעשו להגדרות"
msgctxt "MessageLog"
msgid "Cancel"
@@ -2309,23 +2315,23 @@ msgstr "מסנן הודעות"
msgctxt "MessageLog"
msgid "Error"
-msgstr "שגיעה"
+msgstr "Error"
msgctxt "MessageLog"
msgid "Warning"
-msgstr "אזהרה"
+msgstr "Warning"
msgctxt "MessageLog"
msgid "Notice"
-msgstr "שים-לב"
+msgstr "Notice"
msgctxt "MessageLog"
msgid "Info"
-msgstr "מידע"
+msgstr "Info"
msgctxt "MessageLog"
msgid "Debug"
-msgstr "דיבאג"
+msgstr "Debug"
msgctxt "MessageLog"
msgid "Message Log History"
@@ -2341,35 +2347,35 @@ msgstr "הודעות"
msgctxt "MessageLog"
msgid "Browse"
-msgstr "חפש"
+msgstr "עיון"
msgctxt "MessageLog"
msgid "Enable automatically saving all new log messages to a file"
-msgstr "אפשר שמירה אוטומטית של כל ההודעות החדשות לקובץ"
+msgstr "אפשור שמירה אוטומטית של כל ההודעות החדשות אל קובץ"
msgctxt "MessageLog"
msgid "Automatically save new log messages to a file"
-msgstr "שמוראוטומטית הודעות חדשות לקובץ"
+msgstr "שמירה אוטומטית של הודעות יומן חדשות לקובץ"
msgctxt "MessageLog"
msgid "toolbar"
-msgstr ""
+msgstr "סרגל כלים"
msgctxt "MessageLog"
msgid "Always Save New Log Messages"
-msgstr "שמור תמיד הודעות יומן חדשות"
+msgstr "שמירה תמידית של הודעות יומן חדשות"
msgctxt "MessageLog"
msgid ""
"Messages that appear when something has \n"
"gone very wrong and Tor cannot proceed."
-msgstr ""
+msgstr "הודעות המופיעות כאשר משהו\nהשתבש מאוד ואין ביכולתו של Tor להמשיך."
msgctxt "MessageLog"
msgid ""
"Messages that only appear when \n"
"something has gone wrong with Tor."
-msgstr ""
+msgstr "הודעות המופיעות כאשר משהו\nהשתבש עם Tor."
msgctxt "MessageLog"
msgid ""
@@ -2377,34 +2383,34 @@ msgid ""
"during normal Tor operation and are \n"
"not considered errors, but you may \n"
"care about."
-msgstr ""
+msgstr "הודעות המופיעות לעיתים רחוקות\nבמהלך פעילות שגרתית של Tor\nואינן נחשבות לתקלות, אולם ייתכן\nשאלו יעניינו אותך."
msgctxt "MessageLog"
msgid ""
"Messages that appear frequently \n"
"during normal Tor operation."
-msgstr ""
+msgstr "הודעות המופיעות לעתים קרובות במהלך פעילות שגרתית של Tor."
msgctxt "MessageLog"
msgid ""
"Hyper-verbose messages primarily of \n"
"interest to Tor developers."
-msgstr ""
+msgstr "הודעות היפר-מגובבות המיועדות \nבעיקר אל המפתחים של Tor."
msgctxt "MessageLog"
msgid ""
"Cannot write file %1\n"
"\n"
"%2."
-msgstr ""
+msgstr "לא ניתן לכתוב את הקובץ %1\n\n%2."
msgctxt "NetViewer"
msgid "Refresh"
-msgstr "עדכן"
+msgstr "רענון"
msgctxt "NetViewer"
msgid "Refresh the list of Tor relays and connections"
-msgstr "עדכן את רשימת הנתבים והחיבורים של Tor"
+msgstr "עדכון רשימת הממסרים והחיבורים של Tor"
msgctxt "NetViewer"
msgid "Ctrl+R"
@@ -2416,11 +2422,11 @@ msgstr "עזרה"
msgctxt "NetViewer"
msgid "Show the network map help"
-msgstr "הצג עזרה על מפת הרשת"
+msgstr "הצגת העזרה של מפת רשת"
msgctxt "NetViewer"
msgid "Show network map help"
-msgstr "הצג עזרה על מפת רשת"
+msgstr "הצגת עזרת מפת רשת"
msgctxt "NetViewer"
msgid "F1"
@@ -2428,11 +2434,11 @@ msgstr "F1"
msgctxt "NetViewer"
msgid "Close"
-msgstr "סגור"
+msgstr "סגירה"
msgctxt "NetViewer"
msgid "Close the network map"
-msgstr "סגור מפת רשת"
+msgstr "סגירת מפת הרשת"
msgctxt "NetViewer"
msgid "Esc"
@@ -2440,11 +2446,11 @@ msgstr "Esc"
msgctxt "NetViewer"
msgid "Zoom In"
-msgstr "קרב"
+msgstr "הקרבה"
msgctxt "NetViewer"
msgid "Zoom in on the network map"
-msgstr "קרב את מפת הרשת"
+msgstr "הקרבת מפת הרשת"
msgctxt "NetViewer"
msgid "+"
@@ -2452,11 +2458,11 @@ msgstr "+"
msgctxt "NetViewer"
msgid "Zoom Out"
-msgstr "הרחק"
+msgstr "הרחקה"
msgctxt "NetViewer"
msgid "Zoom out on the network map"
-msgstr "הרחק את מפת הרשת"
+msgstr "הרחקת מפת הרשת"
msgctxt "NetViewer"
msgid "-"
@@ -2464,11 +2470,11 @@ msgstr "-"
msgctxt "NetViewer"
msgid "Zoom To Fit"
-msgstr "הצג הכל"
+msgstr "תצוגה שלמה"
msgctxt "NetViewer"
msgid "Zooms to fit all currently displayed circuits"
-msgstr "קרב להצגת כל המעגלים המוצגים"
+msgstr "התחמה לכל המעגלים המוצגים"
msgctxt "NetViewer"
msgid "Ctrl+Z"
@@ -2476,11 +2482,11 @@ msgstr "Ctrl+Z"
msgctxt "NetViewer"
msgid "Relay Not Found"
-msgstr "קובץ לא נמצא"
+msgstr "ממסר לא נמצא"
msgctxt "NetViewer"
msgid "No details on the selected relay are available."
-msgstr ""
+msgstr "אין פרטים זמינים על הממסר הנבחר"
msgctxt "NetViewer"
msgid "Unknown"
@@ -2488,11 +2494,11 @@ msgstr "לא ידוע"
msgctxt "NetViewer"
msgid "Full Screen"
-msgstr ""
+msgstr "מסך־מלא"
msgctxt "NetViewer"
msgid "View the network map as a full screen window"
-msgstr ""
+msgstr "הצגת מפת הרשת במסך־מלא"
msgctxt "NetViewer"
msgid "Ctrl+F"
@@ -2500,23 +2506,23 @@ msgstr "Ctrl+F"
msgctxt "NetViewer"
msgid "Network Map"
-msgstr ""
+msgstr "מפת רשת"
msgctxt "NetViewer"
msgid "Relay"
-msgstr ""
+msgstr "ממסור"
msgctxt "NetViewer"
msgid "Connection"
-msgstr ""
+msgstr "חיבור"
msgctxt "NetViewer"
msgid "Status"
-msgstr ""
+msgstr "מצב"
msgctxt "NetViewer"
msgid "<a href=\"server.offline\">Why is my relay offline?</a>"
-msgstr ""
+msgstr "<a href=\"server.offline\">מדוע ממסרי אינו מקוון?</a>"
msgctxt "NetViewer"
msgid ""
@@ -2526,43 +2532,43 @@ msgstr ""
msgctxt "NetViewer"
msgid "Exit circuits"
-msgstr ""
+msgstr "יציאה מן מעגלים"
msgctxt "NetViewer"
msgid "Internal circuits"
-msgstr ""
+msgstr "מעגלים פנימיים"
msgctxt "NetViewer"
msgid "Hidden Service circuits"
-msgstr ""
+msgstr "שירותי מעגלים מוסתרים"
msgctxt "NetworkPage"
msgid "Copy (Ctrl+C)"
-msgstr "העתק (Ctrl+C)"
+msgstr "העתקה (Ctrl+C)"
msgctxt "NetworkPage"
msgid ""
"You must specify both an IP address or hostname and a port number to "
"configure Tor to use a proxy to access the Internet."
-msgstr "עליך לציין כתובת IP או שם ומספר פורט על מנת להגדיר את Tor לשימוש בשרת פרוקסי."
+msgstr "עליך לציין כתובת IP או שם מארח וגם מספר יציאה בכדי להגדיר את Tor לשימוש בשרת פרוקסי כדי לעשות שימוש בפרוקסי כדי להיכנס אל האינטרנט."
msgctxt "NetworkPage"
msgid ""
"You must specify one or more ports to which your firewall allows you to "
"connect."
-msgstr "עליך לציין פורט אחד או יותר שחומת-האש שלך מאפשרת לך להתחבר אליהם."
+msgstr "עליך לציין יציאה אחת או יותר שחומת האש שלך מרשה לך להתחבר אליהן."
msgctxt "NetworkPage"
msgid "'%1' is not a valid port number."
-msgstr "'%1' אינו מספר פורט חוקי."
+msgstr "'%1' אינו מספר יציאה תקף."
msgctxt "NetworkPage"
msgid "Check if your local network requires a proxy to access the Internet"
-msgstr ""
+msgstr "בודק אם הרשת המקומית זקוקה לפרוקסי על מנת לגשת אל האינטרנט"
msgctxt "NetworkPage"
msgid "I use a proxy to access the Internet"
-msgstr "אני משתמש בשרת פרוקסי על מנת לגשת לאינטרנט"
+msgstr "אני משתמש בפרוקסי בכדי לגשת אל האינטרנט"
msgctxt "NetworkPage"
msgid "Proxy Settings"
@@ -2578,15 +2584,15 @@ msgstr "סיסמה:"
msgctxt "NetworkPage"
msgid "Port:"
-msgstr "פורט:"
+msgstr "יציאה:"
msgctxt "NetworkPage"
msgid "Check to only connect to relays using ports allowed by your firewall"
-msgstr ""
+msgstr "ברצוני להתחבר אל ממסרים באמצעות יציאות מסוימות שמורשות על ידי חומת האש שלי"
msgctxt "NetworkPage"
msgid "My firewall only lets me connect to certain ports"
-msgstr "חומת האש שלי מאפשרת לי להתחבר לפורטים מסוימים"
+msgstr "חומת האש שלי מאפשרת לי להתחבר אל יציאות מסוימות"
msgctxt "NetworkPage"
msgid "Firewall Settings"
@@ -2594,7 +2600,7 @@ msgstr "הגדרות חומת אש"
msgctxt "NetworkPage"
msgid "Allowed Ports:"
-msgstr "פורטים מורשים:"
+msgstr "יציאות מורשות:"
msgctxt "NetworkPage"
msgid "80, 443"
@@ -2604,7 +2610,7 @@ msgctxt "NetworkPage"
msgid ""
"Check to encrypt directory requests and, optionally, use bridge relays to "
"access the Tor network"
-msgstr ""
+msgstr "בחר/י באפשרות זו כדי להצפין בקשות מדור וגם, אפשרי, לעשות שימוש בגשר ממסרים כדי לגשת אל רשת Tor"
msgctxt "NetworkPage"
msgid "My ISP blocks connections to the Tor network"
@@ -2612,69 +2618,69 @@ msgstr "ספק האינטרנט שלי חוסם חיבורים לרשת Tor"
msgctxt "NetworkPage"
msgid "Bridge Settings"
-msgstr ""
+msgstr "הגדרות גשר"
msgctxt "NetworkPage"
msgid "Add a Bridge:"
-msgstr "הוסף גשר:"
+msgstr "הוספת גשר:"
msgctxt "NetworkPage"
msgid "Remove the selected bridges from the list"
-msgstr "הסר את הגשרים הנבחרים מהרשימה"
+msgstr "הסרת הגשרים הנבחרים מן הרשימה"
msgctxt "NetworkPage"
msgid "Copy the selected bridges to the clipboard"
-msgstr "העתק את הגשרים הנבחרים ללוח-העריכה"
+msgstr "העתקת הגשרים הנבחרים אל לוח-הגזירה"
msgctxt "NetworkPage"
msgid "Find Bridges Now"
-msgstr ""
+msgstr "חפש גשר עכשיו"
msgctxt "NetworkPage"
msgid "<a href=\"bridges.finding\">How else can I find bridges?</a>"
-msgstr ""
+msgstr "<a href=\"bridges.finding\">איך עוד ביכולתי למצוא גשרים?</a>"
msgctxt "NetworkPage"
msgid "<a href=\"bridges.finding\">How can I find bridges?</a>"
-msgstr ""
+msgstr "<a href=\"bridges.finding\">כיצד ביכולתי למצוא גשרים?</a>"
msgctxt "NetworkPage"
msgid ""
"No new bridges are currently available. You can either wait a while and try "
"again, or try another method of finding new bridges."
-msgstr ""
+msgstr "גשרים חדשים אינם זמינים כעת. ניתן להמתין לזמן מה ולנסות שוב, או לנסות דרך אחרת לאיתור גשרים חדשים."
msgctxt "NetworkPage"
msgid "Click Help to see other methods of finding new bridges."
-msgstr ""
+msgstr "לחצו על עזרה לקבלת מידע נוסף על דרכים שונות למציאת גשרים חדשים."
msgctxt "NetworkPage"
msgid "Address:"
-msgstr ""
+msgstr "כתובת:"
msgctxt "NetworkPage"
msgid "Type:"
-msgstr ""
+msgstr "סוג:"
msgctxt "NetworkPage"
msgid "You must select the proxy type."
-msgstr ""
+msgstr "עליך לבחור את סוג הפרוקסי."
msgctxt "NetworkPage"
msgid "SOCKS 4"
-msgstr ""
+msgstr "SOCKS 4"
msgctxt "NetworkPage"
msgid "SOCKS 5"
-msgstr ""
+msgstr "SOCKS 5"
msgctxt "NetworkPage"
msgid "HTTP / HTTPS"
-msgstr ""
+msgstr "HTTP / HTTPS"
msgctxt "NetworkPage"
msgid "You must specify one or more bridges."
-msgstr ""
+msgstr "עליך לציין את גשר אחד או יותר."
msgctxt "PluginEngine"
msgid "WARNING: %1 doesn't have an info file."
@@ -2682,39 +2688,39 @@ msgstr ""
msgctxt "PluginWrapper"
msgid "%1: Processing..."
-msgstr ""
+msgstr "%1: מעבד כעת..."
msgctxt "PluginWrapper"
msgid ""
"%4: ERROR: Line: %1 - Column: %2\n"
"%3"
-msgstr ""
+msgstr "%4: שגיאה: שורה: %1 - טור: %2\n%3"
msgctxt "PluginWrapper"
msgid "%1: Error opening file %2"
-msgstr ""
+msgstr "%1: שגיאה בפתיחת קובץ %2"
msgctxt "PluginWrapper"
msgid "%2: ERROR: Cannot open %1"
-msgstr ""
+msgstr "%2: שגיאה: לא ניתן לפתוח את %1"
msgctxt "PluginWrapper"
msgid "%2: ERROR: Parsing %1"
-msgstr ""
+msgstr "%2: שגיאה: ניתוח %1"
msgctxt "PluginWrapper"
msgid ""
"Line: %1 - Column: %2\n"
"Message: %3"
-msgstr ""
+msgstr "שורה: %1 - טור: %2\nהודעה: %3"
msgctxt "PluginWrapper"
msgid "%1: Starting..."
-msgstr ""
+msgstr "%1: מתחיל כעת..."
msgctxt "PluginWrapper"
msgid "%1: Stoping..."
-msgstr ""
+msgstr "%1: מפסיק כעת..."
msgctxt "PluginWrapper"
msgid "%1: WARNING: doesn't have a GUI, and buildGUI() was called"
@@ -2728,11 +2734,11 @@ msgstr ""
msgctxt "PluginWrapper"
msgid "*** Backtrace:"
-msgstr ""
+msgstr "*** Backtrace:"
msgctxt "PluginWrapper"
msgid "(untitled)"
-msgstr ""
+msgstr "(ללא כותרת)"
msgctxt "PluginWrapper"
msgid "Error: buildGUI() failed for plugin %1"
@@ -2758,7 +2764,7 @@ msgctxt "QObject"
msgid ""
"Failed to set %1:\n"
"Reason: %2"
-msgstr ""
+msgstr "כשל בהגדרת %1:\nסיבה: %2"
msgctxt "QObject"
msgid ""
@@ -2774,7 +2780,7 @@ msgstr ""
msgctxt "QObject"
msgid "Vidalia was unable to save the options to the torrc file."
-msgstr ""
+msgstr "Vidalia לא מסוגל היה לשמור את האפשרויות אל הקובץ torrc."
msgctxt "RouterDescriptor"
msgid "Online"
@@ -2786,7 +2792,7 @@ msgstr "ישן"
msgctxt "RouterDescriptor"
msgid "Offline"
-msgstr "לא מחובר"
+msgstr "לא מקוון"
msgctxt "RouterDescriptorView"
msgid "Location:"
@@ -2802,11 +2808,11 @@ msgstr "מערכת:"
msgctxt "RouterDescriptorView"
msgid "Bandwidth:"
-msgstr "רוחב-פס:"
+msgstr "רוחב־פס:"
msgctxt "RouterDescriptorView"
msgid "Uptime:"
-msgstr "זמן:"
+msgstr "זמן פעילות:"
msgctxt "RouterDescriptorView"
msgid "Last Updated:"
@@ -2814,7 +2820,7 @@ msgstr "עודכן לאחרונה:"
msgctxt "RouterDescriptorView"
msgid "Copy"
-msgstr "העתק"
+msgstr "העתקה"
msgctxt "RouterInfoDialog"
msgid "Hibernating"
@@ -2822,11 +2828,11 @@ msgstr "ישן"
msgctxt "RouterInfoDialog"
msgid "Online"
-msgstr "מחובר"
+msgstr "מקוון"
msgctxt "RouterInfoDialog"
msgid "Offline"
-msgstr "לא מחובר"
+msgstr "לא מקוון"
msgctxt "RouterInfoDialog"
msgid "Unknown"
@@ -2834,11 +2840,11 @@ msgstr "לא ידוע"
msgctxt "RouterInfoDialog"
msgid "Relay Details"
-msgstr ""
+msgstr "פרטי ממסר"
msgctxt "RouterInfoDialog"
msgid "Summary"
-msgstr ""
+msgstr "סיכום"
msgctxt "RouterInfoDialog"
msgid "Name:"
@@ -2862,7 +2868,7 @@ msgstr "מערכת:"
msgctxt "RouterInfoDialog"
msgid "Bandwidth:"
-msgstr "רוחב-פס:"
+msgstr "רוחב־פס:"
msgctxt "RouterInfoDialog"
msgid "Uptime:"
@@ -2878,11 +2884,11 @@ msgstr "עודכן לאחרונה:"
msgctxt "RouterInfoDialog"
msgid "Descriptor"
-msgstr ""
+msgstr "מתאר"
msgctxt "RouterListItem"
msgid "Offline"
-msgstr "לא מחובר"
+msgstr "לא מקוון"
msgctxt "RouterListItem"
msgid "Hibernating"
@@ -2890,87 +2896,87 @@ msgstr "ישן"
msgctxt "RouterListItem"
msgid "%1 KB/s"
-msgstr "%1 KB/s"
+msgstr "%1 ק״ב/ש"
msgctxt "RouterListWidget"
msgid "Relay"
-msgstr "מימסר"
+msgstr "ממסור"
msgctxt "RouterListWidget"
msgid "Zoom to Relay"
-msgstr "קרב למימסר"
+msgstr "התקרבות אל ממסר"
msgctxt "RouterListWidget"
msgid "%1 relays online"
-msgstr ""
+msgstr "%1 ממסרים ממקוונים"
msgctxt "RouterListWidget"
msgid "Copy"
-msgstr "העתק"
+msgstr "העתקה"
msgctxt "RouterListWidget"
msgid "Nickname"
-msgstr ""
+msgstr "כינוי"
msgctxt "RouterListWidget"
msgid "Fingerprint"
-msgstr ""
+msgstr "טביעת אצבע"
msgctxt "ServerPage"
msgid "Bridge Support Unavailable"
-msgstr "תמיכה בגשרים לא זמינה"
+msgstr "תמיכת גשרים לא זמינה"
msgctxt "ServerPage"
msgid ""
"You have configured Tor to act as a bridge relay for censored users, but "
"your version of Tor does not support bridges."
-msgstr "הגדרת את Tor לשמש בגשר למשתמשים מצונזרים, אבל גירסת Tor שלך לא תומכת בגשרים."
+msgstr "הגדרת Tor לשמש כגשר ממסר עבור משתמשים מצונזרים, ברם גרסת היישום Tor שברשותך לא תומכת בגשרים."
msgctxt "ServerPage"
msgid ""
"Please upgrade your Tor software or configure Tor to act as a normal Tor "
"relay."
-msgstr "אנא עדכן את Tor או הגדרת את Tor לשמש כמימסר Tor רגיל."
+msgstr "נא לעדכן את Tor או להגדיר את Tor לשמש כממסר Tor רגיל."
msgctxt "ServerPage"
msgid "Your bridge relay is not running."
-msgstr "הגשר שלך לא רץ."
+msgstr "גשר ממסרך אינו מורץ כעת."
msgctxt "ServerPage"
msgid "You must specify at least a relay nickname and port."
-msgstr "עליך לציין לפחות כינוי ופורט מימסר."
+msgstr "עליך לציין לפחות כינוי ויציאת ממסור."
msgctxt "ServerPage"
msgid "Run as a client only"
-msgstr ""
+msgstr "הפעל כלקוח בלבד"
msgctxt "ServerPage"
msgid "Relay Port:"
-msgstr "פורט מימסר:"
+msgstr "יציאת ממסר:"
msgctxt "ServerPage"
msgid "Enable to mirror the relay directory"
-msgstr ""
+msgstr "אפשור הכפלת מדור הממסר"
msgctxt "ServerPage"
msgid "Attempt to automatically configure port forwarding"
-msgstr ""
+msgstr "נסה להגדיר port forwarding באופן אוטומטי"
msgctxt "ServerPage"
msgid "Test"
-msgstr ""
+msgstr "בדיקה"
msgctxt "ServerPage"
msgid "Show help topic on port forwarding"
-msgstr ""
+msgstr "הצגת נושאי עזרה אודות port forwarding"
msgctxt "ServerPage"
msgid "Directory Port:"
-msgstr "פורט ספרייה:"
+msgstr "יציאת מדור:"
msgctxt "ServerPage"
msgid "Directory Port Number"
-msgstr "מספר פורט ספרייה"
+msgstr "מספר יציאת מדור"
msgctxt "ServerPage"
msgid "Contact Info:"
@@ -2978,11 +2984,11 @@ msgstr "מידע התקשרות:"
msgctxt "ServerPage"
msgid "Name of your relay"
-msgstr "השם של המימשר שלך"
+msgstr "שם ממסרך"
msgctxt "ServerPage"
msgid "Port on which users and other relays can communicate with your relay"
-msgstr "הפורט שבו משתמשים ומימסרים נוספים יוכלו לתקשר עם המימסר שלך"
+msgstr "יציאה שבאמצעותה משתמשים וממסרים אחרים יוכלו לתקשר עם ממסרך"
msgctxt "ServerPage"
msgid "Nickname:"
@@ -2996,7 +3002,7 @@ msgctxt "ServerPage"
msgid ""
"For Internet connections with fast download speed but slow upload, please "
"list your upload speed here."
-msgstr "לחיבורי אינטרנט עם קצב הורדה מהיר אבל קצב העלאה איטי, אנא הכנס את קצב ההעלאה שלך כאן."
+msgstr "לחיבורי אינטרנט עם קצב הורדה מהיר אבל קצב העלאה איטי, נא למנות את קצב ההעלאה שלך כאן."
msgctxt "ServerPage"
msgid "Cable/DSL 256 Kbps"
@@ -3012,11 +3018,11 @@ msgstr "כבלים/DSL 768 Kbps"
msgctxt "ServerPage"
msgid "T1/Cable/DSL 1.5 Mbps"
-msgstr "T1/כבלים/DSL 1.5 Mbps"
+msgstr "T1/כבלים/DSL 1.5 Mbps"
msgctxt "ServerPage"
msgid "> 1.5 Mbps"
-msgstr "יותר מ 1.5 Mbps"
+msgstr "מעל 1.5 Mbps"
msgctxt "ServerPage"
msgid "Custom"
@@ -3024,11 +3030,11 @@ msgstr "נתון אישית"
msgctxt "ServerPage"
msgid "Select the entry that most closely resembles your Internet connection"
-msgstr "בחר את הנתון הדומה ביותר לחיבור האינטרנט שלך"
+msgstr "בחירת הרשומה הדומה ביותר לחיבור האינטרנט שלך"
msgctxt "ServerPage"
msgid "Show help topic on bandwidth rate limits"
-msgstr "הצג עזרה בנוגע להגבלת רוחב פס"
+msgstr "הצגת עזרה בנוגע להגבלות שיעור רוחב פס"
msgctxt "ServerPage"
msgid "Average Rate"
@@ -3036,25 +3042,25 @@ msgstr "קצב ממוצע"
msgctxt "ServerPage"
msgid "Long-term average bandwidth limit"
-msgstr "הגבלת רוחב-פס ממוצע לטווח ארוך"
+msgstr "הגבלת רוחב פס ממוצע לטווח ארוך"
msgctxt "ServerPage"
msgid "KB/s"
-msgstr "%1 KB/s"
+msgstr "ק״ב/ש"
msgctxt "ServerPage"
msgid "Maximum Rate"
-msgstr "קצב מירבי"
+msgstr "קצב מרבי"
msgctxt "ServerPage"
msgid "Peak bandwidth rate limit"
-msgstr "הגבלת רוחב פס מירבי"
+msgstr "הגבלת שיעור רוחב פס מרבי"
msgctxt "ServerPage"
msgid ""
"Your maximum bandwidth rate must be greater than or equal to your average "
"bandwidth rate. Both values must be at least 20 KB/s."
-msgstr "רוחב הפס המירבי חייב להיות גדול או שווה לרוחב הפס הממוצע. על שני הערכים להיוצ לפחות 20 KB/s."
+msgstr "רוחב הפס המרבי חייב להיות גדול יותר מאשר או שווה לרוחב הפס הממוצע. על שני הערכים להיות לפחות 20 ק״ב/ש."
msgctxt "ServerPage"
msgid "Bandwidth Limits"
@@ -3062,7 +3068,7 @@ msgstr "הגבלות רוחב פס"
msgctxt "ServerPage"
msgid "Ports 6660 - 6669 and 6697"
-msgstr "פורטים 6660-6669 ו 6697"
+msgstr "יציאות 6660 - 6669 וגם 6697"
msgctxt "ServerPage"
msgid "Internet Relay Chat (IRC)"
@@ -3070,23 +3076,23 @@ msgstr "Internet Relay Chat (IRC)"
msgctxt "ServerPage"
msgid "Ports 110, 143, 993 and 995"
-msgstr "פורטים 110, 143, 993 ו 995"
+msgstr "יציאות 110, 143, 993 וגם 995"
msgctxt "ServerPage"
msgid "Retrieve Mail (POP, IMAP)"
-msgstr "קבלת דוא\"ל (POP, IMAP)"
+msgstr "קבלת דואר (POP, IMAP)"
msgctxt "ServerPage"
msgid "Ports unspecified by other checkboxes"
-msgstr "פורטים שלא נתונים על ידי תיבות בחירה אחרות"
+msgstr "יציאות שלא נתונות על ידי תיבות בחירה אחרות"
msgctxt "ServerPage"
msgid "Misc Other Services"
-msgstr "שירותים נוספים"
+msgstr "שירותים שונים נוספים"
msgctxt "ServerPage"
msgid "Ports 706, 1863, 5050, 5190, 5222, 5223, 8300 and 8888"
-msgstr "פורטים 706, 1863, 5050, 5190, 5222, 8300 ו 8888 {706, 1863, 5050, 5190, 5222, 5223, 8300 ?}"
+msgstr "יציאות 706, 1863, 5050, 5190, 5222, 5223, 8300 וגם 8888"
msgctxt "ServerPage"
msgid "Instant Messaging (IM)"
@@ -3094,15 +3100,15 @@ msgstr "הודעות מיידיות"
msgctxt "ServerPage"
msgid "Port 443"
-msgstr "פורט 443"
+msgstr "יציאה 443"
msgctxt "ServerPage"
msgid "Secure Websites (SSL)"
-msgstr "אתר מאובטח (SSL)"
+msgstr "אתרים מאובטחים (SSL)"
msgctxt "ServerPage"
msgid "Port 80"
-msgstr "פורט 80"
+msgstr "יציאה 80"
msgctxt "ServerPage"
msgid "Websites"
@@ -3110,18 +3116,18 @@ msgstr "אתרי רשת"
msgctxt "ServerPage"
msgid "Show help topic on exit policies"
-msgstr "הצג עזרה בנוגע למדיניות יציאה"
+msgstr "הצגת עזרה בנוגע למדיניות יציאה"
msgctxt "ServerPage"
msgid ""
"What Internet resources should users be able to access from your relay?"
-msgstr ""
+msgstr "לאילו תכנים באינטרנט משתמשים יוכלו לגשת דרך ממסרך?"
msgctxt "ServerPage"
msgid ""
"Tor will still block some outgoing mail and file sharing applications by "
"default to reduce spam and other abuse."
-msgstr ""
+msgstr "Tor עדיין יחסום יציאה של דוא״ל ושיתוף קבצים על מנת לצמצם ספאם ופשיעה אחרת."
msgctxt "ServerPage"
msgid "Exit Policies"
@@ -3129,94 +3135,94 @@ msgstr "מדיניות יציאה"
msgctxt "ServerPage"
msgid "Let others access your bridge by giving them this line:"
-msgstr "אפשר לאחרים לגשת לגשר שלך על ידי העברת השורה הבאה:"
+msgstr "אפשר לאחרים לגשת לגשר שלך על ידי נתינת השורה הבאה:"
msgctxt "ServerPage"
msgid ""
"This is the identity of your bridge relay that you can give to other people"
-msgstr "זוהי הזהות של הגשר שלך שניתן להעביר לאחרים"
+msgstr "זוהי הזהות של גשר ממסרך שביכולתך להעניק לאנשים אחרים"
msgctxt "ServerPage"
msgid "Copy your bridge relay's identity to the clipboard"
-msgstr "העתק את הזהות של הגשר שלך ללוח-העריכה"
+msgstr "העתקת הזהות של גשר ממסרך אל לוח־הגזירה"
msgctxt "ServerPage"
msgid "No Recent Usage"
-msgstr ""
+msgstr "אין שימוש לאחרונה"
msgctxt "ServerPage"
msgid "No clients have used your relay recently."
-msgstr ""
+msgstr "אין משתמשים שהשתמשו בממסרך לאחרונה."
msgctxt "ServerPage"
msgid ""
"Leave your relay running so clients have a better chance of finding and "
"using it."
-msgstr ""
+msgstr "השאירו את הממסר פועל, כך שללקוחות יהיו סיכויים טובים יותר למצוא אותו ולהשתמש בו."
msgctxt "ServerPage"
msgid "Bridge History"
-msgstr "היסטוריית יומן הודעות"
+msgstr "היסטוריית גשר"
msgctxt "ServerPage"
msgid "Vidalia was unable to retrieve your bridge's usage history."
-msgstr "Vidalia לא הצליח לשמור את השינויים בהגדרות 1%."
+msgstr "Vidalia לא הצליח לאחזר את היסטורית השימוש של הגשר שלך."
msgctxt "ServerPage"
msgid ""
"Tor returned an improperly formatted response when Vidalia requested your "
"bridge's usage history."
-msgstr ""
+msgstr "Tor החזיר תשובה שאינה מעוצבת כראוי כאשר Vidalia ביקש את היסטורית השימוש של הגשר שלך."
msgctxt "ServerPage"
msgid "The returned response was: %1"
-msgstr ""
+msgstr "התשובה המחוזרת היתה: %1"
msgctxt "ServerPage"
msgid "Help censored users reach the Tor network"
-msgstr "עזור למשתמשים מצונזרים לגשת לרשת Tor (גרסה 0.2.0.8-alpha ומעלה)"
+msgstr "סיוע למשתמשים מצונזרים לגשת אל רשת Tor (גרסה 0.2.0.8-alpha ומעלה)"
msgctxt "ServerPage"
msgid "<a href=\"#bridgeUsage\">Who has used my bridge?</a>"
-msgstr "<a href=\"bridges.finding\">כיצד אני מוצא גשר?</a>"
+msgstr "<a href=\"#bridgeUsage\">מי עשה שימוש בגשר שלי?</a>"
msgctxt "ServerPage"
msgid "<a href=\"#bridgeHelp\">What's this?</a>"
-msgstr ""
+msgstr "<a href=\"#bridgeHelp\">מה זה?</a>"
msgctxt "ServerPage"
msgid "Automatically distribute my bridge address"
-msgstr ""
+msgstr "הפצה אוטומטית של כתובת הגשר שלי"
msgctxt "ServerPage"
msgid "Relay traffic inside the Tor network (non-exit relay)"
-msgstr ""
+msgstr "תעבורת ממסר בתוך רשת Tor (ממסר שאינו-יציאה)"
msgctxt "ServerPage"
msgid "Relay traffic for the Tor network (exit relay)"
-msgstr ""
+msgstr "תעבורת ממסר עבור רשת Tor (ממסר יציאה)"
msgctxt "ServerPage"
msgid "Mirror the Relay Directory"
-msgstr ""
+msgstr "הכפלת מדור הממסר"
msgctxt "ServerPage"
msgid ""
"Email address at which you may be reached if there is a\n"
"problem with your relay. You might also include your PGP or GPG fingerprint."
-msgstr ""
+msgstr "כתובת דוא״ל בה ניתן להשיגך למקרה בו יהיה הצורך ליצור עימך קשר לגבי בעיות\nעם ממסרך. ביכולתך גם להכליל את טביעת האצבע של מפתח PGP או GPG שלך."
msgctxt "ServerPage"
msgid "day"
-msgstr ""
+msgstr "יום"
msgctxt "ServerPage"
msgid "week"
-msgstr ""
+msgstr "שבוע"
msgctxt "ServerPage"
msgid "month"
-msgstr ""
+msgstr "חודש"
msgctxt "ServerPage"
msgid "Enable accounting"
@@ -3228,31 +3234,31 @@ msgstr ""
msgctxt "ServerPage"
msgid "at"
-msgstr ""
+msgstr "בשעה"
msgctxt "ServerPage"
msgid "per"
-msgstr ""
+msgstr "לכל"
msgctxt "ServerPage"
msgid "bytes"
-msgstr ""
+msgstr "ביתים"
msgctxt "ServerPage"
msgid "KB"
-msgstr ""
+msgstr "ק״ב"
msgctxt "ServerPage"
msgid "MB"
-msgstr ""
+msgstr "מ״ב"
msgctxt "ServerPage"
msgid "GB"
-msgstr ""
+msgstr "ג״ב"
msgctxt "ServerPage"
msgid "TB"
-msgstr ""
+msgstr "ט״ב"
msgctxt "ServerPage"
msgid "Push no more than"
@@ -3260,30 +3266,30 @@ msgstr ""
msgctxt "ServerPage"
msgid "time"
-msgstr ""
+msgstr "זמן"
msgctxt "StatusEventWidget"
msgid "Copy to Clipboard"
-msgstr ""
+msgstr "העתקה אל לוח־גזירה"
msgctxt "StatusEventWidget"
msgid "The Tor Software is Running"
-msgstr ""
+msgstr "היישום Tor מורץ כעת"
msgctxt "StatusEventWidget"
msgid "You are currently running version \"%1\" of the Tor software."
-msgstr ""
+msgstr "הינך עושה כעת שימוש בגריסה \"%1\" של Tor."
msgctxt "StatusEventWidget"
msgid "The Tor Software is not Running"
-msgstr ""
+msgstr "היישום Tor אינו מורץ כעת"
msgctxt "StatusEventWidget"
msgid ""
"Click \"Start Tor\" in the Vidalia Control Panel to restart the Tor "
"software. If Tor exited unexpectedly, select the \"Advanced\" tab above for "
"details about any errors encountered."
-msgstr ""
+msgstr "לחצו על \"הפעלת Tor\" בלוח הבקרה של Vidalia כדי לאתחל את התוכנה Tor. במידה והתוכנה Tor מסתיימת באופן לא צפוי, בחרו בלשונית \"מתקדם\" למעלה עבור פרטים אודות כל שגיאה שהתרחשה."
msgctxt "StatusEventWidget"
msgid ""
@@ -3291,7 +3297,7 @@ msgid ""
"longer recommended. Please upgrade to the most recent version of the "
"software, which may contain important security, reliability and performance "
"fixes."
-msgstr ""
+msgstr "ברשותך קיימת גרסה \"%1\" של התוכנה Tor, שאיננה מומלצת עוד. נא לשדרג אל הגרסה האחרונה ביותר של התוכנה, שעשויה להכיל תיקוני אבטחה, אמינות וגם ביצועים חשובים."
msgctxt "StatusEventWidget"
msgid ""
@@ -3299,31 +3305,31 @@ msgid ""
"longer work with the current Tor network. Please upgrade to the most recent "
"version of the software, which may contain important security, reliability "
"and performance fixes."
-msgstr ""
+msgstr "ברשותך קיימת גרסה \"%1\" של התוכנה Tor, שייתכן ולא תעבוד עם רשת Tor הנוכחית. נא לשדרג אל הגרסה האחרונה ביותר של התוכנה, שעשויה להכיל תיקוני אבטחה, אמינות וגם ביצועים חשובים."
msgctxt "StatusEventWidget"
msgid "Your Tor Software is Out-of-date"
-msgstr ""
+msgstr "היישום Tor שמצוי ברשותך אינו מעודכן"
msgctxt "StatusEventWidget"
msgid "Connected to the Tor Network"
-msgstr ""
+msgstr "מחובר אל רשת Tor"
msgctxt "StatusEventWidget"
msgid ""
"We were able to successfully establish a connection to the Tor network. You "
"can now configure your applications to use the Internet anonymously."
-msgstr ""
+msgstr "ביססנו חיבור אל רשת Tor בהצלחה. ביכולתך להגדיר עתה את יישומיך לעשות שימוש במרשתת באופן אלמוני."
msgctxt "StatusEventWidget"
msgid "Tor Software Error"
-msgstr ""
+msgstr "שגיאת תוכנה "
msgctxt "StatusEventWidget"
msgid ""
"The Tor software encountered an internal bug. Please report the following "
"error message to the Tor developers at bugs.torproject.org: \"%1\""
-msgstr ""
+msgstr "היישום Tor חווה תקלה פנימית. נא לדווח על הודעת השגיאה הבאה אל המפתחים של Tor אצל bugs.torproject.org: \"%1\""
msgctxt "StatusEventWidget"
msgid ""
@@ -3331,7 +3337,7 @@ msgid ""
"the past compared to the source \"%2\". If your clock is not correct, Tor "
"will not be able to function. Please verify your computer displays the "
"correct time."
-msgstr ""
+msgstr "Tor קבע שייתכן ושעון מחשבך מוגדר אל %1 שניות אל העבר בהשוואה אל המקור \"%2\". במידה ושעונך אינו מציג את השעה הנכונה, לא תהיה באפשרותו של Tor לתפקד. נא לאמת שמחשבך מציג את השעה הנכונה."
msgctxt "StatusEventWidget"
msgid ""
@@ -3339,11 +3345,11 @@ msgid ""
"the future compared to the source \"%2\". If your clock is not correct, Tor "
"will not be able to function. Please verify your computer displays the "
"correct time."
-msgstr ""
+msgstr "Tor קבע שייתכן ושעון מחשבך מוגדר אל %1 שניות אל העתיד בהשוואה אל המקור \"%2\". במידה ושעונך אינו מציג את השעה הנכונה, לא תהיה באפשרותו של Tor לתפקד. נא לאמת שמחשבך מציג את השעה הנכונה."
msgctxt "StatusEventWidget"
msgid "Your Computer's Clock is Potentially Incorrect"
-msgstr ""
+msgstr "ייתכן שהשעה של מחשבך איננה מדויקת"
msgctxt "StatusEventWidget"
msgid ""
@@ -3351,18 +3357,18 @@ msgid ""
"unencrypted connection through Tor to port %1. Sending unencrypted "
"information over the Tor network is dangerous and not recommended. For your "
"protection, Tor has automatically closed this connection."
-msgstr ""
+msgstr "ייתכן שיישום מן היישומים במחשבך ניסה ליצור חיבור שאינו מוצפן דרך Tor אל יציאה %1. שליחת מידע לא מוצפן דרך רשת Tor הינה מסוכנת ואינה מומלצת. להגנתך, Tor סגר את חיבור זה אוטומטית."
msgctxt "StatusEventWidget"
msgid ""
"One of the applications on your computer may have attempted to make an "
"unencrypted connection through Tor to port %1. Sending unencrypted "
"information over the Tor network is dangerous and not recommended."
-msgstr ""
+msgstr "ייתכן שיישום מן היישומים במחשבך ניסה ליצור חיבור שאינו מוצפן דרך Tor אל יציאה %1. שליחת מידע לא מוצפן דרך רשת Tor הינה מסוכנת ואינה מומלצת."
msgctxt "StatusEventWidget"
msgid "Potentially Dangerous Connection!"
-msgstr ""
+msgstr "חיבור מסוכן פוטנציאלית!"
msgctxt "StatusEventWidget"
msgid ""
@@ -3370,81 +3376,81 @@ msgid ""
"using a protocol that may leak information about your destination. Please "
"ensure you configure your applications to use only SOCKS4a or SOCKS5 with "
"remote hostname resolution."
-msgstr ""
+msgstr "יישום מן יישומך ניסה לבסס חיבור דרך Tor אל \"%1\" באמצעות פרוטוקול שעלול להדליף מידע אודות יעדך. נא לוודא שהגדרת את יישומייך לעשות שימוש רק ב־SOCKS4a או ב־SOCKS5 יחד עם שם מארח מופרד מרוחק."
msgctxt "StatusEventWidget"
msgid "Unknown SOCKS Protocol"
-msgstr ""
+msgstr "פרוטוקול SOCKS לא מוכר"
msgctxt "StatusEventWidget"
msgid ""
"One of your applications tried to establish a connection through Tor using a"
" protocol that Tor does not understand. Please ensure you configure your "
"applications to use only SOCKS4a or SOCKS5 with remote hostname resolution."
-msgstr ""
+msgstr "יישום מן יישומך מנסה לבסס חיבור דרך Tor באמצעות פרוטוקול אותו Tor לא מבין. נא לוודא שהגדרת את יישומייך לעשות שימוש רק ב־SOCKS4a או ב־SOCKS5 יחד עם שם מארח מופרד מרוחק."
msgctxt "StatusEventWidget"
msgid "Invalid Destination Hostname"
-msgstr ""
+msgstr "יעד שם מארח שגוי"
msgctxt "StatusEventWidget"
msgid ""
"One of your applications tried to establish a connection through Tor to "
"\"%1\", which Tor does not recognize as a valid hostname. Please check your "
"application's configuration."
-msgstr ""
+msgstr "יישום מן יישומך ניסה לבסס חיבור דרך Tor אל \"%1\", אותו Tor לא מזהה כשם מארח תקף. נא לבדוק את התצורה של יישומך."
msgctxt "StatusEventWidget"
msgid "External IP Address Changed"
-msgstr ""
+msgstr "כתובת IP חיצונית שונתה"
msgctxt "StatusEventWidget"
msgid ""
"Tor has determined your relay's public IP address is currently %1%2. If that"
" is not correct, please consider setting the 'Address' option in your "
"relay's configuration."
-msgstr ""
+msgstr "Tor קבע שכתובת ה־IP הפומבית של ממסרך הינה %1%2. במידה ואין זה נכון, נא שקלו להגדיר את האפשרות 'כתובת' בתצורת ממסרך."
msgctxt "StatusEventWidget"
msgid "DNS Hijacking Detected"
-msgstr ""
+msgstr "חטיפת DNS אותרה"
msgctxt "StatusEventWidget"
msgid ""
"Tor detected that your DNS provider is providing false responses for domains"
" that do not exist. Some ISPs and other DNS providers, such as OpenDNS, are "
"known to do this in order to display their own search or advertising pages."
-msgstr ""
+msgstr "Tor איתר שספקית ה־DNS מספקת תגובה מזויפת עבור מתחמים (domains) שאינם קיימים. קיימות ספקיות שירותי מרשתת וספקיות DNS אחרות, כגון OpenDNS, שידוע שהן עושות זאת על מנת להציג את עמודי החיפוש או הפרסומות שלהן."
msgctxt "StatusEventWidget"
msgid ""
"Tor detected that your DNS provider is providing false responses for well "
"known domains. Since clients rely on Tor network relays to provide accurate "
"DNS repsonses, your relay will not be configured as an exit relay."
-msgstr ""
+msgstr "Tor איתר שספקית ה־DNS מספקת תגובה מזויפת עבור מתחמים (domains) הידועים היטב. מאחר ולקוחות תלויים על ממסרי רשת Tor כדי להעניק תגובות DNS מדויקות, ממסרך לא יוגדר כממסר יציאה."
msgctxt "StatusEventWidget"
msgid "Checking Server Port Reachability"
-msgstr ""
+msgstr "בוחן כעת נגישות יציאת שרת"
msgctxt "StatusEventWidget"
msgid ""
"Tor is trying to determine if your relay's server port is reachable from the"
" Tor network by connecting to itself at %1:%2. This test could take several "
"minutes."
-msgstr ""
+msgstr "Tor מנסה לקבוע אם יציאת השרת של ממסרך הינה נגישה מן רשת Tor באמצעות התחברות עצמית בשעה %1:%2. בדיקה זו עשויה לקחת מספר דקות."
msgctxt "StatusEventWidget"
msgid "Server Port Reachability Test Successful!"
-msgstr ""
+msgstr "בדיקת נגישות יציאת שרת צלחה!"
msgctxt "StatusEventWidget"
msgid "Your relay's server port is reachable from the Tor network!"
-msgstr ""
+msgstr "יציאת שרת של ממסרך הינה נגישה מן רשת Tor!"
msgctxt "StatusEventWidget"
msgid "Server Port Reachability Test Failed"
-msgstr ""
+msgstr "בדיקת נגישות יציאת שרת כשלה"
msgctxt "StatusEventWidget"
msgid ""
@@ -3452,30 +3458,30 @@ msgid ""
"happen if you are behind a router or firewall that requires you to set up "
"port forwarding. If %1:%2 is not your correct IP address and server port, "
"please check your relay's configuration."
-msgstr ""
+msgstr "יציאת השרת של ממסרך אינה נגישה על ידי לקוחות Tor אחרים. דבר זה יכול להתרחש אם הינך מאחרי נתב רשת או חומת אש שמצריכים ממך להגדיר port forwarding. אם %1:%2 אינו כתובת IP הנוכחית שלך וגם יציאת שרת, נא לבדוק את תצורת ממסרך."
msgctxt "StatusEventWidget"
msgid "Checking Directory Port Reachability"
-msgstr ""
+msgstr "בודק כעת נגישות יציאה מדור"
msgctxt "StatusEventWidget"
msgid ""
"Tor is trying to determine if your relay's directory port is reachable from "
"the Tor network by connecting to itself at %1:%2. This test could take "
"several minutes."
-msgstr ""
+msgstr "Tor מנסה לקבוע אם יציאת המדור של ממסרך הינה נגישה מן רשת Tor באמצעות התחברות עצמית בשעה %1:%2. בדיקה זו עשויה לקחת מספר דקות."
msgctxt "StatusEventWidget"
msgid "Directory Port Reachability Test Successful!"
-msgstr ""
+msgstr "בדיקת נגישות יציאת מדור צלחה"
msgctxt "StatusEventWidget"
msgid "Your relay's directory port is reachable from the Tor network!"
-msgstr ""
+msgstr "יציאת המדור של ממסרך הינה נגישה מן רשת Tor!"
msgctxt "StatusEventWidget"
msgid "Directory Port Reachability Test Failed"
-msgstr ""
+msgstr "בדיקת נגישות יציאת מדור כשלה"
msgctxt "StatusEventWidget"
msgid ""
@@ -3483,21 +3489,21 @@ msgid ""
"happen if you are behind a router or firewall that requires you to set up "
"port forwarding. If %1:%2 is not your correct IP address and directory port,"
" please check your relay's configuration."
-msgstr ""
+msgstr "יציאת המדור של ממסרך אינה נגישה על ידי לקוחות Tor אחרים. דבר זה יכול להתרחש אם הינך מאחרי נתב רשת או חומת אש שמצריכים ממך להגדיר port forwarding. אם %1:%2 אינו כתובת IP הנוכחית שלך וגם יציאת מדור, נא לבדוק את תצורת ממסרך."
msgctxt "StatusEventWidget"
msgid "Relay Descriptor Rejected"
-msgstr ""
+msgstr "מילת מפתח ממסר נדחתה"
msgctxt "StatusEventWidget"
msgid ""
"Your relay's descriptor, which enables clients to connect to your relay, was"
" rejected by the directory server at %1:%2. The reason given was: %3"
-msgstr ""
+msgstr "מילת המפתח של ממסרך, שמאפשר ללקוחות להתחבר אל ממסרך, נדחה על ידי מדור השרת בשעה %1:%2. הסיבה שניתנה היתה: %3"
msgctxt "StatusEventWidget"
msgid "Your Relay is Online"
-msgstr ""
+msgstr "ממסרך הינו מקוון"
msgctxt "StatusEventWidget"
msgid ""
@@ -3505,23 +3511,23 @@ msgid ""
"see an increase in network traffic shown by the Bandwidth Graph within a few"
" hours as more clients learn about your relay. Thank you for contributing to"
" the Tor network!"
-msgstr ""
+msgstr "ממסרך מקוון עתה והינו זמין לשימוש עבור לקוחות Tor. הינך צפוי/ה לראות בתוך מספר שעות עלייה בתעבורת רשת התקשורת המוצגת בגרף רוחב הפס כשיותר לקוחות ילמדו אודות ממסרך. רב תודות לך עבור תרומתך למען רשת Tor!"
msgctxt "StatusTab"
msgid "Status"
-msgstr ""
+msgstr "מצב"
msgctxt "StatusTab"
msgid "Message Log"
-msgstr ""
+msgstr "יומן הודעות"
msgctxt "StatusTab"
msgid "Tor Status"
-msgstr ""
+msgstr "מצב Tor"
msgctxt "StatusTab"
msgid "Show on startup"
-msgstr ""
+msgstr "הצגה בעת אתחול"
msgctxt "Stream"
msgid "New"
@@ -3529,15 +3535,15 @@ msgstr "חדש"
msgctxt "Stream"
msgid "Resolving"
-msgstr "מתרגם"
+msgstr "מתרגם כעת"
msgctxt "Stream"
msgid "Connecting"
-msgstr "מתחבר"
+msgstr "מתחבר כעת"
msgctxt "Stream"
msgid "Open"
-msgstr "פתוח"
+msgstr "פתיחה"
msgctxt "Stream"
msgid "Failed"
@@ -3549,7 +3555,7 @@ msgstr "סגור"
msgctxt "Stream"
msgid "Retrying"
-msgstr "מנסה מחדש"
+msgstr "מנסה מחדש כעת"
msgctxt "Stream"
msgid "Remapped"
@@ -3563,11 +3569,11 @@ msgctxt "TorControl"
msgid ""
"Vidalia has not started Tor. You need to stop Tor through the interface you "
"started it."
-msgstr ""
+msgstr "Vidalia לא התחיל את Tor. עליך להפסיק את Tor דרך הממשק שממנו התחלת אותו."
msgctxt "TorControl"
msgid "Start failed: %1"
-msgstr ""
+msgstr "כשל בהפעלה: %1"
msgctxt "TorControl"
msgid "Process finished: ExitCode=%1"
@@ -3575,7 +3581,7 @@ msgstr ""
msgctxt "TorControl"
msgid "Connection failed: %1"
-msgstr ""
+msgstr "כשל בחיבור: %1"
msgctxt "TorControl"
msgid "Disconnected"
@@ -3583,167 +3589,167 @@ msgstr ""
msgctxt "TorProcess"
msgid "Process %1 failed to stop. [%2]"
-msgstr "תהליך %1 לא הצליח לעצור. (%2)"
+msgstr "תהליך %1 נכשל לעצור. [%2]"
msgctxt "TorService"
msgid "The Tor service is not installed."
-msgstr "שירות Tor לא מותקן."
+msgstr "השירות Tor אינו מותקן."
msgctxt "TorService"
msgid "Unable to start the Tor service."
-msgstr "התחלת שירות Tor נכשלה."
+msgstr "לא ניתן להפעייל את השירות Tor."
msgctxt "TorSettings"
msgid "Failed to hash the control password."
-msgstr "ערבול סיסמת שליטה נכשל."
+msgstr "כשל בערבול סיסמת בקרה."
msgctxt "TorrcDialog"
msgid "Editing torrc"
-msgstr ""
+msgstr "עריכת torrc"
msgctxt "TorrcDialog"
msgid "Cut"
-msgstr ""
+msgstr "גזירה"
msgctxt "TorrcDialog"
msgid "Copy"
-msgstr ""
+msgstr "העתקה"
msgctxt "TorrcDialog"
msgid "Paste"
-msgstr ""
+msgstr "הדבקה"
msgctxt "TorrcDialog"
msgid "Undo"
-msgstr ""
+msgstr "ביטול"
msgctxt "TorrcDialog"
msgid "Redo"
-msgstr ""
+msgstr "ביצוע־חוזר"
msgctxt "TorrcDialog"
msgid "Select All"
-msgstr ""
+msgstr "בחר הכל"
msgctxt "TorrcDialog"
msgid "Error"
-msgstr ""
+msgstr "שגיאה"
msgctxt "TorrcDialog"
msgid "An error ocurred while opening torrc file"
-msgstr ""
+msgstr "ארעה שגיאה מסוימת בעת פתיחת קובץ torrc"
msgctxt "TorrcDialog"
msgid "Ctrl+X"
-msgstr ""
+msgstr "Ctrl+X"
msgctxt "TorrcDialog"
msgid "Ctrl+C"
-msgstr ""
+msgstr "Ctrl+C"
msgctxt "TorrcDialog"
msgid "Ctrl+V"
-msgstr ""
+msgstr "Ctrl+V"
msgctxt "TorrcDialog"
msgid "Ctrl+Z"
-msgstr ""
+msgstr "Ctrl+Z"
msgctxt "TorrcDialog"
msgid "Ctrl+Shift+Z"
-msgstr ""
+msgstr "Ctrl+Shift+Z"
msgctxt "TorrcDialog"
msgid "Ctrl+A"
-msgstr ""
+msgstr "Ctrl+A"
msgctxt "UPNPControl"
msgid "Success"
-msgstr ""
+msgstr "הצלחה"
msgctxt "UPNPControl"
msgid "No UPnP-enabled devices found"
-msgstr ""
+msgstr "לא נמצאו התקנים מאופשרים UPnP"
msgctxt "UPNPControl"
msgid "No valid UPnP-enabled Internet gateway devices found"
-msgstr ""
+msgstr "לא נמצא תקן חיבור אינטרנט שתומך בשיטת UPnP"
msgctxt "UPNPControl"
msgid "WSAStartup failed"
-msgstr ""
+msgstr "WSAStartup נכשל"
msgctxt "UPNPControl"
msgid "Failed to add a port mapping"
-msgstr ""
+msgstr "כשל הוספת port mapping"
msgctxt "UPNPControl"
msgid "Failed to retrieve a port mapping"
-msgstr ""
+msgstr "כשל באחזרת port mapping"
msgctxt "UPNPControl"
msgid "Failed to remove a port mapping"
-msgstr ""
+msgstr "כשל בהסרת port mapping"
msgctxt "UPNPControl"
msgid "Unknown error"
-msgstr ""
+msgstr "שגיאה לא ידועה"
msgctxt "UPNPTestDialog"
msgid "Discovering UPnP-enabled devices"
-msgstr ""
+msgstr "מחפש כעת התקנים מאופשרים UPnP"
msgctxt "UPNPTestDialog"
msgid "Updating directory port mapping"
-msgstr ""
+msgstr "מעדכן כעת מדור port mapping"
msgctxt "UPNPTestDialog"
msgid "Updating relay port mapping"
-msgstr ""
+msgstr "מעדכן כעת ממסר port mapping"
msgctxt "UPNPTestDialog"
msgid "Test completed successfully!"
-msgstr ""
+msgstr "הבדיקה הושלמה בהצלחה!"
msgctxt "UPNPTestDialog"
msgid "Testing UPnP Support"
-msgstr ""
+msgstr "בודק כעת תמיכת UPnP"
msgctxt "UPNPTestDialog"
msgid "Testing Universal Plug & Play Support"
-msgstr ""
+msgstr "בודק כעת תמיכת Plug & Play אוניברסאלית."
msgctxt "UpdateProcess"
msgid ""
"Vidalia was unable to check for available software updates because it could "
"not find '%1'."
-msgstr ""
+msgstr "Vidalia לא מסוגל היה לחפש עדכוני תוכנה מכיוון שלא ניתן היה למצוא את '%1'."
msgctxt "UpdateProcess"
msgid ""
"Vidalia was unable to check for available software updates because Tor's "
"update process exited unexpectedly."
-msgstr ""
+msgstr "Vidalia לא מסוגל היה לחפש עדכוני תוכנה מכיוון שהיישום Tor נסגר בפתאומיות."
msgctxt "UpdateProgressDialog"
msgid "Checking for available updates..."
-msgstr ""
+msgstr "מחפש כעת עבור עדכונים זמינים..."
msgctxt "UpdateProgressDialog"
msgid "Hide"
-msgstr "הסתר"
+msgstr "הסתרה"
msgctxt "UpdateProgressDialog"
msgid "Downloading updates..."
-msgstr ""
+msgstr "מוריד עדכונים כעת..."
msgctxt "UpdateProgressDialog"
msgid "Installing updated software..."
-msgstr ""
+msgstr "מתקין עדכונים כעת..."
msgctxt "UpdateProgressDialog"
msgid "Done! Your software is now up to date."
-msgstr ""
+msgstr "סיום! התוכנה שלך מעודכנת."
msgctxt "UpdateProgressDialog"
msgid "OK"
@@ -3751,11 +3757,11 @@ msgstr "אישור"
msgctxt "UpdateProgressDialog"
msgid "Software Updates"
-msgstr ""
+msgstr "עדכוני תוכנה"
msgctxt "UpdateProgressDialog"
msgid "Checking for updates..."
-msgstr ""
+msgstr "בודק עדכונים כעת..."
msgctxt "UpdateProgressDialog"
msgid "Cancel"
@@ -3763,27 +3769,27 @@ msgstr "ביטול"
msgctxt "UpdatesAvailableDialog"
msgid "Software Updates Available"
-msgstr "עידכון Tor זמין"
+msgstr "קיים עדכון זמין עבור Tor"
msgctxt "UpdatesAvailableDialog"
msgid "Remind Me Later"
-msgstr ""
+msgstr "הזכר לי אחר כך"
msgctxt "UpdatesAvailableDialog"
msgid "Install"
-msgstr ""
+msgstr "התקן"
msgctxt "UpdatesAvailableDialog"
msgid "The following updated software packages are ready for installation:"
-msgstr ""
+msgstr "חבילות התוכנה העדכניות הבאות מוכנות להתקנה:"
msgctxt "UpdatesAvailableDialog"
msgid "Package"
-msgstr "Backspace"
+msgstr "חבילה"
msgctxt "UpdatesAvailableDialog"
msgid "Version"
-msgstr ""
+msgstr "גרסה"
msgctxt "VMessageBox"
msgid "OK"
@@ -3807,15 +3813,15 @@ msgstr "עזרה"
msgctxt "VMessageBox"
msgid "Retry"
-msgstr "נסה שנית"
+msgstr "ניסיון חוזר"
msgctxt "VMessageBox"
msgid "Show Log"
-msgstr "הצג יומן"
+msgstr "הצגת יומן"
msgctxt "VMessageBox"
msgid "Show Settings"
-msgstr "הצג הגדרות"
+msgstr "הצגת הגדרות"
msgctxt "VMessageBox"
msgid "Continue"
@@ -3827,7 +3833,7 @@ msgstr "יציאה"
msgctxt "VMessageBox"
msgid "Browse"
-msgstr "חפש"
+msgstr "עיון"
msgctxt "Vidalia"
msgid "Invalid Argument"
@@ -3835,99 +3841,99 @@ msgstr "ארגומנט שגוי"
msgctxt "Vidalia"
msgid "Vidalia is already running"
-msgstr "Vidalia כבר פעיל"
+msgstr "Vidalia כבר מורץ"
msgctxt "Vidalia"
msgid "Displays this usage message and exits."
-msgstr "מציג הודעת שימוש זו ויוצא."
+msgstr "הצגת הודעת שימוש זו ויציאה."
msgctxt "Vidalia"
msgid "Resets ALL stored Vidalia settings."
-msgstr "מאפס את כל ההגדרות השמורות של Vidalia."
+msgstr "איפוס מוחלט של כל ההגדרות המאוחסנות של Vidalia."
msgctxt "Vidalia"
msgid "Sets the directory Vidalia uses for data files."
-msgstr "קובע את הספריה ש-Vidalia משתמשת לשמירת קבצי מידע."
+msgstr "הגדרת הספרייה שבשימוש על ידי Vidalia לקבצי מידע."
msgctxt "Vidalia"
msgid "Sets the name and location of Vidalia's pidfile."
-msgstr "קובע את השם ומיקום קובץ ה-PID של Vidalia."
+msgstr "הגדרת השם ומיקום קובץ ה־PID של Vidalia."
msgctxt "Vidalia"
msgid "Sets the name and location of Vidalia's logfile."
-msgstr "קובע את השם והמיקום של קובת היומן של Vidalia."
+msgstr "הגדרת השם ומיקום קובץ היומן של Vidalia."
msgctxt "Vidalia"
msgid "Sets the verbosity of Vidalia's logging."
-msgstr "קובע את הגיבוב של היומן."
+msgstr "הגדרת הגיבוב של היומן אצל Vidalia."
msgctxt "Vidalia"
msgid "Sets Vidalia's interface style."
-msgstr "קובע את סגנון הממשק של Vidalia."
+msgstr "הגדרת סגנון הממשק של Vidalia."
msgctxt "Vidalia"
msgid "Sets Vidalia's language."
-msgstr "קובע את השפה של Vidalia."
+msgstr "הגדרת השפה של Vidalia."
msgctxt "Vidalia"
msgid "Vidalia Usage Information"
-msgstr "מידע שימוש ל-Vidalia"
+msgstr "מידע שימוש עבור Vidalia"
msgctxt "Vidalia"
msgid "Unable to open log file '%1': %2"
-msgstr "כשלון בפתחיחת קובץ יומן '%1': %2"
+msgstr "לא ניתן לפתוח קובץ יומן '%1': %2"
msgctxt "Vidalia"
msgid "Value required for parameter :"
-msgstr ""
+msgstr "נדרש ערך עבור פרמטר :"
msgctxt "Vidalia"
msgid "Invalid language code specified:"
-msgstr ""
+msgstr "צוין קוד שפה שגו:"
msgctxt "Vidalia"
msgid "Invalid GUI style specified:"
-msgstr ""
+msgstr "צוין סגנון ממשק שגוי:"
msgctxt "Vidalia"
msgid "Invalid log level specified:"
-msgstr ""
+msgstr "צוינה רמת יומן שגויה:"
msgctxt "Vidalia"
msgid ""
"Another Vidalia process is possibly already running. If there really is not another Vidalia process running, you can choose to continue anyway.\n"
"\n"
"Would you like to continue starting Vidalia?"
-msgstr ""
+msgstr "תהליך אחר של Vidalia כבר מורץ. אם אין תהליך פעיל אחר של Vidalia, ביכולתך לבחור להמשיך בכל מקרה.\n\nהאם ברצונך להמשיך להפעיל את Vidalia?"
msgctxt "stringutil.h"
msgid "%1 secs"
-msgstr ""
+msgstr "%1 שניות"
msgctxt "stringutil.h"
msgid "%1 B/s"
-msgstr "%1 B/s"
+msgstr "%1 ביתים/ש"
msgctxt "stringutil.h"
msgid "%1 KB/s"
-msgstr "%1 KB/s"
+msgstr "%1 ק״ב/ש"
msgctxt "stringutil.h"
msgid "%1 MB/s"
-msgstr "%1 MB/s"
+msgstr "%1 מ״ב/ש"
msgctxt "stringutil.h"
msgid "%1 GB/s"
-msgstr "%1 GB/s"
+msgstr "%1 ג״ב/ש"
msgctxt "stringutil.h"
msgid "%1 days"
-msgstr ""
+msgstr "%1 ימים"
msgctxt "stringutil.h"
msgid "%1 hours"
-msgstr ""
+msgstr "%1 שעות"
msgctxt "stringutil.h"
msgid "%1 mins"
-msgstr ""
+msgstr "%1 דקות"
1
0

[translation/vidalia_completed] Update translations for vidalia_completed
by translation@torproject.org 22 Jul '12
by translation@torproject.org 22 Jul '12
22 Jul '12
commit 02691cb0af7f451fe92c3883cdc1601b63f01e42
Author: Translation commit bot <translation(a)torproject.org>
Date: Sun Jul 22 13:45:11 2012 +0000
Update translations for vidalia_completed
---
he/vidalia_he.po | 3853 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 3853 insertions(+), 0 deletions(-)
diff --git a/he/vidalia_he.po b/he/vidalia_he.po
new file mode 100644
index 0000000..a2e081b
--- /dev/null
+++ b/he/vidalia_he.po
@@ -0,0 +1,3853 @@
+#
+# Translators:
+# Amichay P. K. <am1chay.p.k(a)gmail.com>, 2011.
+# <arab.with.nargila(a)gmail.com>, 2012.
+# Elifelet h<ttps://www.transifex.com/accounts/profile/Elifelet/, 2012.
+# Isratine Citizen <genghiskhan(a)gmx.ca>, 2012.
+# Runa A. Sandvik <runa.sandvik(a)gmail.com>, 2011.
+# runasand <runa.sandvik(a)gmail.com>, 2011.
+# Something Another <roeyjobsyud(a)gmail.com>, 2012.
+# <static.172(a)gmail.com>, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: The Tor Project\n"
+"Report-Msgid-Bugs-To: https://trac.torproject.org/projects/tor\n"
+"POT-Creation-Date: 2012-03-21 17:52+0000\n"
+"PO-Revision-Date: 2012-07-22 13:45+0000\n"
+"Last-Translator: GenghisKhan <genghiskhan(a)gmx.ca>\n"
+"Language-Team: translations(a)vidalia-project.net\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: he\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"X-Generator: Vidalia ts2po 0.2\n"
+
+msgctxt "AboutDialog"
+msgid "About Vidalia"
+msgstr "אודות Vidalia"
+
+msgctxt "AboutDialog"
+msgid "License"
+msgstr "רישיון"
+
+msgctxt "AboutDialog"
+msgid "Vidalia 0.2.0"
+msgstr "Vidalia 0.2.0"
+
+msgctxt "AboutDialog"
+msgid "Tor 0.2.0.32"
+msgstr "Tor 0.2.0.32"
+
+msgctxt "AboutDialog"
+msgid "Qt 4.4.2"
+msgstr "Qt 4.4.2"
+
+msgctxt "AdvancedPage"
+msgid "'%1' is not a valid IP address."
+msgstr "%1 אינו כתובת IP תקפה."
+
+msgctxt "AdvancedPage"
+msgid ""
+"You selected 'Password' authentication, but did not specify a password."
+msgstr "בחרת באימות 'סיסמה', אך לא ציינת סיסמה."
+
+msgctxt "AdvancedPage"
+msgid "Select Tor Configuration File"
+msgstr "בחירת קובץ הגדרות Tor"
+
+msgctxt "AdvancedPage"
+msgid "File Not Found"
+msgstr "קובץ לא נמצא"
+
+msgctxt "AdvancedPage"
+msgid "%1 does not exist. Would you like to create it?"
+msgstr "%1 לא קיים. האם ברצונך ליצור אותו?"
+
+msgctxt "AdvancedPage"
+msgid "Failed to Create File"
+msgstr "כשלון בעת יצירת קובץ"
+
+msgctxt "AdvancedPage"
+msgid "Unable to create %1 [%2]"
+msgstr "לא יכול ליצור %1 [%2]"
+
+msgctxt "AdvancedPage"
+msgid "Select a Directory to Use for Tor Data"
+msgstr "בחירת ספריה לשימוש עבור מידע של Tor"
+
+msgctxt "AdvancedPage"
+msgid "Unable to remove Tor Service"
+msgstr "לא ניתן להסיר את שירות Tor"
+
+msgctxt "AdvancedPage"
+msgid "Unable to install Tor Service"
+msgstr "לא ניתן להתקין את שירות Tor"
+
+msgctxt "AdvancedPage"
+msgid "Vidalia was unable to install the Tor service."
+msgstr "Vidalia לא הצליח להתקין את השירות Tor."
+
+msgctxt "AdvancedPage"
+msgid "Authentication:"
+msgstr "אימות:"
+
+msgctxt "AdvancedPage"
+msgid "Address:"
+msgstr "כתובת:"
+
+msgctxt "AdvancedPage"
+msgid "None"
+msgstr "כלום"
+
+msgctxt "AdvancedPage"
+msgid "Cookie"
+msgstr "עוגייה"
+
+msgctxt "AdvancedPage"
+msgid "Password"
+msgstr "סיסמה"
+
+msgctxt "AdvancedPage"
+msgid "Randomly Generate"
+msgstr "יצר אקראית"
+
+msgctxt "AdvancedPage"
+msgid ":"
+msgstr ":"
+
+msgctxt "AdvancedPage"
+msgid "Tor Configuration File"
+msgstr "קובץ הגדרות Tor"
+
+msgctxt "AdvancedPage"
+msgid "Start the Tor software with the specified configuration file (torrc)"
+msgstr "הפעלת Tor באמצעות קובץ ההגדרות המצוין (torrc)"
+
+msgctxt "AdvancedPage"
+msgid "Select path to your configuration file"
+msgstr "בחירת נתיב אל קובץ ההגדרות"
+
+msgctxt "AdvancedPage"
+msgid "Browse"
+msgstr "עיון"
+
+msgctxt "AdvancedPage"
+msgid "Data Directory"
+msgstr "מדור מידע"
+
+msgctxt "AdvancedPage"
+msgid "Store data for the Tor software in the following directory"
+msgstr "אחסון מידע עבור Tor במדור זה"
+
+msgctxt "AdvancedPage"
+msgid "Select the directory used to store data for the Tor software"
+msgstr "בחירת המדור שישמש לאחסון מידע עבור Tor"
+
+msgctxt "AdvancedPage"
+msgid "Tor Control"
+msgstr "שליטה ב-Tor"
+
+msgctxt "AdvancedPage"
+msgid "Use TCP connection (ControlPort)"
+msgstr "שימוש בחיבור TCP (ControlPort)"
+
+msgctxt "AdvancedPage"
+msgid "Path:"
+msgstr "נתיב:"
+
+msgctxt "AdvancedPage"
+msgid "Use Unix domain socket (ControlSocket)"
+msgstr "שימוש ב-Unix domain socket (ControlSocket)"
+
+msgctxt "AdvancedPage"
+msgid "Edit current torrc"
+msgstr "עריכת קובץ torrc נוכחי"
+
+msgctxt "AdvancedPage"
+msgid "NOTE: this will edit the currently loaded torrc"
+msgstr "לתשומת לבך: פעולה זו תערוך את קובץ torrc שטעון כעת"
+
+msgctxt "AdvancedPage"
+msgid "ControlSocket path doesn't exist."
+msgstr "נתיב הקרת Socket אינו קיים."
+
+msgctxt "AdvancedPage"
+msgid ""
+"The specified Tor configuration file location contains characters that "
+"cannot be represented in your system's current 8-bit character encoding."
+msgstr "מיקום קובץ תצורת Tor שצוין מכיל תווים שלא ניתן להציגם בקידוד 8-bit הנוכחי של מערכתך."
+
+msgctxt "AdvancedPage"
+msgid ""
+"The specified Tor data directory location contains characters that cannot be"
+" represented in your system's current 8-bit character encoding."
+msgstr "מיקום מדור מידע Tor שצוין מכיל תווים שלא ניתן להציגם בקידוד 8-bit הנוכחי של מערכתך."
+
+msgctxt "AdvancedPage"
+msgid "Warning"
+msgstr "אזהרה"
+
+msgctxt "AdvancedPage"
+msgid "You changed torrc path, would you like to restart Tor?"
+msgstr "שינית את הנתיב של torrc, האם ברצונך לאתחל את Tor?"
+
+msgctxt "AdvancedPage"
+msgid "Tor Configuration File (torrc);;All Files (*)"
+msgstr "קובץ תצורת Tor (torrc);;כל הקבצים (*)"
+
+msgctxt "AdvancedPage"
+msgid "Select a file to use for Tor socket path"
+msgstr "בחירת קובץ לשימוש עבור Tor socket path"
+
+msgctxt "AdvancedPage"
+msgid "Configure ControlPort automatically"
+msgstr "הגדרה אוטומטית של בקרת־יציאה (ControlPort)"
+
+msgctxt "AdvancedPage"
+msgid ""
+"You've checked the autoconfiguration option for the ControlPort, but "
+"provided no Data Directory. Please add one, or uncheck the \"Configure "
+"ControlPort automatically\" option."
+msgstr "בחרת באפשרות תצורה אוטומטית עבור בקרת יציאה, אולם לא סיפקת מידע מדור. נא להוסיף אחד, או לכבות את האפשרות \"הגדרה אוטומטית של בקרת־יציאה\"."
+
+msgctxt "AdvancedPage"
+msgid ""
+"Vidalia was unable to remove the Tor service.\n"
+"\n"
+"You may need to remove it manually."
+msgstr "Vidalia לא מסוגל היה להסיר את Tor.\n\nייתכן שעליך להסיר אותו ידנית."
+
+msgctxt "AppearancePage"
+msgid "Language"
+msgstr "שפה"
+
+msgctxt "AppearancePage"
+msgid "Choose the language used in Vidalia"
+msgstr "בחירת שפה לשימוש ביישום Vidalia"
+
+msgctxt "AppearancePage"
+msgid "Style"
+msgstr "סגנון"
+
+msgctxt "AppearancePage"
+msgid "Choose Vidalia's interface style"
+msgstr "בחירת סגנון הממשק של Vidalia"
+
+msgctxt "AppearancePage"
+msgid "Vidalia was unable to load the selected language translation."
+msgstr "Vidalia לא מסוגל היה לטעון את קבצי התרגום הנבחרים."
+
+msgctxt "AppearancePage"
+msgid ""
+"System Icon Preferences (changes will take effect when you restart Vidalia)"
+msgstr "העדפות סמל מערכת (שינויים יכנסו לתוקף בעת אתחול Vidalia)"
+
+msgctxt "AppearancePage"
+msgid "Show the Tray Icon and Dock Icon (default)"
+msgstr "הצגת סמל המגש וסמל הרציף (ברירת מחדל)"
+
+msgctxt "AppearancePage"
+msgid "Hide the Tray Icon"
+msgstr "הסתרת סמל המגש"
+
+msgctxt "AppearancePage"
+msgid "Hide the Dock Icon"
+msgstr "הסתרת סמל הרציף"
+
+msgctxt "BandwidthGraph"
+msgid "Since:"
+msgstr "מאז:"
+
+msgctxt "BandwidthGraph"
+msgid "Hide Settings"
+msgstr "הסתרת הגדרות"
+
+msgctxt "BandwidthGraph"
+msgid "Show Settings"
+msgstr "הצגת הגדרות"
+
+msgctxt "BandwidthGraph"
+msgid "Tor Bandwidth Usage"
+msgstr "שימוש רוחב פס של Tor"
+
+msgctxt "BandwidthGraph"
+msgid "Reset"
+msgstr "אתחל"
+
+msgctxt "BandwidthGraph"
+msgid "Receive Rate"
+msgstr "קצב קבלה"
+
+msgctxt "BandwidthGraph"
+msgid "Send Rate"
+msgstr "קצב שליחה"
+
+msgctxt "BandwidthGraph"
+msgid "Always on Top"
+msgstr "תמיד למעלה"
+
+msgctxt "BandwidthGraph"
+msgid "Style"
+msgstr "סגנון"
+
+msgctxt "BandwidthGraph"
+msgid "Changes the transparency of the Bandwidth Graph"
+msgstr "שינוי את השקיפות של גרף רוחב הפס"
+
+msgctxt "BandwidthGraph"
+msgid "100"
+msgstr "100"
+
+msgctxt "BandwidthGraph"
+msgid "% Opaque"
+msgstr "% אטום"
+
+msgctxt "BandwidthGraph"
+msgid "Save"
+msgstr "שמירה"
+
+msgctxt "BandwidthGraph"
+msgid "Cancel"
+msgstr "ביטול"
+
+msgctxt "BridgeDownloader"
+msgid "Starting HTTPS bridge request..."
+msgstr "מפעיל כעת בקשת גשר HTTPS..."
+
+msgctxt "BridgeDownloader"
+msgid "Connecting to %1:%2..."
+msgstr "מתחבר כעת אל %1:%2..."
+
+msgctxt "BridgeDownloader"
+msgid "Sending an HTTPS request for bridges..."
+msgstr "שולח כעת בקשת HTTPS עבור גשרים..."
+
+msgctxt "BridgeDownloader"
+msgid "Downloading a list of bridges..."
+msgstr "טוען כעת רשימת גשרים..."
+
+msgctxt "BridgeDownloaderProgressDialog"
+msgid "Downloading Bridges"
+msgstr "טוען גשרים כעת..."
+
+msgctxt "BridgeDownloaderProgressDialog"
+msgid "Unable to download bridges: %1"
+msgstr "לא מסוגל לטעון גשרים: %1"
+
+msgctxt "BridgeDownloaderProgressDialog"
+msgid "Retrying bridge request..."
+msgstr "מנסה שוב בקשת גשר כעת..."
+
+msgctxt "BridgeUsageDialog"
+msgid "Country"
+msgstr "מדינה"
+
+msgctxt "BridgeUsageDialog"
+msgid "# Clients"
+msgstr "# לקוחות"
+
+msgctxt "BridgeUsageDialog"
+msgid "Clients from the following countries have used your relay since %1"
+msgstr "לקוחות מן המדינות הבאות השתמשו בממסרך מאז %1"
+
+msgctxt "BridgeUsageDialog"
+msgid "Bridge Usage Summary"
+msgstr "סיכום שימוש בגשר"
+
+msgctxt "BridgeUsageDialog"
+msgid "Client Summary"
+msgstr "סיכום קליינטים"
+
+msgctxt "Circuit"
+msgid "New"
+msgstr "חדש"
+
+msgctxt "Circuit"
+msgid "Open"
+msgstr "פתוח"
+
+msgctxt "Circuit"
+msgid "Building"
+msgstr "נבנה"
+
+msgctxt "Circuit"
+msgid "Failed"
+msgstr "נכשל"
+
+msgctxt "Circuit"
+msgid "Closed"
+msgstr "סגירה"
+
+msgctxt "Circuit"
+msgid "Unknown"
+msgstr "לא ידוע"
+
+msgctxt "CircuitItem"
+msgid "<Path Empty>"
+msgstr "<נתיב ריק>"
+
+msgctxt "CircuitListWidget"
+msgid "Connection"
+msgstr "חיבור"
+
+msgctxt "CircuitListWidget"
+msgid "Status"
+msgstr "מצב"
+
+msgctxt "CircuitListWidget"
+msgid "Zoom to Circuit"
+msgstr "קרב למעגל"
+
+msgctxt "CircuitListWidget"
+msgid "Close Circuit (Del)"
+msgstr "סגירת מעגל (Del)"
+
+msgctxt "CircuitListWidget"
+msgid "Close Stream (Del)"
+msgstr "סגירת זרם (Del)"
+
+msgctxt "ConfigDialog"
+msgid "General"
+msgstr "כללי"
+
+msgctxt "ConfigDialog"
+msgid "Network"
+msgstr "רשת"
+
+msgctxt "ConfigDialog"
+msgid "Sharing"
+msgstr "שיתוף"
+
+msgctxt "ConfigDialog"
+msgid "Services"
+msgstr "שירותים"
+
+msgctxt "ConfigDialog"
+msgid "Appearance"
+msgstr "מראה"
+
+msgctxt "ConfigDialog"
+msgid "Advanced"
+msgstr "מתקדם"
+
+msgctxt "ConfigDialog"
+msgid "Help"
+msgstr "עזרה"
+
+msgctxt "ConfigDialog"
+msgid "Error Saving Settings"
+msgstr "תקלה בעת שמירת הגדרות"
+
+msgctxt "ConfigDialog"
+msgid "Vidalia was unable to save your %1 settings."
+msgstr "Vidalia לא הצליח לשמור את השינויים בהגדרות 1%."
+
+msgctxt "ConfigDialog"
+msgid "Error Applying Settings"
+msgstr "תקלה בעת החלת הגדרות"
+
+msgctxt "ConfigDialog"
+msgid "Vidalia was unable to apply your %1 settings to Tor."
+msgstr "Vidalia לא הצליח להפעיל את השינויים בהגדרות 1%."
+
+msgctxt "ConfigDialog"
+msgid "Settings"
+msgstr "הגדרות"
+
+msgctxt "ControlConnection"
+msgid "Vidalia was unable to connect to Tor. (%1)"
+msgstr "Vidalia לא הצליח להתחבר אל Tor. (%1)"
+
+msgctxt "ControlConnection"
+msgid "Control socket is not connected."
+msgstr "socket בקרה אינו מחובר."
+
+msgctxt "ControlPasswordInputDialog"
+msgid "Password Required"
+msgstr "נדרשת סיסמה"
+
+msgctxt "ControlPasswordInputDialog"
+msgid "Remember my password"
+msgstr "זכור את הסיסמה שלי"
+
+msgctxt "ControlPasswordInputDialog"
+msgid ""
+"Vidalia has connected to a running Tor process that requires a password. "
+"Please enter your control password:"
+msgstr "Vidalia התחבר אל תהליך פעיל של Tor שדורש סיסמה. נא להזין את סיסמת התהליך:"
+
+msgctxt "ControlSocket"
+msgid "Control socket is not connected."
+msgstr "socket בקרה אינו מחובר."
+
+msgctxt "ControlSocket"
+msgid "Error sending control command. [%1]"
+msgstr "שגיאה בעת שליחת פקודת בקרה. (%1)"
+
+msgctxt "ControlSocket"
+msgid "Socket disconnected while attempting to read a line of data."
+msgstr "Socket נסגר במהלך ניסיון לקרוא שורת מידע."
+
+msgctxt "ControlSocket"
+msgid "Invalid control reply. [%1]"
+msgstr "תשובת בקרה שגויה. (%1)"
+
+msgctxt "CountryInfo"
+msgid "Afghanistan"
+msgstr "אפגניסטן"
+
+msgctxt "CountryInfo"
+msgid "Andorra"
+msgstr "אנדורה"
+
+msgctxt "CountryInfo"
+msgid "Angola"
+msgstr "אנגולה"
+
+msgctxt "CountryInfo"
+msgid "Antigua & Barbuda"
+msgstr "אנטיגואה וברבודה"
+
+msgctxt "CountryInfo"
+msgid "Argentina"
+msgstr "ארגנטינה"
+
+msgctxt "CountryInfo"
+msgid "Armenia"
+msgstr "ארמניה"
+
+msgctxt "CountryInfo"
+msgid "Australia"
+msgstr "אוסטרליה"
+
+msgctxt "CountryInfo"
+msgid "Azerbaijan"
+msgstr "אזרביג'אן"
+
+msgctxt "CountryInfo"
+msgid "Bahamas"
+msgstr "בהאמה"
+
+msgctxt "CountryInfo"
+msgid "Bangladesh"
+msgstr "בנגאלדש"
+
+msgctxt "CountryInfo"
+msgid "Barbados"
+msgstr "ברבדוס"
+
+msgctxt "CountryInfo"
+msgid "Belarus"
+msgstr "בלרוס"
+
+msgctxt "CountryInfo"
+msgid "Belgium"
+msgstr "בלגיה"
+
+msgctxt "CountryInfo"
+msgid "Belize"
+msgstr "בליז"
+
+msgctxt "CountryInfo"
+msgid "Bhutan"
+msgstr "בוטן"
+
+msgctxt "CountryInfo"
+msgid "Bolivia"
+msgstr "בוליביה"
+
+msgctxt "CountryInfo"
+msgid "Bosnia & Herzegovina"
+msgstr "בוסניה והרצגובינה"
+
+msgctxt "CountryInfo"
+msgid "Botswana"
+msgstr "בוצואנה"
+
+msgctxt "CountryInfo"
+msgid "Brazil"
+msgstr "ברזיל"
+
+msgctxt "CountryInfo"
+msgid "Brunei Darussalam"
+msgstr "ברוני דרוסלם"
+
+msgctxt "CountryInfo"
+msgid "Bulgaria"
+msgstr "בולגריה"
+
+msgctxt "CountryInfo"
+msgid "Burkina Faso"
+msgstr "בורקינה פאסו"
+
+msgctxt "CountryInfo"
+msgid "Burundi"
+msgstr "בורונדי"
+
+msgctxt "CountryInfo"
+msgid "Cambodia"
+msgstr "קמבודיה"
+
+msgctxt "CountryInfo"
+msgid "Cameroon"
+msgstr "קמרון"
+
+msgctxt "CountryInfo"
+msgid "Canada"
+msgstr "קנדה"
+
+msgctxt "CountryInfo"
+msgid "Cape Verde"
+msgstr "קייפ ורדה"
+
+msgctxt "CountryInfo"
+msgid "Central African Republic"
+msgstr "רפובליקת מרכז אפריקה"
+
+msgctxt "CountryInfo"
+msgid "Chad"
+msgstr "צ'אד"
+
+msgctxt "CountryInfo"
+msgid "Chile"
+msgstr "צ'ילה"
+
+msgctxt "CountryInfo"
+msgid "China"
+msgstr "סין"
+
+msgctxt "CountryInfo"
+msgid "Colombia"
+msgstr "קולומביה"
+
+msgctxt "CountryInfo"
+msgid "Comoros"
+msgstr "איי קומורו"
+
+msgctxt "CountryInfo"
+msgid "Congo, The Democratic Republic of the"
+msgstr "הרפובליקה הדמוקרטית של קונגו"
+
+msgctxt "CountryInfo"
+msgid "Congo"
+msgstr "קונגו"
+
+msgctxt "CountryInfo"
+msgid "Costa Rica"
+msgstr "קוסטה ריקה"
+
+msgctxt "CountryInfo"
+msgid "Cote dâIvoire"
+msgstr "חוף השנהב"
+
+msgctxt "CountryInfo"
+msgid "Croatia"
+msgstr "קרואטיה"
+
+msgctxt "CountryInfo"
+msgid "Cuba"
+msgstr "קובה"
+
+msgctxt "CountryInfo"
+msgid "Cyprus"
+msgstr "קפריסין"
+
+msgctxt "CountryInfo"
+msgid "Czech Republic"
+msgstr "קזחסטן"
+
+msgctxt "CountryInfo"
+msgid "Denmark"
+msgstr "דנמרק"
+
+msgctxt "CountryInfo"
+msgid "Djibouti"
+msgstr "ג'יבוטי"
+
+msgctxt "CountryInfo"
+msgid "Dominica"
+msgstr "דומיניקה"
+
+msgctxt "CountryInfo"
+msgid "Dominican Republic"
+msgstr "הרפובליקה הדומיניקנית"
+
+msgctxt "CountryInfo"
+msgid "Ecuador"
+msgstr "אקוודור"
+
+msgctxt "CountryInfo"
+msgid "Egypt"
+msgstr "מצריים"
+
+msgctxt "CountryInfo"
+msgid "El Salvador"
+msgstr "אל-סלוודור"
+
+msgctxt "CountryInfo"
+msgid "Equatorial Guinea"
+msgstr "גיניאה המשוונית"
+
+msgctxt "CountryInfo"
+msgid "Eritrea"
+msgstr "אריטראה"
+
+msgctxt "CountryInfo"
+msgid "Estonia"
+msgstr "אסטוניה"
+
+msgctxt "CountryInfo"
+msgid "France"
+msgstr "צרפת"
+
+msgctxt "CountryInfo"
+msgid "Gabon"
+msgstr "גיבון"
+
+msgctxt "CountryInfo"
+msgid "Gambia"
+msgstr "גמביה"
+
+msgctxt "CountryInfo"
+msgid "Georgia"
+msgstr "גאורגיה"
+
+msgctxt "CountryInfo"
+msgid "Germany"
+msgstr "גרמניה"
+
+msgctxt "CountryInfo"
+msgid "Ghana"
+msgstr "גאנה"
+
+msgctxt "CountryInfo"
+msgid "Grenada"
+msgstr "גראנאדה"
+
+msgctxt "CountryInfo"
+msgid "Guatemala"
+msgstr "גואטמאלה"
+
+msgctxt "CountryInfo"
+msgid "Guinea"
+msgstr "גינאה"
+
+msgctxt "CountryInfo"
+msgid "Guinea-Bissau"
+msgstr "גינאה-ביסאו"
+
+msgctxt "CountryInfo"
+msgid "Guyana"
+msgstr "גיאנה"
+
+msgctxt "CountryInfo"
+msgid "Hong Kong"
+msgstr "הונג-קונג"
+
+msgctxt "CountryInfo"
+msgid "Haiti"
+msgstr "האיטי"
+
+msgctxt "CountryInfo"
+msgid "Honduras"
+msgstr "הונדורס"
+
+msgctxt "CountryInfo"
+msgid "Israel"
+msgstr "ישראל"
+
+msgctxt "CountryInfo"
+msgid "Italy"
+msgstr "איטליה"
+
+msgctxt "CountryInfo"
+msgid "Jamaica"
+msgstr "ג'מאיקה"
+
+msgctxt "CountryInfo"
+msgid "Japan"
+msgstr "יפן"
+
+msgctxt "CountryInfo"
+msgid "Jordan"
+msgstr "ירדן"
+
+msgctxt "CountryInfo"
+msgid "Kazakhstan"
+msgstr "קזחסטן"
+
+msgctxt "CountryInfo"
+msgid "Kenya"
+msgstr "קניה"
+
+msgctxt "CountryInfo"
+msgid "Kiribati"
+msgstr "קיריבאטי"
+
+msgctxt "CountryInfo"
+msgid "Kuwait"
+msgstr "כווית"
+
+msgctxt "CountryInfo"
+msgid "Kyrgyzstan"
+msgstr "קירגיזיסטן"
+
+msgctxt "CountryInfo"
+msgid "Laos"
+msgstr "לאוס"
+
+msgctxt "CountryInfo"
+msgid "Latvia"
+msgstr "לטביה"
+
+msgctxt "CountryInfo"
+msgid "Lebanon"
+msgstr "לבנון"
+
+msgctxt "CountryInfo"
+msgid "Lesotho"
+msgstr "לסוטו"
+
+msgctxt "CountryInfo"
+msgid "Liberia"
+msgstr "ליבריה"
+
+msgctxt "CountryInfo"
+msgid "Liechtenstein"
+msgstr "ליכטנשטיין"
+
+msgctxt "CountryInfo"
+msgid "Lithuania"
+msgstr "ליטא"
+
+msgctxt "CountryInfo"
+msgid "Luxembourg"
+msgstr "לוקסמבורג"
+
+msgctxt "CountryInfo"
+msgid "Macedonia"
+msgstr "מקדוניה"
+
+msgctxt "CountryInfo"
+msgid "Madagascar"
+msgstr "מדגסקר"
+
+msgctxt "CountryInfo"
+msgid "Malawi"
+msgstr "מלאווי"
+
+msgctxt "CountryInfo"
+msgid "Malaysia"
+msgstr "מלזיה"
+
+msgctxt "CountryInfo"
+msgid "Mali"
+msgstr "מאלי"
+
+msgctxt "CountryInfo"
+msgid "Malta"
+msgstr "מלטה"
+
+msgctxt "CountryInfo"
+msgid "Marshall Islands"
+msgstr "איי מרשל"
+
+msgctxt "CountryInfo"
+msgid "Mauritania"
+msgstr "מאוריטניה"
+
+msgctxt "CountryInfo"
+msgid "Mauritius"
+msgstr "מאוריציוס"
+
+msgctxt "CountryInfo"
+msgid "Micronesia"
+msgstr "מיקרונזיה"
+
+msgctxt "CountryInfo"
+msgid "Moldova"
+msgstr "מולדובה"
+
+msgctxt "CountryInfo"
+msgid "Monaco"
+msgstr "מונקו"
+
+msgctxt "CountryInfo"
+msgid "Mongolia"
+msgstr "מונגוליה"
+
+msgctxt "CountryInfo"
+msgid "Montenegro"
+msgstr "מונטנגרו"
+
+msgctxt "CountryInfo"
+msgid "Morocco"
+msgstr "מרוקו"
+
+msgctxt "CountryInfo"
+msgid "Mozambique"
+msgstr "מוזמביק"
+
+msgctxt "CountryInfo"
+msgid "Namibia"
+msgstr "נמיביה"
+
+msgctxt "CountryInfo"
+msgid "Nauru"
+msgstr "Nauru"
+
+msgctxt "CountryInfo"
+msgid "Nepal"
+msgstr "נפאל"
+
+msgctxt "CountryInfo"
+msgid "Netherlands"
+msgstr "הולנד"
+
+msgctxt "CountryInfo"
+msgid "New Zealand"
+msgstr "ניוזילנד"
+
+msgctxt "CountryInfo"
+msgid "Nicaragua"
+msgstr "ניקרגואה"
+
+msgctxt "CountryInfo"
+msgid "Niger"
+msgstr "ניגר"
+
+msgctxt "CountryInfo"
+msgid "Nigeria"
+msgstr "ניגריה"
+
+msgctxt "CountryInfo"
+msgid "Norway"
+msgstr "נורווגיה"
+
+msgctxt "CountryInfo"
+msgid "Oman"
+msgstr "עמאן"
+
+msgctxt "CountryInfo"
+msgid "Pakistan"
+msgstr "פקיסטן"
+
+msgctxt "CountryInfo"
+msgid "Palau"
+msgstr "בפאלאא"
+
+msgctxt "CountryInfo"
+msgid "Palestine"
+msgstr "פלסטין"
+
+msgctxt "CountryInfo"
+msgid "Panama"
+msgstr "פנמה"
+
+msgctxt "CountryInfo"
+msgid "Papua New Guinea"
+msgstr "פאפה ניו גיני"
+
+msgctxt "CountryInfo"
+msgid "Paraguay"
+msgstr "פרגוואי"
+
+msgctxt "CountryInfo"
+msgid "Peru"
+msgstr "פרו"
+
+msgctxt "CountryInfo"
+msgid "Philippines"
+msgstr "הפיליפינים"
+
+msgctxt "CountryInfo"
+msgid "Poland"
+msgstr "פולין"
+
+msgctxt "CountryInfo"
+msgid "Portugal"
+msgstr "פורטוגל"
+
+msgctxt "CountryInfo"
+msgid "Qatar"
+msgstr "קטאר"
+
+msgctxt "CountryInfo"
+msgid "Romania"
+msgstr "רומניה"
+
+msgctxt "CountryInfo"
+msgid "Russia"
+msgstr "רוסיה"
+
+msgctxt "CountryInfo"
+msgid "Rwanda"
+msgstr "רואנדה"
+
+msgctxt "CountryInfo"
+msgid "Saint Kitts & Nevis"
+msgstr "סנט קיטס ונוויס"
+
+msgctxt "CountryInfo"
+msgid "Saint Lucia"
+msgstr "סט. לושיה"
+
+msgctxt "CountryInfo"
+msgid "Saint Vincent & the Grenadines"
+msgstr "סנט וינסנט והגרנדינים"
+
+msgctxt "CountryInfo"
+msgid "Samoa"
+msgstr "סמואה"
+
+msgctxt "CountryInfo"
+msgid "San Marino"
+msgstr "סן מרינו"
+
+msgctxt "CountryInfo"
+msgid "Sao Tome & Principe"
+msgstr "סאו טומה ופרינסיפה"
+
+msgctxt "CountryInfo"
+msgid "Saudi Arabia"
+msgstr "ערב הסעודית"
+
+msgctxt "CountryInfo"
+msgid "Senegal"
+msgstr "סנגל"
+
+msgctxt "CountryInfo"
+msgid "Serbia"
+msgstr "סרביה"
+
+msgctxt "CountryInfo"
+msgid "Seychelles"
+msgstr "סיישל"
+
+msgctxt "CountryInfo"
+msgid "Sierra Leone"
+msgstr "סיירה לאונה"
+
+msgctxt "CountryInfo"
+msgid "Singapore"
+msgstr "סינגפור"
+
+msgctxt "CountryInfo"
+msgid "Slovakia"
+msgstr "סלובקיה"
+
+msgctxt "CountryInfo"
+msgid "Slovenia"
+msgstr "סלובניה"
+
+msgctxt "CountryInfo"
+msgid "Solomon Islands"
+msgstr "איי שלמה"
+
+msgctxt "CountryInfo"
+msgid "Somalia"
+msgstr "סומליה"
+
+msgctxt "CountryInfo"
+msgid "South Africa"
+msgstr "דרום אפריקה"
+
+msgctxt "CountryInfo"
+msgid "Spain"
+msgstr "ספרד"
+
+msgctxt "CountryInfo"
+msgid "Sri Lanka"
+msgstr "סרי לנקה"
+
+msgctxt "CountryInfo"
+msgid "Sudan"
+msgstr "סודן"
+
+msgctxt "CountryInfo"
+msgid "Suriname"
+msgstr "סורינאם"
+
+msgctxt "CountryInfo"
+msgid "Swaziland"
+msgstr "סווזילנד"
+
+msgctxt "CountryInfo"
+msgid "Sweden"
+msgstr "שוודיה"
+
+msgctxt "CountryInfo"
+msgid "Switzerland"
+msgstr "שוויצריה"
+
+msgctxt "CountryInfo"
+msgid "Syria"
+msgstr "סוריה"
+
+msgctxt "CountryInfo"
+msgid "Tajikistan"
+msgstr "טג'יקיסטן"
+
+msgctxt "CountryInfo"
+msgid "Tanzania"
+msgstr "טנזניה"
+
+msgctxt "CountryInfo"
+msgid "Thailand"
+msgstr "תאילנד"
+
+msgctxt "CountryInfo"
+msgid "Timor-Leste (East Timor)"
+msgstr "טימור-לאסטה (מזרח טימור)"
+
+msgctxt "CountryInfo"
+msgid "Togo"
+msgstr "טוגו"
+
+msgctxt "CountryInfo"
+msgid "Tonga"
+msgstr "טונגה"
+
+msgctxt "CountryInfo"
+msgid "Trinidad & Tobago"
+msgstr "טרינידד וטובגו"
+
+msgctxt "CountryInfo"
+msgid "Tunisia"
+msgstr "טוניס"
+
+msgctxt "CountryInfo"
+msgid "Turkey"
+msgstr "טורקיה"
+
+msgctxt "CountryInfo"
+msgid "Turkmenistan"
+msgstr "טורקמניסטן"
+
+msgctxt "CountryInfo"
+msgid "Tuvalu"
+msgstr "טובאלו"
+
+msgctxt "CountryInfo"
+msgid "Uganda"
+msgstr "אוגנדה"
+
+msgctxt "CountryInfo"
+msgid "Ukraine"
+msgstr "אוקראינה"
+
+msgctxt "CountryInfo"
+msgid "United Arab Emirates"
+msgstr "איחוד האמירויות הערביות"
+
+msgctxt "CountryInfo"
+msgid "United Kingdom"
+msgstr "בריטניה"
+
+msgctxt "CountryInfo"
+msgid "United States"
+msgstr "ארצות הברית"
+
+msgctxt "CountryInfo"
+msgid "Uruguay"
+msgstr "אורוגוואי"
+
+msgctxt "CountryInfo"
+msgid "Uzbekistan"
+msgstr "אוזבקיסטן"
+
+msgctxt "CountryInfo"
+msgid "Vanuatu"
+msgstr "ונואטו"
+
+msgctxt "CountryInfo"
+msgid "Vatican"
+msgstr "וותיקן"
+
+msgctxt "CountryInfo"
+msgid "Venezuela"
+msgstr "וונצואלה"
+
+msgctxt "CountryInfo"
+msgid "Vietnam"
+msgstr "וויאטנם"
+
+msgctxt "CountryInfo"
+msgid "Western Sahara"
+msgstr "סהרה המערבית"
+
+msgctxt "CountryInfo"
+msgid "Yemen"
+msgstr "תימן"
+
+msgctxt "CountryInfo"
+msgid "Zambia"
+msgstr "זמביה"
+
+msgctxt "CountryInfo"
+msgid "Zimbabwe"
+msgstr "זימבבואה"
+
+msgctxt "CountryInfo"
+msgid "Zaire"
+msgstr "זאיר"
+
+msgctxt "CountryInfo"
+msgid "Albania"
+msgstr "אלבניה"
+
+msgctxt "CountryInfo"
+msgid "Algeria"
+msgstr "אלג'יריה"
+
+msgctxt "CountryInfo"
+msgid "Austria"
+msgstr "אוסטריה"
+
+msgctxt "CountryInfo"
+msgid "Bahrain"
+msgstr "בחריין"
+
+msgctxt "CountryInfo"
+msgid "Benin"
+msgstr "בנין"
+
+msgctxt "CountryInfo"
+msgid "Ethiopia"
+msgstr "אתיופיה"
+
+msgctxt "CountryInfo"
+msgid "Fiji"
+msgstr "פיג'י"
+
+msgctxt "CountryInfo"
+msgid "Finland"
+msgstr "פינלנד"
+
+msgctxt "CountryInfo"
+msgid "Greece"
+msgstr "יוון"
+
+msgctxt "CountryInfo"
+msgid "Guam"
+msgstr "גואם"
+
+msgctxt "CountryInfo"
+msgid "Hungary"
+msgstr "הונגריה"
+
+msgctxt "CountryInfo"
+msgid "Iceland"
+msgstr "איסלנד"
+
+msgctxt "CountryInfo"
+msgid "India"
+msgstr "הודו"
+
+msgctxt "CountryInfo"
+msgid "Indonesia"
+msgstr "אינדונזיה"
+
+msgctxt "CountryInfo"
+msgid "Iran"
+msgstr "איראן"
+
+msgctxt "CountryInfo"
+msgid "Iraq"
+msgstr "עיראק"
+
+msgctxt "CountryInfo"
+msgid "Ireland"
+msgstr "אירלנד"
+
+msgctxt "CountryInfo"
+msgid "Korea, North"
+msgstr "צפון קוריאה"
+
+msgctxt "CountryInfo"
+msgid "Korea, South"
+msgstr "דרום קוריאה"
+
+msgctxt "CountryInfo"
+msgid "Libya"
+msgstr "לוב"
+
+msgctxt "CountryInfo"
+msgid "Maldives"
+msgstr "המלדיבים"
+
+msgctxt "CountryInfo"
+msgid "Mexico"
+msgstr "מקסיקו"
+
+msgctxt "CountryInfo"
+msgid "Myanmar"
+msgstr "מיאנמאר"
+
+msgctxt "CountryInfo"
+msgid "Taiwan"
+msgstr "טאיוואן"
+
+msgctxt "CrashReportDialog"
+msgid "Submit a Crash Report"
+msgstr "שליחת דו״ח התרסקות"
+
+msgctxt "CrashReportDialog"
+msgid "Vidalia encountered an error and needed to close"
+msgstr "Vidalia נתקל בשגיאה ונאלץ להסגר"
+
+msgctxt "CrashReportDialog"
+msgid "Restart Vidalia"
+msgstr "אתחול Vidalia"
+
+msgctxt "CrashReportDialog"
+msgid "Don't Restart"
+msgstr "לא לאתחל"
+
+msgctxt "CrashReportDialog"
+msgid "Unable to restart Vidalia"
+msgstr "לא ניתן לאתחל את Vidalia"
+
+msgctxt "CrashReportDialog"
+msgid ""
+"We were unable to automatically restart Vidalia. Please restart Vidalia "
+"manually."
+msgstr "אין ביכולתנו לאתחל את Vidalia באופן אוטומטי. נא לאתחל את Vidalia ידנית."
+
+msgctxt "CrashReportDialog"
+msgid "Please fill a ticket in:"
+msgstr "נא למלא ספח כרטיס בכתובת:"
+
+msgctxt "CrashReportDialog"
+msgid ""
+"<a "
+"href=\"https://trac.torproject.org/projects/tor/newticket\">https://trac.torproject.org/projects/tor/newticket</a>"
+msgstr "<a href=\"https://trac.torproject.org/projects/tor/newticket\">https://trac.torproject.org/projects/tor/newticket</a>"
+
+msgctxt "CrashReportDialog"
+msgid ""
+"A crash report has been created that you can send to the Vidalia developers "
+"to help identify and fix the problem. The submitted report does not contain "
+"any personally identifying information."
+msgstr "דו״ח התרסקות נוצר וביכולתך לשלוחו אל המפתחים של Vidalia כדי לעזור לזהות ולתקן את הבעיה. הדו״ח שנשלח לא מכיל שום מידע אישי שעלול לזהותך."
+
+msgctxt "CrashReportDialog"
+msgid ""
+"with a description of what you were doing before the application crashed, "
+"along with the following files corresponding to the crash report:"
+msgstr "יחד עם תיאור של מה הינך עושה לפני שהיישום מתרסק, ביחד עם הקבצים הבאים שתואמים לדו״ח ההתרסקות:"
+
+msgctxt "GeneralPage"
+msgid "Executables (*.exe)"
+msgstr "קבצי הרצה (*.exe)"
+
+msgctxt "GeneralPage"
+msgid "Select Path to Tor"
+msgstr "בחירת נתיב אל Tor"
+
+msgctxt "GeneralPage"
+msgid "Select Proxy Executable"
+msgstr "בחירת קובץ הרצה לפרוקסי"
+
+msgctxt "GeneralPage"
+msgid "You must specify the name of your Tor executable."
+msgstr "עליך לציין את השם של קובץ הרצת Tor שלך."
+
+msgctxt "GeneralPage"
+msgid "Start Vidalia when my system starts"
+msgstr "הפעלת Vidalia בעת הפעלת המערכת"
+
+msgctxt "GeneralPage"
+msgid "Browse"
+msgstr "עיון"
+
+msgctxt "GeneralPage"
+msgid "Start the Tor software when Vidalia starts"
+msgstr "הפעלת היישום Tor כאשר Vidalia מופעל"
+
+msgctxt "GeneralPage"
+msgid "Tor"
+msgstr "Tor"
+
+msgctxt "GeneralPage"
+msgid "Proxy Application (optional)"
+msgstr "יישום פרוקסי (אופציונאלי)"
+
+msgctxt "GeneralPage"
+msgid "Start a proxy application when Tor starts"
+msgstr "הפעלת יישום פרוקסי כאשר Tor מופעל"
+
+msgctxt "GeneralPage"
+msgid "Proxy Application Arguments:"
+msgstr "ארוגמנטים של יישום פרוקסי:"
+
+msgctxt "GeneralPage"
+msgid "Software Updates"
+msgstr "עדכוני תוכנה"
+
+msgctxt "GeneralPage"
+msgid "Check for new software updates automatically"
+msgstr "חיפוש עבור עדכוני תוכנה חדשים אוטומטית"
+
+msgctxt "GeneralPage"
+msgid "Check Now"
+msgstr "חפש עכשיו"
+
+msgctxt "GraphFrame"
+msgid "%1 KB/s"
+msgstr "%1 ק״ב/ש"
+
+msgctxt "GraphFrame"
+msgid "%1 KB"
+msgstr "%1 ק״ב"
+
+msgctxt "GraphFrame"
+msgid "%1 MB"
+msgstr "%1 מ״ב"
+
+msgctxt "GraphFrame"
+msgid "%1 GB"
+msgstr "%1 ג״ב"
+
+msgctxt "GraphFrame"
+msgid "Recv:"
+msgstr "התקבלו:"
+
+msgctxt "GraphFrame"
+msgid "Sent:"
+msgstr "נשלחו:"
+
+msgctxt "HelpBrowser"
+msgid "Supplied XML file is not a valid Contents document."
+msgstr "קובץ XML שסופק אינו מסמך תכנים תקף."
+
+msgctxt "HelpBrowser"
+msgid "Search reached end of document"
+msgstr "החיפוש הגיע אל סוף המסמך"
+
+msgctxt "HelpBrowser"
+msgid "Search reached start of document"
+msgstr "החיפוש הגיע אל תחילת המסמך"
+
+msgctxt "HelpBrowser"
+msgid "Text not found in document"
+msgstr "התמליל לא נמצא במסמך"
+
+msgctxt "HelpBrowser"
+msgid "Found %1 results"
+msgstr "נמצאו 1% תוצאות"
+
+msgctxt "HelpBrowser"
+msgid "Vidalia Help"
+msgstr "עזרה - Vidalia"
+
+msgctxt "HelpBrowser"
+msgid "Back"
+msgstr "אחורה"
+
+msgctxt "HelpBrowser"
+msgid "Move to previous page (Backspace)"
+msgstr "חזרה אל דף הקודם (Backspace)"
+
+msgctxt "HelpBrowser"
+msgid "Backspace"
+msgstr "Backspace"
+
+msgctxt "HelpBrowser"
+msgid "Forward"
+msgstr "קדימה"
+
+msgctxt "HelpBrowser"
+msgid "Move to next page (Shift+Backspace)"
+msgstr "מעבר אל הדף הבא (Shift+Backspace)"
+
+msgctxt "HelpBrowser"
+msgid "Shift+Backspace"
+msgstr "Shift+Backspace"
+
+msgctxt "HelpBrowser"
+msgid "Home"
+msgstr "דף בית"
+
+msgctxt "HelpBrowser"
+msgid "Move to the Home page (Ctrl+H)"
+msgstr "מעבר אל דף הבית (Ctrl+H)"
+
+msgctxt "HelpBrowser"
+msgid "Ctrl+H"
+msgstr "Ctrl+H"
+
+msgctxt "HelpBrowser"
+msgid "Find"
+msgstr "מציאה"
+
+msgctxt "HelpBrowser"
+msgid "Search for a word or phrase on current page (Ctrl+F)"
+msgstr "חיפש עבור מילה או ביטוי בדף הנוכחי (Ctrl+F)"
+
+msgctxt "HelpBrowser"
+msgid "Ctrl+F"
+msgstr "Ctrl+F"
+
+msgctxt "HelpBrowser"
+msgid "Close"
+msgstr "סגירה"
+
+msgctxt "HelpBrowser"
+msgid "Close Vidalia Help"
+msgstr "סגירת עזרה - Vidalia"
+
+msgctxt "HelpBrowser"
+msgid "Esc"
+msgstr "Esc"
+
+msgctxt "HelpBrowser"
+msgid "Find:"
+msgstr "מציאה:"
+
+msgctxt "HelpBrowser"
+msgid "Find Previous"
+msgstr "מציאת הבא"
+
+msgctxt "HelpBrowser"
+msgid "Find Next"
+msgstr "מציאת קודם"
+
+msgctxt "HelpBrowser"
+msgid "Case sensitive"
+msgstr "התאמת אותיות גדולות/קטנות"
+
+msgctxt "HelpBrowser"
+msgid "Whole words only"
+msgstr "מילים שלמות בלבד"
+
+msgctxt "HelpBrowser"
+msgid "Help Topics"
+msgstr "נושאי עזרה"
+
+msgctxt "HelpBrowser"
+msgid "Contents"
+msgstr "תכנים"
+
+msgctxt "HelpBrowser"
+msgid "Search"
+msgstr "חיפוש"
+
+msgctxt "HelpBrowser"
+msgid "Searching for:"
+msgstr "מחפש:"
+
+msgctxt "HelpBrowser"
+msgid "Found Documents"
+msgstr "מסמכים שנמצאו"
+
+msgctxt "HelpBrowser"
+msgid "Error Loading Help Contents:"
+msgstr "שגיאה בעת טעינת תכני עזרה:"
+
+msgctxt "HelpTextBrowser"
+msgid "Opening External Link"
+msgstr "פתיחת קישור חיצוני"
+
+msgctxt "HelpTextBrowser"
+msgid ""
+"Vidalia can open the link you selected in your default Web browser. If your "
+"browser is not currently configured to use Tor then the request will not be "
+"anonymous."
+msgstr "Vidalia יכול לפתוח את הקישור שבחרת בדפדפן ברירת המחדל שלך. אם הדפדפן אינו מותאם לשימוש ביישום Tor, הבקשה לא תהיה אלמונית."
+
+msgctxt "HelpTextBrowser"
+msgid "Do you want Vidalia to open the link in your Web browser?"
+msgstr "האם ברצונך שהיישום Vidalia יפתח את הקישור בדפדפן?"
+
+msgctxt "HelpTextBrowser"
+msgid "Unable to Open Link"
+msgstr "לא ניתן לפתוח את הקישור"
+
+msgctxt "HelpTextBrowser"
+msgid ""
+"Vidalia was unable to open the selected link in your Web browser. You can "
+"still copy the URL and paste it into your browser."
+msgstr "Vidalia לא הצליח לפתוח את הקישור בדפדפן. ביכולתך להעתיק את הכתובת אל הדפדפן שלך בצורה ידנית."
+
+msgctxt "HelpTextBrowser"
+msgid "Error opening help file:"
+msgstr "שגיאה בפתיחת קובץ עזרה:"
+
+msgctxt "LicenseDialog"
+msgid "License Information"
+msgstr "מידע רישוי"
+
+msgctxt "LicenseDialog"
+msgid "License"
+msgstr "רישיון"
+
+msgctxt "LicenseDialog"
+msgid "Credits"
+msgstr "תודות"
+
+msgctxt "LogEvent"
+msgid "Debug"
+msgstr "ניפוי שגיאות"
+
+msgctxt "LogEvent"
+msgid "Info"
+msgstr "Info"
+
+msgctxt "LogEvent"
+msgid "Notice"
+msgstr "Notice"
+
+msgctxt "LogEvent"
+msgid "Warning"
+msgstr "Warning"
+
+msgctxt "LogEvent"
+msgid "Error"
+msgstr "Error"
+
+msgctxt "LogEvent"
+msgid "Unknown"
+msgstr "Unknown"
+
+msgctxt "LogTreeItem"
+msgid "Debug"
+msgstr "ניפוי שגיאות"
+
+msgctxt "LogTreeItem"
+msgid "Info"
+msgstr "Info"
+
+msgctxt "LogTreeItem"
+msgid "Notice"
+msgstr "Notice"
+
+msgctxt "LogTreeItem"
+msgid "Warning"
+msgstr "Warning"
+
+msgctxt "LogTreeItem"
+msgid "Error"
+msgstr "Error"
+
+msgctxt "LogTreeItem"
+msgid "Unknown"
+msgstr "Unknown"
+
+msgctxt "MainWindow"
+msgid "Start Tor"
+msgstr "הפעלת Tor"
+
+msgctxt "MainWindow"
+msgid "Exit"
+msgstr "יציאה"
+
+msgctxt "MainWindow"
+msgid "Bandwidth Graph"
+msgstr "גרף רוחב פס"
+
+msgctxt "MainWindow"
+msgid "Message Log"
+msgstr "יומן הודעות"
+
+msgctxt "MainWindow"
+msgid "Network Map"
+msgstr "מפת רשת"
+
+msgctxt "MainWindow"
+msgid "Control Panel"
+msgstr "לוח בקרה"
+
+msgctxt "MainWindow"
+msgid "Settings"
+msgstr "הגדרות"
+
+msgctxt "MainWindow"
+msgid "About"
+msgstr "אודות"
+
+msgctxt "MainWindow"
+msgid "Help"
+msgstr "עזרה"
+
+msgctxt "MainWindow"
+msgid "New Identity"
+msgstr "זהות חדשה"
+
+msgctxt "MainWindow"
+msgid "Ctrl+T"
+msgstr "Ctrl+T"
+
+msgctxt "MainWindow"
+msgid "Ctrl+B"
+msgstr "Ctrl+B"
+
+msgctxt "MainWindow"
+msgid "Ctrl+L"
+msgstr "Ctrl+L"
+
+msgctxt "MainWindow"
+msgid "Ctrl+N"
+msgstr "Ctrl+N"
+
+msgctxt "MainWindow"
+msgid "Ctrl+?"
+msgstr "Ctrl+?"
+
+msgctxt "MainWindow"
+msgid "Ctrl+I"
+msgstr "Ctrl+F"
+
+msgctxt "MainWindow"
+msgid "Ctrl+P"
+msgstr "Ctrl+F"
+
+msgctxt "MainWindow"
+msgid "Tor"
+msgstr "Tor"
+
+msgctxt "MainWindow"
+msgid "View"
+msgstr "תצוגה"
+
+msgctxt "MainWindow"
+msgid "Vidalia Help"
+msgstr "עזרה - Vidalia"
+
+msgctxt "MainWindow"
+msgid "Error starting web browser"
+msgstr "שגיאה בעת הפעלת דפדפן"
+
+msgctxt "MainWindow"
+msgid "Vidalia was unable to start the configured web browser"
+msgstr "Vidalia לא מסוגל היה להפעיל את דפדפן הרשת המוגדר"
+
+msgctxt "MainWindow"
+msgid "Error starting IM client"
+msgstr "שגיאה בעת הפעלת לקוח מסרים מידיים"
+
+msgctxt "MainWindow"
+msgid "Vidalia was unable to start the configured IM client"
+msgstr "Vidalia לא מסוגל היה להפעיל את לקוח המסרים המידיים המוגדר"
+
+msgctxt "MainWindow"
+msgid "Error starting proxy server"
+msgstr "שגיאה בעת הפעלת שרת פרוקסי"
+
+msgctxt "MainWindow"
+msgid "Vidalia was unable to start the configured proxy server"
+msgstr "Vidalia לא מסוגל היה להפעיל את שרת הפרוקסי המוגדר"
+
+msgctxt "MainWindow"
+msgid "Connecting to a relay directory"
+msgstr "מתחבר כעת אל מדור ממסר"
+
+msgctxt "MainWindow"
+msgid "Establishing an encrypted directory connection"
+msgstr "מקים כעת חיבור ספריות מוצפן"
+
+msgctxt "MainWindow"
+msgid "Retrieving network status"
+msgstr "מאתר כעת את מצב הרשת"
+
+msgctxt "MainWindow"
+msgid "Loading network status"
+msgstr "טוען כעת את מצב הרשת"
+
+msgctxt "MainWindow"
+msgid "Loading authority certificates"
+msgstr "טוען כעת אישורים אמינים"
+
+msgctxt "MainWindow"
+msgid "Requesting relay information"
+msgstr "מבקש כעת מידע ממסר"
+
+msgctxt "MainWindow"
+msgid "Loading relay information"
+msgstr "טוען כעת מידע ממסר"
+
+msgctxt "MainWindow"
+msgid "Connecting to the Tor network"
+msgstr "מתחבר כעת אל רשת Tor"
+
+msgctxt "MainWindow"
+msgid "Establishing a Tor circuit"
+msgstr "מקים כעת מעגל Tor"
+
+msgctxt "MainWindow"
+msgid "Connected to the Tor network!"
+msgstr "מחובר לרשת Tor!"
+
+msgctxt "MainWindow"
+msgid "miscellaneous"
+msgstr "שונות"
+
+msgctxt "MainWindow"
+msgid "identity mismatch"
+msgstr "זהות אינה תואמת"
+
+msgctxt "MainWindow"
+msgid "done"
+msgstr "בוצע"
+
+msgctxt "MainWindow"
+msgid "connection refused"
+msgstr "החיבור נדחה"
+
+msgctxt "MainWindow"
+msgid "connection timeout"
+msgstr "החיבור התעכב"
+
+msgctxt "MainWindow"
+msgid "read/write error"
+msgstr "שגיאה בקריאה/כתיבה"
+
+msgctxt "MainWindow"
+msgid "no route to host"
+msgstr "אין נתיב אל השרת"
+
+msgctxt "MainWindow"
+msgid "insufficient resources"
+msgstr "משאבים לא מספיקים"
+
+msgctxt "MainWindow"
+msgid "unknown"
+msgstr "לא ידוע"
+
+msgctxt "MainWindow"
+msgid "Tor is not running"
+msgstr "Tor אינו מורץ כעת"
+
+msgctxt "MainWindow"
+msgid "Tor is shutting down"
+msgstr "Tor בתהליך עצירה"
+
+msgctxt "MainWindow"
+msgid "Stop Tor Now"
+msgstr "עצור את Tor עכשיו"
+
+msgctxt "MainWindow"
+msgid "Stop Tor"
+msgstr "עצירת Tor"
+
+msgctxt "MainWindow"
+msgid "Starting the Tor software"
+msgstr "מפעיל את Tor כעת"
+
+msgctxt "MainWindow"
+msgid "Starting Tor"
+msgstr "מפעיל את Tor כעת"
+
+msgctxt "MainWindow"
+msgid "Error Starting Tor"
+msgstr "שגיאה בעת הפעלת Tor"
+
+msgctxt "MainWindow"
+msgid ""
+"Vidalia was unable to start Tor. Check your settings to ensure the correct "
+"name and location of your Tor executable is specified."
+msgstr "Vidalia לא הצליח להפעיל את Tor. נא לבדוק את ההגדרות ולוודא שהשם ומיקום קובץ הרצת Tor שצוינו אכן תקפים."
+
+msgctxt "MainWindow"
+msgid "Connecting to Tor"
+msgstr "מתחבר אל Tor כעת"
+
+msgctxt "MainWindow"
+msgid "Connection Error"
+msgstr "שגיאת חיבור"
+
+msgctxt "MainWindow"
+msgid "Relaying is Enabled"
+msgstr "ממסור מאופשר כעת"
+
+msgctxt "MainWindow"
+msgid "Error Shutting Down"
+msgstr "שגיאה במהלך כיבוי"
+
+msgctxt "MainWindow"
+msgid "Vidalia was unable to stop the Tor software."
+msgstr "Vidalia לא מסוגל היה לעצור את היישום Tor."
+
+msgctxt "MainWindow"
+msgid "Unexpected Error"
+msgstr "שגיאה בלתי צפוייה"
+
+msgctxt "MainWindow"
+msgid "Authenticating to Tor"
+msgstr "מזדהה מול Tor."
+
+msgctxt "MainWindow"
+msgid "Cookie Authentication Required"
+msgstr "אימות עוגייה (Cookie) נדרש"
+
+msgctxt "MainWindow"
+msgid ""
+"The Tor software requires Vidalia to send the contents of an authentication "
+"cookie, but Vidalia was unable to find one."
+msgstr "היישום Tor דורש מן Vidalia לשלוח את התכנים של עוגיית אימות, אך Vidalia לא מסוגל היה למצוא עוגייה שכזאת."
+
+msgctxt "MainWindow"
+msgid "Would you like to browse for the file 'control_auth_cookie' yourself?"
+msgstr "האם ברצונך לציין את המיקום של הקובץ 'control_auth_cookie' בעצמך?"
+
+msgctxt "MainWindow"
+msgid "Data Directory"
+msgstr "מדור מידע"
+
+msgctxt "MainWindow"
+msgid "Control Cookie (control_auth_cookie)"
+msgstr "עוגיית בקרה (control_auth_cookie)"
+
+msgctxt "MainWindow"
+msgid "Error Registering for Events"
+msgstr "שגיאה בעת רישום לאירועים"
+
+msgctxt "MainWindow"
+msgid ""
+"Vidalia was unable to register for some events. Many of Vidalia's features "
+"may be unavailable."
+msgstr "Vidalia לא מסוגל היה להירשם למספר אירועים. כתוצאה מכך תכונות רבות של Vidalia לא יהיו זמינות."
+
+msgctxt "MainWindow"
+msgid "Authentication Error"
+msgstr "שגיאה בהזדהות"
+
+msgctxt "MainWindow"
+msgid "Vidalia was unable to authenticate to the Tor software. (%1)"
+msgstr "Vidalia לא מסוגל היה לאמת את Tor. (%1)"
+
+msgctxt "MainWindow"
+msgid "Please check your control port authentication settings."
+msgstr "נא לבדוק את הגדרות אימות בקרת היציאה שלך."
+
+msgctxt "MainWindow"
+msgid "Tor Update Available"
+msgstr "עדכון Tor זמין"
+
+msgctxt "MainWindow"
+msgid ""
+"The currently installed version of Tor is out of date or no longer "
+"recommended. Please visit the Tor website to download the latest version."
+msgstr "גרסת Tor הנוכחית מיושנת ולא מומלצת יותר לשימוש. אנא בקר באתר Tor על מנת להוריד את הגרסה האחרונה."
+
+msgctxt "MainWindow"
+msgid "Tor website: %1"
+msgstr "אתר Tor: %1"
+
+msgctxt "MainWindow"
+msgid ""
+"All subsequent connections will appear to be different than your old "
+"connections."
+msgstr "כל החיבורים הבאים יראו שונים מהחיבורים הישנים."
+
+msgctxt "MainWindow"
+msgid "Failed to Create New Identity"
+msgstr "כשלון ביצירת זהות חדשה"
+
+msgctxt "MainWindow"
+msgid "Port Forwarding Failed"
+msgstr "כשלון ב-Port Forwarding"
+
+msgctxt "MainWindow"
+msgid "Vidalia was unable to configure automatic port forwarding."
+msgstr "Vidalia לא מסוגל היה להתקין port forwarding באופן אוטומטי."
+
+msgctxt "MainWindow"
+msgid "Vidalia Control Panel"
+msgstr "לוח הבקרה של Vidalia"
+
+msgctxt "MainWindow"
+msgid "Status"
+msgstr "מצב"
+
+msgctxt "MainWindow"
+msgid "Vidalia Shortcuts"
+msgstr "קיצורי־דרך Vidalia"
+
+msgctxt "MainWindow"
+msgid "Setup Relaying"
+msgstr "הגדרת ממסור"
+
+msgctxt "MainWindow"
+msgid "Set up a relay and help the network grow"
+msgstr "הגדרת ממסר וסיוע לצמיחת הרשת"
+
+msgctxt "MainWindow"
+msgid "View the Network"
+msgstr "הצגת הרשת"
+
+msgctxt "MainWindow"
+msgid "View a map of the Tor network"
+msgstr "הצגת מפה של רשת Tor"
+
+msgctxt "MainWindow"
+msgid "Use a New Identity"
+msgstr "שימוש בזהות חדשה"
+
+msgctxt "MainWindow"
+msgid "Make subsequent connections appear new"
+msgstr "גרום לחיבורים הבאים להיראות כחדשים"
+
+msgctxt "MainWindow"
+msgid "View recent bandwidth usage"
+msgstr "הצגת השימוש האחרון ברוחב הפס"
+
+msgctxt "MainWindow"
+msgid "View log message history"
+msgstr "הצגת היסטורית יומן ההודעות"
+
+msgctxt "MainWindow"
+msgid "View help documentation"
+msgstr "הצגת מסמכי עזרה"
+
+msgctxt "MainWindow"
+msgid "Configure Vidalia"
+msgstr "הגדרת Vidalia"
+
+msgctxt "MainWindow"
+msgid "View version and license information"
+msgstr "הצגת מידע גרסה ורישיון"
+
+msgctxt "MainWindow"
+msgid "Exit Vidalia"
+msgstr "יציאה מן Vidalia"
+
+msgctxt "MainWindow"
+msgid "Show this window on startup"
+msgstr "הצגת חלון זה בעת אתחול"
+
+msgctxt "MainWindow"
+msgid "Hide"
+msgstr "הסתרה"
+
+msgctxt "MainWindow"
+msgid "Hide this window"
+msgstr "הסתרת חלון זה"
+
+msgctxt "MainWindow"
+msgid "Password Reset Failed"
+msgstr "אתחול סיסמה נכשל"
+
+msgctxt "MainWindow"
+msgid ""
+"Vidalia tried to reset Tor's control password, but was not able to restart "
+"the Tor software. Please check your Task Manager to ensure there are no "
+"other Tor processes running."
+msgstr "Vidalia ניסה לאפס את סיסמת לוח הבקרה של Tor, אך לא מסוגל היה לאתחל את היישום Tor. נא לוודא באמצעות מנהל המשימות שלך שאין עוד תהליכים פעילים של Tor."
+
+msgctxt "MainWindow"
+msgid ""
+"The currently installed version of Tor is out of date or no longer "
+"recommended."
+msgstr "גרסת Tor שמותקנת כעת הינה מיושנת ולא מומלצת עוד לשימוש."
+
+msgctxt "MainWindow"
+msgid ""
+"Would you like to check if a newer package is available for installation?"
+msgstr "האם ברצונך לבדוק אם חבילות חדשות יותר זמינות להתקנה?"
+
+msgctxt "MainWindow"
+msgid "Potentially Unsafe Connection"
+msgstr "חיבור לא בטוח פוטנציאלית"
+
+msgctxt "MainWindow"
+msgid ""
+"Tor has automatically closed your connection in order to protect your "
+"anonymity."
+msgstr "Tor סגר אוטומטית את החיבור על מנת לשמור על האלמוניות שלך."
+
+msgctxt "MainWindow"
+msgid "Update Failed"
+msgstr "עידכון Tor זמין"
+
+msgctxt "MainWindow"
+msgid "Your software is up to date"
+msgstr "התוכנה שברשותך הינה מעודכנת"
+
+msgctxt "MainWindow"
+msgid ""
+"There are no new Tor software packages available for your computer at this "
+"time."
+msgstr "לא קיימות חבילות תוכנה חדשות שזמינות למחשבך כרגע."
+
+msgctxt "MainWindow"
+msgid "Installation Failed"
+msgstr "ההתקנה נכשלה"
+
+msgctxt "MainWindow"
+msgid "Vidalia was unable to install your software updates."
+msgstr "Vidalia לא הצליח להתקין את עדכוני התוכנה."
+
+msgctxt "MainWindow"
+msgid "The following error occurred:"
+msgstr "השגיאות הבאות אירעו:"
+
+msgctxt "MainWindow"
+msgid ""
+"Anything sent over this connection could be monitored. Please check your "
+"application's configuration and use only encrypted protocols, such as SSL, "
+"if possible."
+msgstr "כל מה שנשלח דרך חיבור זה עלול להימצא תחת האזנה. נא לבדוק את הגדרת היישום שלך בניסיון לעשות שימוש בפרוטוקולים מוצפנים בלבד, כגון SSL, במידה וניתן."
+
+msgctxt "MainWindow"
+msgid "Bootstrapping torrc from %1 to %2"
+msgstr "מחלץ כעת את torrc מן %1 אל %2"
+
+msgctxt "MainWindow"
+msgid "(probably Telnet)"
+msgstr "(ייתכן Telnet)"
+
+msgctxt "MainWindow"
+msgid "(probably an email client)"
+msgstr "(ייתכן לקוח דוא״ל)"
+
+msgctxt "MainWindow"
+msgid ""
+"One of your applications %1 appears to be making a potentially unencrypted "
+"and unsafe connection to port %2."
+msgstr "נראה שיישום מן יישומך %1 מקיים באופן פוטנציאלי חיבור לא מוצפן ולא בטוח אל יציאה %2."
+
+msgctxt "MainWindow"
+msgid "failed (%1)"
+msgstr "כשל (%1)"
+
+msgctxt "MainWindow"
+msgid ""
+"Your relay is shutting down.\n"
+"Click 'Stop' again to stop your relay now."
+msgstr "ממסרך מתכבה כעת.\nניתן ללחוץ על 'עצור' כדי לעצורו כעת."
+
+msgctxt "MainWindow"
+msgid ""
+"Vidalia can't find out how to talk to Tor because it can't access this file: %1\n"
+"\n"
+"Here's the last error message:\n"
+"%2"
+msgstr "Vidalia לא מסוגל להבין כיצד לדבר אל Tor מכיוון שאין ביכולתו לגשת אל קובץ זה: %1\n\nהנה הודעות השגיאה האחרונות:\n%2"
+
+msgctxt "MainWindow"
+msgid ""
+"It seems Tor has stopped running since Vidalia started it.\n"
+"\n"
+"See the Advanced Message Log for more information."
+msgstr "נראה שהיישום Tor פסק מלפעול מאחר שהיישום Vidalia התחיל אותו.\n\nראו יומן הודעות מתקדם למידע נוסף."
+
+msgctxt "MainWindow"
+msgid ""
+"You are currently running a relay. Terminating your relay will interrupt any open connections from clients.\n"
+"\n"
+"Would you like to shutdown gracefully and give clients time to find a new relay?"
+msgstr "קיים ממסר פעיל כעת. עצירת הממסר תפריע לחיבורים של משתמשים המחוברים דרכך.\n\nהאם ברצונך לעצור את הממסר בהדרגתיות, ובכך לאפשר למשתמשים המחוברים זה עתה לאתר ממסר אחר?"
+
+msgctxt "MainWindow"
+msgid ""
+"Vidalia detected that the Tor software exited unexpectedly.\n"
+"\n"
+"Please check the message log for recent warning or error messages."
+msgstr "Vidalia הבחין כי היישום Tor נסגר באופן פתאומי.\n\nנא לבדוק את יומן ההודעות עבור הודעות אזהרה או שגיאה."
+
+msgctxt "MessageLog"
+msgid "Error Setting Filter"
+msgstr "שגיאה בהגדרת סינון"
+
+msgctxt "MessageLog"
+msgid "Vidalia was unable to register for Tor's log events."
+msgstr "Vidalia לא הצליח להירשם ליומן האירועים של Tor."
+
+msgctxt "MessageLog"
+msgid "Error Opening Log File"
+msgstr "שגיאה בעת פתיחת קובץ יומן"
+
+msgctxt "MessageLog"
+msgid "Vidalia was unable to open the specified log file."
+msgstr "Vidalia לא הצליח לפתוח את קובץ היומן שצוין."
+
+msgctxt "MessageLog"
+msgid "Log Filename Required"
+msgstr "דרוש שם קובץ יומן"
+
+msgctxt "MessageLog"
+msgid "You must enter a filename to be able to save log messages to a file."
+msgstr "עליך להכניס שם קובץ על מנת לשמור הודעות יומן לקובץ."
+
+msgctxt "MessageLog"
+msgid "Select Log File"
+msgstr "בחירת קובץ יומן"
+
+msgctxt "MessageLog"
+msgid "Save Log Messages"
+msgstr "שמירת הודעות יומן"
+
+msgctxt "MessageLog"
+msgid "Text Files (*.txt)"
+msgstr "קבצי טקסט (*.txt)"
+
+msgctxt "MessageLog"
+msgid "Vidalia"
+msgstr "Vidalia"
+
+msgctxt "MessageLog"
+msgid "Find in Message Log"
+msgstr "חיפוש ביומן הודעות"
+
+msgctxt "MessageLog"
+msgid "Find:"
+msgstr "חיפוש:"
+
+msgctxt "MessageLog"
+msgid "Not Found"
+msgstr "לא נמצא"
+
+msgctxt "MessageLog"
+msgid "Search found 0 matches."
+msgstr "החיפוש מצא אפס תוצאות."
+
+msgctxt "MessageLog"
+msgid "Message Log"
+msgstr "יומן הודעות"
+
+msgctxt "MessageLog"
+msgid "Message Filters..."
+msgstr "מסנני הודעות..."
+
+msgctxt "MessageLog"
+msgid "Set message filters"
+msgstr "קבע מסנני הודעות"
+
+msgctxt "MessageLog"
+msgid "History Size..."
+msgstr "גודל היסטוריה..."
+
+msgctxt "MessageLog"
+msgid "Set maximum number of messages to display"
+msgstr "הגדרת מספר ההודעות המירבי להצגה"
+
+msgctxt "MessageLog"
+msgid "Clear"
+msgstr "איפוס"
+
+msgctxt "MessageLog"
+msgid "Clear all messages from the Message Log (Ctrl+E)"
+msgstr "מחיקת כל ההודעות מן יומן ההודעות (Ctrl+E)"
+
+msgctxt "MessageLog"
+msgid "Ctrl+E"
+msgstr "Ctrl+E"
+
+msgctxt "MessageLog"
+msgid "Copy"
+msgstr "העתקה"
+
+msgctxt "MessageLog"
+msgid "Copy the selected messages to the clipboard (Ctrl+C)"
+msgstr "העתקת ההודעות הנבחרות אל לוח־הגזירה (Ctrl+C)"
+
+msgctxt "MessageLog"
+msgid "Ctrl+C"
+msgstr "Ctrl+C"
+
+msgctxt "MessageLog"
+msgid "Select All"
+msgstr "בחר הכל"
+
+msgctxt "MessageLog"
+msgid "Select all messages (Ctrl+A)"
+msgstr "בחירת כל ההודעות (Ctrl+A)"
+
+msgctxt "MessageLog"
+msgid "Ctrl+A"
+msgstr "Ctrl+A"
+
+msgctxt "MessageLog"
+msgid "Save All"
+msgstr "שמור הכל"
+
+msgctxt "MessageLog"
+msgid "Save all messages to a file"
+msgstr "שמירת כל ההודעות אל קובץ"
+
+msgctxt "MessageLog"
+msgid "Save Selected"
+msgstr "שמירת הודעות הנבחרות"
+
+msgctxt "MessageLog"
+msgid "Save selected messages to a file"
+msgstr "שמירת הודעות נבחרות אל קובץ"
+
+msgctxt "MessageLog"
+msgid "Settings"
+msgstr "הגדרות"
+
+msgctxt "MessageLog"
+msgid "Adjust Message Log Settings"
+msgstr "התאמת הגדרות יומן הודעות"
+
+msgctxt "MessageLog"
+msgid "Ctrl+T"
+msgstr "Ctrl+T"
+
+msgctxt "MessageLog"
+msgid "Help"
+msgstr "עזרה"
+
+msgctxt "MessageLog"
+msgid "Show the help browser"
+msgstr "הצגת דפדפן העזרה"
+
+msgctxt "MessageLog"
+msgid "F1"
+msgstr "F1"
+
+msgctxt "MessageLog"
+msgid "Close"
+msgstr "סגירה"
+
+msgctxt "MessageLog"
+msgid "Close the Message Log"
+msgstr "סגירת יומן ההודעות"
+
+msgctxt "MessageLog"
+msgid "Esc"
+msgstr "Esc"
+
+msgctxt "MessageLog"
+msgid "Find"
+msgstr "מציאה"
+
+msgctxt "MessageLog"
+msgid "Find all messages containing the search text (Ctrl+F)"
+msgstr "מציאת את כל ההודעות המכילות את תמליל החיפוש (Ctrl+F)"
+
+msgctxt "MessageLog"
+msgid "Ctrl+F"
+msgstr "Ctrl+F"
+
+msgctxt "MessageLog"
+msgid "Time"
+msgstr "זמן"
+
+msgctxt "MessageLog"
+msgid "Type"
+msgstr "סוג"
+
+msgctxt "MessageLog"
+msgid "Message"
+msgstr "הודעה"
+
+msgctxt "MessageLog"
+msgid "Saves the current Message Log settings"
+msgstr "שמירת הגדרות יומן ההודעות הנוכחיות"
+
+msgctxt "MessageLog"
+msgid "Save Settings"
+msgstr "שמירת הגדרות"
+
+msgctxt "MessageLog"
+msgid "Cancels changes made to settings"
+msgstr "ביטול השינויים שנעשו להגדרות"
+
+msgctxt "MessageLog"
+msgid "Cancel"
+msgstr "ביטול"
+
+msgctxt "MessageLog"
+msgid "Message Filter"
+msgstr "מסנן הודעות"
+
+msgctxt "MessageLog"
+msgid "Error"
+msgstr "Error"
+
+msgctxt "MessageLog"
+msgid "Warning"
+msgstr "Warning"
+
+msgctxt "MessageLog"
+msgid "Notice"
+msgstr "Notice"
+
+msgctxt "MessageLog"
+msgid "Info"
+msgstr "Info"
+
+msgctxt "MessageLog"
+msgid "Debug"
+msgstr "Debug"
+
+msgctxt "MessageLog"
+msgid "Message Log History"
+msgstr "היסטוריית יומן הודעות"
+
+msgctxt "MessageLog"
+msgid "Number of messages to display in the message log window"
+msgstr "מספר הודעות להצגה בחלון יומן ההודעות"
+
+msgctxt "MessageLog"
+msgid "messages"
+msgstr "הודעות"
+
+msgctxt "MessageLog"
+msgid "Browse"
+msgstr "עיון"
+
+msgctxt "MessageLog"
+msgid "Enable automatically saving all new log messages to a file"
+msgstr "אפשור שמירה אוטומטית של כל ההודעות החדשות אל קובץ"
+
+msgctxt "MessageLog"
+msgid "Automatically save new log messages to a file"
+msgstr "שמירה אוטומטית של הודעות יומן חדשות לקובץ"
+
+msgctxt "MessageLog"
+msgid "Basic"
+msgstr "בסיסי"
+
+msgctxt "MessageLog"
+msgid "Tor Status"
+msgstr "מצב Tor"
+
+msgctxt "MessageLog"
+msgid "Advanced"
+msgstr "מתקדם"
+
+msgctxt "MessageLog"
+msgid "Always Save New Log Messages"
+msgstr "שמירה תמידית של הודעות יומן חדשות"
+
+msgctxt "MessageLog"
+msgid ""
+"Messages that appear when something has \n"
+"gone very wrong and Tor cannot proceed."
+msgstr "הודעות המופיעות כאשר משהו\nהשתבש מאוד ואין ביכולתו של Tor להמשיך."
+
+msgctxt "MessageLog"
+msgid ""
+"Messages that only appear when \n"
+"something has gone wrong with Tor."
+msgstr "הודעות המופיעות כאשר משהו\nהשתבש עם Tor."
+
+msgctxt "MessageLog"
+msgid ""
+"Messages that appear infrequently \n"
+"during normal Tor operation and are \n"
+"not considered errors, but you may \n"
+"care about."
+msgstr "הודעות המופיעות לעיתים רחוקות\nבמהלך פעילות שגרתית של Tor\nואינן נחשבות לתקלות, אולם ייתכן\nשאלו יעניינו אותך."
+
+msgctxt "MessageLog"
+msgid ""
+"Messages that appear frequently \n"
+"during normal Tor operation."
+msgstr "הודעות המופיעות לעתים קרובות במהלך פעילות שגרתית של Tor."
+
+msgctxt "MessageLog"
+msgid ""
+"Hyper-verbose messages primarily of \n"
+"interest to Tor developers."
+msgstr "הודעות היפר-מגובבות המיועדות \nבעיקר אל המפתחים של Tor."
+
+msgctxt "MessageLog"
+msgid ""
+"Cannot write file %1\n"
+"\n"
+"%2."
+msgstr "לא ניתן לכתוב את הקובץ %1\n\n%2."
+
+msgctxt "NetViewer"
+msgid "Tor Network Map"
+msgstr "מפת רשת Tor"
+
+msgctxt "NetViewer"
+msgid "Refresh"
+msgstr "רענון"
+
+msgctxt "NetViewer"
+msgid "Refresh the list of Tor relays and connections"
+msgstr "עדכון רשימת הממסרים והחיבורים של Tor"
+
+msgctxt "NetViewer"
+msgid "Ctrl+R"
+msgstr "Ctrl+R"
+
+msgctxt "NetViewer"
+msgid "Help"
+msgstr "עזרה"
+
+msgctxt "NetViewer"
+msgid "Show the network map help"
+msgstr "הצגת העזרה של מפת רשת"
+
+msgctxt "NetViewer"
+msgid "Show network map help"
+msgstr "הצגת עזרת מפת רשת"
+
+msgctxt "NetViewer"
+msgid "F1"
+msgstr "F1"
+
+msgctxt "NetViewer"
+msgid "Close"
+msgstr "סגירה"
+
+msgctxt "NetViewer"
+msgid "Close the network map"
+msgstr "סגירת מפת הרשת"
+
+msgctxt "NetViewer"
+msgid "Esc"
+msgstr "Esc"
+
+msgctxt "NetViewer"
+msgid "Zoom In"
+msgstr "הקרבה"
+
+msgctxt "NetViewer"
+msgid "Zoom in on the network map"
+msgstr "הקרבת מפת הרשת"
+
+msgctxt "NetViewer"
+msgid "+"
+msgstr "+"
+
+msgctxt "NetViewer"
+msgid "Zoom Out"
+msgstr "הרחקה"
+
+msgctxt "NetViewer"
+msgid "Zoom out on the network map"
+msgstr "הרחקת מפת הרשת"
+
+msgctxt "NetViewer"
+msgid "-"
+msgstr "-"
+
+msgctxt "NetViewer"
+msgid "Zoom To Fit"
+msgstr "תצוגה שלמה"
+
+msgctxt "NetViewer"
+msgid "Zooms to fit all currently displayed circuits"
+msgstr "התחמה לכל המעגלים המוצגים"
+
+msgctxt "NetViewer"
+msgid "Ctrl+Z"
+msgstr "Ctrl+Z"
+
+msgctxt "NetViewer"
+msgid "Relay Not Found"
+msgstr "ממסר לא נמצא"
+
+msgctxt "NetViewer"
+msgid "No details on the selected relay are available."
+msgstr "אין פרטים זמינים על הממסר הנבחר"
+
+msgctxt "NetViewer"
+msgid "Unknown"
+msgstr "לא ידוע"
+
+msgctxt "NetViewer"
+msgid "Full Screen"
+msgstr "מסך־מלא"
+
+msgctxt "NetViewer"
+msgid "View the network map as a full screen window"
+msgstr "הצגת מפת הרשת במסך־מלא"
+
+msgctxt "NetViewer"
+msgid "Ctrl+F"
+msgstr "Ctrl+F"
+
+msgctxt "NetworkPage"
+msgid "Copy (Ctrl+C)"
+msgstr "העתקה (Ctrl+C)"
+
+msgctxt "NetworkPage"
+msgid ""
+"You must specify both an IP address or hostname and a port number to "
+"configure Tor to use a proxy to access the Internet."
+msgstr "עליך לציין כתובת IP או שם מארח וגם מספר יציאה בכדי להגדיר את Tor לשימוש בשרת פרוקסי כדי לעשות שימוש בפרוקסי כדי להיכנס אל האינטרנט."
+
+msgctxt "NetworkPage"
+msgid ""
+"You must specify one or more ports to which your firewall allows you to "
+"connect."
+msgstr "עליך לציין יציאה אחת או יותר שחומת האש שלך מרשה לך להתחבר אליהן."
+
+msgctxt "NetworkPage"
+msgid "'%1' is not a valid port number."
+msgstr "'%1' אינו מספר יציאה תקף."
+
+msgctxt "NetworkPage"
+msgid "Check if your local network requires a proxy to access the Internet"
+msgstr "בודק אם הרשת המקומית זקוקה לפרוקסי על מנת לגשת אל האינטרנט"
+
+msgctxt "NetworkPage"
+msgid "I use a proxy to access the Internet"
+msgstr "אני משתמש בפרוקסי בכדי לגשת אל האינטרנט"
+
+msgctxt "NetworkPage"
+msgid "Proxy Settings"
+msgstr "הגדרות פרוקסי"
+
+msgctxt "NetworkPage"
+msgid "Username:"
+msgstr "שם משתמש:"
+
+msgctxt "NetworkPage"
+msgid "Password:"
+msgstr "סיסמה:"
+
+msgctxt "NetworkPage"
+msgid "Port:"
+msgstr "יציאה:"
+
+msgctxt "NetworkPage"
+msgid "Check to only connect to relays using ports allowed by your firewall"
+msgstr "ברצוני להתחבר אל ממסרים באמצעות יציאות מסוימות שמורשות על ידי חומת האש שלי"
+
+msgctxt "NetworkPage"
+msgid "My firewall only lets me connect to certain ports"
+msgstr "חומת האש שלי מאפשרת לי להתחבר אל יציאות מסוימות"
+
+msgctxt "NetworkPage"
+msgid "Firewall Settings"
+msgstr "הגדרות חומת אש"
+
+msgctxt "NetworkPage"
+msgid "Allowed Ports:"
+msgstr "יציאות מורשות:"
+
+msgctxt "NetworkPage"
+msgid "80, 443"
+msgstr "80, 443"
+
+msgctxt "NetworkPage"
+msgid ""
+"Check to encrypt directory requests and, optionally, use bridge relays to "
+"access the Tor network"
+msgstr "בחר/י באפשרות זו כדי להצפין בקשות מדור וגם, אפשרי, לעשות שימוש בגשר ממסרים כדי לגשת אל רשת Tor"
+
+msgctxt "NetworkPage"
+msgid "My ISP blocks connections to the Tor network"
+msgstr "ספק האינטרנט שלי חוסם חיבורים לרשת Tor"
+
+msgctxt "NetworkPage"
+msgid "Bridge Settings"
+msgstr "הגדרות גשר"
+
+msgctxt "NetworkPage"
+msgid "Add a Bridge:"
+msgstr "הוספת גשר:"
+
+msgctxt "NetworkPage"
+msgid "Remove the selected bridges from the list"
+msgstr "הסרת הגשרים הנבחרים מן הרשימה"
+
+msgctxt "NetworkPage"
+msgid "Copy the selected bridges to the clipboard"
+msgstr "העתקת הגשרים הנבחרים אל לוח-הגזירה"
+
+msgctxt "NetworkPage"
+msgid "Find Bridges Now"
+msgstr "חפש גשר עכשיו"
+
+msgctxt "NetworkPage"
+msgid "<a href=\"bridges.finding\">How else can I find bridges?</a>"
+msgstr "<a href=\"bridges.finding\">איך עוד ביכולתי למצוא גשרים?</a>"
+
+msgctxt "NetworkPage"
+msgid "<a href=\"bridges.finding\">How can I find bridges?</a>"
+msgstr "<a href=\"bridges.finding\">כיצד ביכולתי למצוא גשרים?</a>"
+
+msgctxt "NetworkPage"
+msgid ""
+"No new bridges are currently available. You can either wait a while and try "
+"again, or try another method of finding new bridges."
+msgstr "גשרים חדשים אינם זמינים כעת. ניתן להמתין לזמן מה ולנסות שוב, או לנסות דרך אחרת לאיתור גשרים חדשים."
+
+msgctxt "NetworkPage"
+msgid "Click Help to see other methods of finding new bridges."
+msgstr "לחצו על עזרה לקבלת מידע נוסף על דרכים שונות למציאת גשרים חדשים."
+
+msgctxt "NetworkPage"
+msgid "Address:"
+msgstr "כתובת:"
+
+msgctxt "NetworkPage"
+msgid "Type:"
+msgstr "סוג:"
+
+msgctxt "NetworkPage"
+msgid "You must select the proxy type."
+msgstr "עליך לבחור את סוג הפרוקסי."
+
+msgctxt "NetworkPage"
+msgid "SOCKS 4"
+msgstr "SOCKS 4"
+
+msgctxt "NetworkPage"
+msgid "SOCKS 5"
+msgstr "SOCKS 5"
+
+msgctxt "NetworkPage"
+msgid "HTTP / HTTPS"
+msgstr "HTTP / HTTPS"
+
+msgctxt "NetworkPage"
+msgid "You must specify one or more bridges."
+msgstr "עליך לציין את גשר אחד או יותר."
+
+msgctxt "Policy"
+msgid "accept"
+msgstr "קבל"
+
+msgctxt "Policy"
+msgid "reject"
+msgstr "דחה"
+
+msgctxt "RouterDescriptor"
+msgid "Online"
+msgstr "מחובר"
+
+msgctxt "RouterDescriptor"
+msgid "Hibernating"
+msgstr "ישן"
+
+msgctxt "RouterDescriptor"
+msgid "Offline"
+msgstr "לא מקוון"
+
+msgctxt "RouterDescriptorView"
+msgid "Location:"
+msgstr "מיקום:"
+
+msgctxt "RouterDescriptorView"
+msgid "IP Address:"
+msgstr "כתובת IP:"
+
+msgctxt "RouterDescriptorView"
+msgid "Platform:"
+msgstr "מערכת:"
+
+msgctxt "RouterDescriptorView"
+msgid "Bandwidth:"
+msgstr "רוחב־פס:"
+
+msgctxt "RouterDescriptorView"
+msgid "Uptime:"
+msgstr "זמן פעילות:"
+
+msgctxt "RouterDescriptorView"
+msgid "Last Updated:"
+msgstr "עודכן לאחרונה:"
+
+msgctxt "RouterDescriptorView"
+msgid "Copy"
+msgstr "העתקה"
+
+msgctxt "RouterInfoDialog"
+msgid "Hibernating"
+msgstr "ישן"
+
+msgctxt "RouterInfoDialog"
+msgid "Online"
+msgstr "מקוון"
+
+msgctxt "RouterInfoDialog"
+msgid "Offline"
+msgstr "לא מקוון"
+
+msgctxt "RouterInfoDialog"
+msgid "Unknown"
+msgstr "לא ידוע"
+
+msgctxt "RouterInfoDialog"
+msgid "Relay Details"
+msgstr "פרטי ממסר"
+
+msgctxt "RouterInfoDialog"
+msgid "Summary"
+msgstr "סיכום"
+
+msgctxt "RouterInfoDialog"
+msgid "Name:"
+msgstr "כינוי:"
+
+msgctxt "RouterInfoDialog"
+msgid "Status:"
+msgstr "מצב"
+
+msgctxt "RouterInfoDialog"
+msgid "Location:"
+msgstr "מיקום:"
+
+msgctxt "RouterInfoDialog"
+msgid "IP Address:"
+msgstr "כתובת IP:"
+
+msgctxt "RouterInfoDialog"
+msgid "Platform:"
+msgstr "מערכת:"
+
+msgctxt "RouterInfoDialog"
+msgid "Bandwidth:"
+msgstr "רוחב־פס:"
+
+msgctxt "RouterInfoDialog"
+msgid "Uptime:"
+msgstr "זמן:"
+
+msgctxt "RouterInfoDialog"
+msgid "Contact:"
+msgstr "מידע התקשרות:"
+
+msgctxt "RouterInfoDialog"
+msgid "Last Updated:"
+msgstr "עודכן לאחרונה:"
+
+msgctxt "RouterInfoDialog"
+msgid "Descriptor"
+msgstr "מתאר"
+
+msgctxt "RouterListItem"
+msgid "Offline"
+msgstr "לא מקוון"
+
+msgctxt "RouterListItem"
+msgid "Hibernating"
+msgstr "ישן"
+
+msgctxt "RouterListItem"
+msgid "%1 KB/s"
+msgstr "%1 ק״ב/ש"
+
+msgctxt "RouterListWidget"
+msgid "Relay"
+msgstr "ממסור"
+
+msgctxt "RouterListWidget"
+msgid "Zoom to Relay"
+msgstr "התקרבות אל ממסר"
+
+msgctxt "RouterListWidget"
+msgid "%1 relays online"
+msgstr "%1 ממסרים ממקוונים"
+
+msgctxt "RouterListWidget"
+msgid "Copy"
+msgstr "העתקה"
+
+msgctxt "RouterListWidget"
+msgid "Nickname"
+msgstr "כינוי"
+
+msgctxt "RouterListWidget"
+msgid "Fingerprint"
+msgstr "טביעת אצבע"
+
+msgctxt "ServerPage"
+msgid "Bridge Support Unavailable"
+msgstr "תמיכת גשרים לא זמינה"
+
+msgctxt "ServerPage"
+msgid ""
+"You have configured Tor to act as a bridge relay for censored users, but "
+"your version of Tor does not support bridges."
+msgstr "הגדרת Tor לשמש כגשר ממסר עבור משתמשים מצונזרים, ברם גרסת היישום Tor שברשותך לא תומכת בגשרים."
+
+msgctxt "ServerPage"
+msgid ""
+"Please upgrade your Tor software or configure Tor to act as a normal Tor "
+"relay."
+msgstr "נא לעדכן את Tor או להגדיר את Tor לשמש כממסר Tor רגיל."
+
+msgctxt "ServerPage"
+msgid "Your bridge relay is not running."
+msgstr "גשר ממסרך אינו מורץ כעת."
+
+msgctxt "ServerPage"
+msgid "You must specify at least a relay nickname and port."
+msgstr "עליך לציין לפחות כינוי ויציאת ממסור."
+
+msgctxt "ServerPage"
+msgid "Run as a client only"
+msgstr "הפעל כלקוח בלבד"
+
+msgctxt "ServerPage"
+msgid "Relay Port:"
+msgstr "יציאת ממסר:"
+
+msgctxt "ServerPage"
+msgid "Enable to mirror the relay directory"
+msgstr "אפשור הכפלת מדור הממסר"
+
+msgctxt "ServerPage"
+msgid "Attempt to automatically configure port forwarding"
+msgstr "נסה להגדיר port forwarding באופן אוטומטי"
+
+msgctxt "ServerPage"
+msgid "Test"
+msgstr "בדיקה"
+
+msgctxt "ServerPage"
+msgid "Show help topic on port forwarding"
+msgstr "הצגת נושאי עזרה אודות port forwarding"
+
+msgctxt "ServerPage"
+msgid "Directory Port:"
+msgstr "יציאת מדור:"
+
+msgctxt "ServerPage"
+msgid "Directory Port Number"
+msgstr "מספר יציאת מדור"
+
+msgctxt "ServerPage"
+msgid "Contact Info:"
+msgstr "מידע התקשרות:"
+
+msgctxt "ServerPage"
+msgid "Name of your relay"
+msgstr "שם ממסרך"
+
+msgctxt "ServerPage"
+msgid "Port on which users and other relays can communicate with your relay"
+msgstr "יציאה שבאמצעותה משתמשים וממסרים אחרים יוכלו לתקשר עם ממסרך"
+
+msgctxt "ServerPage"
+msgid "Nickname:"
+msgstr "כינוי:"
+
+msgctxt "ServerPage"
+msgid "Basic Settings"
+msgstr "הגדרות בסיסיות"
+
+msgctxt "ServerPage"
+msgid ""
+"For Internet connections with fast download speed but slow upload, please "
+"list your upload speed here."
+msgstr "לחיבורי אינטרנט עם קצב הורדה מהיר אבל קצב העלאה איטי, נא למנות את קצב ההעלאה שלך כאן."
+
+msgctxt "ServerPage"
+msgid "Cable/DSL 256 Kbps"
+msgstr "כבלים/DSL 256 Kbps"
+
+msgctxt "ServerPage"
+msgid "Cable/DSL 512 Kbps"
+msgstr "כבלים/DSL 512 Kbps"
+
+msgctxt "ServerPage"
+msgid "Cable/DSL 768 Kbps"
+msgstr "כבלים/DSL 768 Kbps"
+
+msgctxt "ServerPage"
+msgid "T1/Cable/DSL 1.5 Mbps"
+msgstr "T1/כבלים/DSL 1.5 Mbps"
+
+msgctxt "ServerPage"
+msgid "> 1.5 Mbps"
+msgstr "מעל 1.5 Mbps"
+
+msgctxt "ServerPage"
+msgid "Custom"
+msgstr "נתון אישית"
+
+msgctxt "ServerPage"
+msgid "Select the entry that most closely resembles your Internet connection"
+msgstr "בחירת הרשומה הדומה ביותר לחיבור האינטרנט שלך"
+
+msgctxt "ServerPage"
+msgid "Show help topic on bandwidth rate limits"
+msgstr "הצגת עזרה בנוגע להגבלות שיעור רוחב פס"
+
+msgctxt "ServerPage"
+msgid "Average Rate"
+msgstr "קצב ממוצע"
+
+msgctxt "ServerPage"
+msgid "Long-term average bandwidth limit"
+msgstr "הגבלת רוחב פס ממוצע לטווח ארוך"
+
+msgctxt "ServerPage"
+msgid "KB/s"
+msgstr "ק״ב/ש"
+
+msgctxt "ServerPage"
+msgid "Maximum Rate"
+msgstr "קצב מרבי"
+
+msgctxt "ServerPage"
+msgid "Peak bandwidth rate limit"
+msgstr "הגבלת שיעור רוחב פס מרבי"
+
+msgctxt "ServerPage"
+msgid ""
+"Your maximum bandwidth rate must be greater than or equal to your average "
+"bandwidth rate. Both values must be at least 20 KB/s."
+msgstr "רוחב הפס המרבי חייב להיות גדול יותר מאשר או שווה לרוחב הפס הממוצע. על שני הערכים להיות לפחות 20 ק״ב/ש."
+
+msgctxt "ServerPage"
+msgid "Bandwidth Limits"
+msgstr "הגבלות רוחב פס"
+
+msgctxt "ServerPage"
+msgid "Ports 6660 - 6669 and 6697"
+msgstr "יציאות 6660 - 6669 וגם 6697"
+
+msgctxt "ServerPage"
+msgid "Internet Relay Chat (IRC)"
+msgstr "Internet Relay Chat (IRC)"
+
+msgctxt "ServerPage"
+msgid "Ports 110, 143, 993 and 995"
+msgstr "יציאות 110, 143, 993 וגם 995"
+
+msgctxt "ServerPage"
+msgid "Retrieve Mail (POP, IMAP)"
+msgstr "קבלת דואר (POP, IMAP)"
+
+msgctxt "ServerPage"
+msgid "Ports unspecified by other checkboxes"
+msgstr "יציאות שלא נתונות על ידי תיבות בחירה אחרות"
+
+msgctxt "ServerPage"
+msgid "Misc Other Services"
+msgstr "שירותים שונים נוספים"
+
+msgctxt "ServerPage"
+msgid "Ports 706, 1863, 5050, 5190, 5222, 5223, 8300 and 8888"
+msgstr "יציאות 706, 1863, 5050, 5190, 5222, 5223, 8300 וגם 8888"
+
+msgctxt "ServerPage"
+msgid "Instant Messaging (IM)"
+msgstr "הודעות מיידיות"
+
+msgctxt "ServerPage"
+msgid "Port 443"
+msgstr "יציאה 443"
+
+msgctxt "ServerPage"
+msgid "Secure Websites (SSL)"
+msgstr "אתרים מאובטחים (SSL)"
+
+msgctxt "ServerPage"
+msgid "Port 80"
+msgstr "יציאה 80"
+
+msgctxt "ServerPage"
+msgid "Websites"
+msgstr "אתרי רשת"
+
+msgctxt "ServerPage"
+msgid "Show help topic on exit policies"
+msgstr "הצגת עזרה בנוגע למדיניות יציאה"
+
+msgctxt "ServerPage"
+msgid ""
+"What Internet resources should users be able to access from your relay?"
+msgstr "לאילו תכנים באינטרנט משתמשים יוכלו לגשת דרך ממסרך?"
+
+msgctxt "ServerPage"
+msgid ""
+"Tor will still block some outgoing mail and file sharing applications by "
+"default to reduce spam and other abuse."
+msgstr "Tor עדיין יחסום יציאה של דוא״ל ושיתוף קבצים על מנת לצמצם ספאם ופשיעה אחרת."
+
+msgctxt "ServerPage"
+msgid "Exit Policies"
+msgstr "מדיניות יציאה"
+
+msgctxt "ServerPage"
+msgid "Let others access your bridge by giving them this line:"
+msgstr "אפשר לאחרים לגשת לגשר שלך על ידי נתינת השורה הבאה:"
+
+msgctxt "ServerPage"
+msgid ""
+"This is the identity of your bridge relay that you can give to other people"
+msgstr "זוהי הזהות של גשר ממסרך שביכולתך להעניק לאנשים אחרים"
+
+msgctxt "ServerPage"
+msgid "Copy your bridge relay's identity to the clipboard"
+msgstr "העתקת הזהות של גשר ממסרך אל לוח־הגזירה"
+
+msgctxt "ServerPage"
+msgid "No Recent Usage"
+msgstr "אין שימוש לאחרונה"
+
+msgctxt "ServerPage"
+msgid "No clients have used your relay recently."
+msgstr "אין משתמשים שהשתמשו בממסרך לאחרונה."
+
+msgctxt "ServerPage"
+msgid ""
+"Leave your relay running so clients have a better chance of finding and "
+"using it."
+msgstr "השאירו את הממסר פועל, כך שללקוחות יהיו סיכויים טובים יותר למצוא אותו ולהשתמש בו."
+
+msgctxt "ServerPage"
+msgid "Bridge History"
+msgstr "היסטוריית גשר"
+
+msgctxt "ServerPage"
+msgid "Vidalia was unable to retrieve your bridge's usage history."
+msgstr "Vidalia לא הצליח לאחזר את היסטורית השימוש של הגשר שלך."
+
+msgctxt "ServerPage"
+msgid ""
+"Tor returned an improperly formatted response when Vidalia requested your "
+"bridge's usage history."
+msgstr "Tor החזיר תשובה שאינה מעוצבת כראוי כאשר Vidalia ביקש את היסטורית השימוש של הגשר שלך."
+
+msgctxt "ServerPage"
+msgid "The returned response was: %1"
+msgstr "התשובה המחוזרת היתה: %1"
+
+msgctxt "ServerPage"
+msgid "Help censored users reach the Tor network"
+msgstr "סיוע למשתמשים מצונזרים לגשת אל רשת Tor (גרסה 0.2.0.8-alpha ומעלה)"
+
+msgctxt "ServerPage"
+msgid "<a href=\"#bridgeUsage\">Who has used my bridge?</a>"
+msgstr "<a href=\"#bridgeUsage\">מי עשה שימוש בגשר שלי?</a>"
+
+msgctxt "ServerPage"
+msgid "<a href=\"#bridgeHelp\">What's this?</a>"
+msgstr "<a href=\"#bridgeHelp\">מה זה?</a>"
+
+msgctxt "ServerPage"
+msgid "Automatically distribute my bridge address"
+msgstr "הפצה אוטומטית של כתובת הגשר שלי"
+
+msgctxt "ServerPage"
+msgid "Relay traffic for the Tor network (exit relay)"
+msgstr "תעבורת ממסר עבור רשת Tor (ממסר יציאה)"
+
+msgctxt "ServerPage"
+msgid "Relay traffic inside the Tor network (non-exit relay)"
+msgstr "תעבורת ממסר בתוך רשת Tor (ממסר שאינו-יציאה)"
+
+msgctxt "ServerPage"
+msgid "Mirror the Relay Directory"
+msgstr "הכפלת מדור הממסר"
+
+msgctxt "ServerPage"
+msgid ""
+"Email address at which you may be reached if there is a\n"
+"problem with your relay. You might also include your PGP or GPG fingerprint."
+msgstr "כתובת דוא״ל בה ניתן להשיגך למקרה בו יהיה הצורך ליצור עימך קשר לגבי בעיות\nעם ממסרך. ביכולתך גם להכליל את טביעת האצבע של מפתח PGP או GPG שלך."
+
+msgctxt "ServicePage"
+msgid "Error while trying to unpublish all services"
+msgstr "שגיאה במהלך ביטול הפרסום של כל השירותים"
+
+msgctxt "ServicePage"
+msgid ""
+"Please configure at least a service directory and a virtual port for each "
+"service you want to save. Remove the other ones."
+msgstr "נא להגדיר לפחות מדור שירות ויציאה ווירטואלית עבור כל שירות שברצונך שישמר. הסירו את האחרים."
+
+msgctxt "ServicePage"
+msgid "Error"
+msgstr "שגיאה"
+
+msgctxt "ServicePage"
+msgid "Please select a Service."
+msgstr "נא לבחור שירות."
+
+msgctxt "ServicePage"
+msgid "Select Service Directory"
+msgstr "בחירת מדור שירות"
+
+msgctxt "ServicePage"
+msgid "Virtual Port may only contain valid port numbers [1..65535]."
+msgstr "יציאה ווירטואלית יכולה להכיל רק מספרי יציאה תקינים [1..65535]"
+
+msgctxt "ServicePage"
+msgid "Target may only contain address:port, address, or port."
+msgstr "יעד יכול להכיל יציאה:כתובת, כתובת או יציאה בלבד."
+
+msgctxt "ServicePage"
+msgid "Directory already in use by another service."
+msgstr "המדור כבר מצוי בשימוש על ידי שירות אחר."
+
+msgctxt "ServicePage"
+msgid "Form"
+msgstr "טופס"
+
+msgctxt "ServicePage"
+msgid "Provided Hidden Services"
+msgstr "שירותים מסופקים מוסתרים"
+
+msgctxt "ServicePage"
+msgid "Onion Address"
+msgstr "כתובת בצל"
+
+msgctxt "ServicePage"
+msgid "Virtual Port"
+msgstr "יציאה ווירטואלית"
+
+msgctxt "ServicePage"
+msgid "Target"
+msgstr "יעד"
+
+msgctxt "ServicePage"
+msgid "Directory Path"
+msgstr "נתיב מדור"
+
+msgctxt "ServicePage"
+msgid "Enabled"
+msgstr "מופעל"
+
+msgctxt "ServicePage"
+msgid "Add new service to list"
+msgstr "הוספת שירות חדש אל הרשימה"
+
+msgctxt "ServicePage"
+msgid "Remove selected service from list"
+msgstr "הסרת השירות הנבחר מן הרשימה"
+
+msgctxt "ServicePage"
+msgid "Copy onion address of selected service to clipboard"
+msgstr "העתקת כתובת בצל של השירות הנבחר אל לוח־הגזירה"
+
+msgctxt "ServicePage"
+msgid "Browse in local file system and choose directory for selected service"
+msgstr "עיון במערכת הקבצים המקומית ובחירת מדור עבור השירות הנבחר"
+
+msgctxt "ServicePage"
+msgid "Created by Tor"
+msgstr "נוצר על ידי Tor"
+
+msgctxt "StatusEventWidget"
+msgid "Copy to Clipboard"
+msgstr "העתקה אל לוח־גזירה"
+
+msgctxt "StatusEventWidget"
+msgid "The Tor Software is Running"
+msgstr "היישום Tor מורץ כעת"
+
+msgctxt "StatusEventWidget"
+msgid "You are currently running version \"%1\" of the Tor software."
+msgstr "הינך עושה כעת שימוש בגריסה \"%1\" של Tor."
+
+msgctxt "StatusEventWidget"
+msgid "The Tor Software is not Running"
+msgstr "היישום Tor אינו מורץ כעת"
+
+msgctxt "StatusEventWidget"
+msgid ""
+"Click \"Start Tor\" in the Vidalia Control Panel to restart the Tor "
+"software. If Tor exited unexpectedly, select the \"Advanced\" tab above for "
+"details about any errors encountered."
+msgstr "לחצו על \"הפעלת Tor\" בלוח הבקרה של Vidalia כדי לאתחל את התוכנה Tor. במידה והתוכנה Tor מסתיימת באופן לא צפוי, בחרו בלשונית \"מתקדם\" למעלה עבור פרטים אודות כל שגיאה שהתרחשה."
+
+msgctxt "StatusEventWidget"
+msgid ""
+"You are currently running version \"%1\" of the Tor software, which is no "
+"longer recommended. Please upgrade to the most recent version of the "
+"software, which may contain important security, reliability and performance "
+"fixes."
+msgstr "ברשותך קיימת גרסה \"%1\" של התוכנה Tor, שאיננה מומלצת עוד. נא לשדרג אל הגרסה האחרונה ביותר של התוכנה, שעשויה להכיל תיקוני אבטחה, אמינות וגם ביצועים חשובים."
+
+msgctxt "StatusEventWidget"
+msgid ""
+"You are currently running version \"%1\" of the Tor software, which may no "
+"longer work with the current Tor network. Please upgrade to the most recent "
+"version of the software, which may contain important security, reliability "
+"and performance fixes."
+msgstr "ברשותך קיימת גרסה \"%1\" של התוכנה Tor, שייתכן ולא תעבוד עם רשת Tor הנוכחית. נא לשדרג אל הגרסה האחרונה ביותר של התוכנה, שעשויה להכיל תיקוני אבטחה, אמינות וגם ביצועים חשובים."
+
+msgctxt "StatusEventWidget"
+msgid "Your Tor Software is Out-of-date"
+msgstr "היישום Tor שמצוי ברשותך אינו מעודכן"
+
+msgctxt "StatusEventWidget"
+msgid "Connected to the Tor Network"
+msgstr "מחובר אל רשת Tor"
+
+msgctxt "StatusEventWidget"
+msgid ""
+"We were able to successfully establish a connection to the Tor network. You "
+"can now configure your applications to use the Internet anonymously."
+msgstr "ביססנו חיבור אל רשת Tor בהצלחה. ביכולתך להגדיר עתה את יישומיך לעשות שימוש במרשתת באופן אלמוני."
+
+msgctxt "StatusEventWidget"
+msgid "Tor Software Error"
+msgstr "שגיאת תוכנה "
+
+msgctxt "StatusEventWidget"
+msgid ""
+"The Tor software encountered an internal bug. Please report the following "
+"error message to the Tor developers at bugs.torproject.org: \"%1\""
+msgstr "היישום Tor חווה תקלה פנימית. נא לדווח על הודעת השגיאה הבאה אל המפתחים של Tor אצל bugs.torproject.org: \"%1\""
+
+msgctxt "StatusEventWidget"
+msgid ""
+"Tor has determined that your computer's clock may be set to %1 seconds in "
+"the past compared to the source \"%2\". If your clock is not correct, Tor "
+"will not be able to function. Please verify your computer displays the "
+"correct time."
+msgstr "Tor קבע שייתכן ושעון מחשבך מוגדר אל %1 שניות אל העבר בהשוואה אל המקור \"%2\". במידה ושעונך אינו מציג את השעה הנכונה, לא תהיה באפשרותו של Tor לתפקד. נא לאמת שמחשבך מציג את השעה הנכונה."
+
+msgctxt "StatusEventWidget"
+msgid ""
+"Tor has determined that your computer's clock may be set to %1 seconds in "
+"the future compared to the source \"%2\". If your clock is not correct, Tor "
+"will not be able to function. Please verify your computer displays the "
+"correct time."
+msgstr "Tor קבע שייתכן ושעון מחשבך מוגדר אל %1 שניות אל העתיד בהשוואה אל המקור \"%2\". במידה ושעונך אינו מציג את השעה הנכונה, לא תהיה באפשרותו של Tor לתפקד. נא לאמת שמחשבך מציג את השעה הנכונה."
+
+msgctxt "StatusEventWidget"
+msgid "Your Computer's Clock is Potentially Incorrect"
+msgstr "ייתכן שהשעה של מחשבך איננה מדויקת"
+
+msgctxt "StatusEventWidget"
+msgid ""
+"One of the applications on your computer may have attempted to make an "
+"unencrypted connection through Tor to port %1. Sending unencrypted "
+"information over the Tor network is dangerous and not recommended. For your "
+"protection, Tor has automatically closed this connection."
+msgstr "ייתכן שיישום מן היישומים במחשבך ניסה ליצור חיבור שאינו מוצפן דרך Tor אל יציאה %1. שליחת מידע לא מוצפן דרך רשת Tor הינה מסוכנת ואינה מומלצת. להגנתך, Tor סגר את חיבור זה אוטומטית."
+
+msgctxt "StatusEventWidget"
+msgid ""
+"One of the applications on your computer may have attempted to make an "
+"unencrypted connection through Tor to port %1. Sending unencrypted "
+"information over the Tor network is dangerous and not recommended."
+msgstr "ייתכן שיישום מן היישומים במחשבך ניסה ליצור חיבור שאינו מוצפן דרך Tor אל יציאה %1. שליחת מידע לא מוצפן דרך רשת Tor הינה מסוכנת ואינה מומלצת."
+
+msgctxt "StatusEventWidget"
+msgid "Potentially Dangerous Connection!"
+msgstr "חיבור מסוכן פוטנציאלית!"
+
+msgctxt "StatusEventWidget"
+msgid ""
+"One of your applications established a connection through Tor to \"%1\" "
+"using a protocol that may leak information about your destination. Please "
+"ensure you configure your applications to use only SOCKS4a or SOCKS5 with "
+"remote hostname resolution."
+msgstr "יישום מן יישומך ניסה לבסס חיבור דרך Tor אל \"%1\" באמצעות פרוטוקול שעלול להדליף מידע אודות יעדך. נא לוודא שהגדרת את יישומייך לעשות שימוש רק ב־SOCKS4a או ב־SOCKS5 יחד עם שם מארח מופרד מרוחק."
+
+msgctxt "StatusEventWidget"
+msgid "Unknown SOCKS Protocol"
+msgstr "פרוטוקול SOCKS לא מוכר"
+
+msgctxt "StatusEventWidget"
+msgid ""
+"One of your applications tried to establish a connection through Tor using a"
+" protocol that Tor does not understand. Please ensure you configure your "
+"applications to use only SOCKS4a or SOCKS5 with remote hostname resolution."
+msgstr "יישום מן יישומך מנסה לבסס חיבור דרך Tor באמצעות פרוטוקול אותו Tor לא מבין. נא לוודא שהגדרת את יישומייך לעשות שימוש רק ב־SOCKS4a או ב־SOCKS5 יחד עם שם מארח מופרד מרוחק."
+
+msgctxt "StatusEventWidget"
+msgid "Invalid Destination Hostname"
+msgstr "יעד שם מארח שגוי"
+
+msgctxt "StatusEventWidget"
+msgid ""
+"One of your applications tried to establish a connection through Tor to "
+"\"%1\", which Tor does not recognize as a valid hostname. Please check your "
+"application's configuration."
+msgstr "יישום מן יישומך ניסה לבסס חיבור דרך Tor אל \"%1\", אותו Tor לא מזהה כשם מארח תקף. נא לבדוק את התצורה של יישומך."
+
+msgctxt "StatusEventWidget"
+msgid "External IP Address Changed"
+msgstr "כתובת IP חיצונית שונתה"
+
+msgctxt "StatusEventWidget"
+msgid ""
+"Tor has determined your relay's public IP address is currently %1%2. If that"
+" is not correct, please consider setting the 'Address' option in your "
+"relay's configuration."
+msgstr "Tor קבע שכתובת ה־IP הפומבית של ממסרך הינה %1%2. במידה ואין זה נכון, נא שקלו להגדיר את האפשרות 'כתובת' בתצורת ממסרך."
+
+msgctxt "StatusEventWidget"
+msgid "DNS Hijacking Detected"
+msgstr "חטיפת DNS אותרה"
+
+msgctxt "StatusEventWidget"
+msgid ""
+"Tor detected that your DNS provider is providing false responses for domains"
+" that do not exist. Some ISPs and other DNS providers, such as OpenDNS, are "
+"known to do this in order to display their own search or advertising pages."
+msgstr "Tor איתר שספקית ה־DNS מספקת תגובה מזויפת עבור מתחמים (domains) שאינם קיימים. קיימות ספקיות שירותי מרשתת וספקיות DNS אחרות, כגון OpenDNS, שידוע שהן עושות זאת על מנת להציג את עמודי החיפוש או הפרסומות שלהן."
+
+msgctxt "StatusEventWidget"
+msgid ""
+"Tor detected that your DNS provider is providing false responses for well "
+"known domains. Since clients rely on Tor network relays to provide accurate "
+"DNS repsonses, your relay will not be configured as an exit relay."
+msgstr "Tor איתר שספקית ה־DNS מספקת תגובה מזויפת עבור מתחמים (domains) הידועים היטב. מאחר ולקוחות תלויים על ממסרי רשת Tor כדי להעניק תגובות DNS מדויקות, ממסרך לא יוגדר כממסר יציאה."
+
+msgctxt "StatusEventWidget"
+msgid "Checking Server Port Reachability"
+msgstr "בוחן כעת נגישות יציאת שרת"
+
+msgctxt "StatusEventWidget"
+msgid ""
+"Tor is trying to determine if your relay's server port is reachable from the"
+" Tor network by connecting to itself at %1:%2. This test could take several "
+"minutes."
+msgstr "Tor מנסה לקבוע אם יציאת השרת של ממסרך הינה נגישה מן רשת Tor באמצעות התחברות עצמית בשעה %1:%2. בדיקה זו עשויה לקחת מספר דקות."
+
+msgctxt "StatusEventWidget"
+msgid "Server Port Reachability Test Successful!"
+msgstr "בדיקת נגישות יציאת שרת צלחה!"
+
+msgctxt "StatusEventWidget"
+msgid "Your relay's server port is reachable from the Tor network!"
+msgstr "יציאת שרת של ממסרך הינה נגישה מן רשת Tor!"
+
+msgctxt "StatusEventWidget"
+msgid "Server Port Reachability Test Failed"
+msgstr "בדיקת נגישות יציאת שרת כשלה"
+
+msgctxt "StatusEventWidget"
+msgid ""
+"Your relay's server port is not reachable by other Tor clients. This can "
+"happen if you are behind a router or firewall that requires you to set up "
+"port forwarding. If %1:%2 is not your correct IP address and server port, "
+"please check your relay's configuration."
+msgstr "יציאת השרת של ממסרך אינה נגישה על ידי לקוחות Tor אחרים. דבר זה יכול להתרחש אם הינך מאחרי נתב רשת או חומת אש שמצריכים ממך להגדיר port forwarding. אם %1:%2 אינו כתובת IP הנוכחית שלך וגם יציאת שרת, נא לבדוק את תצורת ממסרך."
+
+msgctxt "StatusEventWidget"
+msgid "Checking Directory Port Reachability"
+msgstr "בודק כעת נגישות יציאה מדור"
+
+msgctxt "StatusEventWidget"
+msgid ""
+"Tor is trying to determine if your relay's directory port is reachable from "
+"the Tor network by connecting to itself at %1:%2. This test could take "
+"several minutes."
+msgstr "Tor מנסה לקבוע אם יציאת המדור של ממסרך הינה נגישה מן רשת Tor באמצעות התחברות עצמית בשעה %1:%2. בדיקה זו עשויה לקחת מספר דקות."
+
+msgctxt "StatusEventWidget"
+msgid "Directory Port Reachability Test Successful!"
+msgstr "בדיקת נגישות יציאת מדור צלחה"
+
+msgctxt "StatusEventWidget"
+msgid "Your relay's directory port is reachable from the Tor network!"
+msgstr "יציאת המדור של ממסרך הינה נגישה מן רשת Tor!"
+
+msgctxt "StatusEventWidget"
+msgid "Directory Port Reachability Test Failed"
+msgstr "בדיקת נגישות יציאת מדור נכשלה"
+
+msgctxt "StatusEventWidget"
+msgid ""
+"Your relay's directory port is not reachable by other Tor clients. This can "
+"happen if you are behind a router or firewall that requires you to set up "
+"port forwarding. If %1:%2 is not your correct IP address and directory port,"
+" please check your relay's configuration."
+msgstr "יציאת המדור של ממסרך אינה נגישה על ידי לקוחות Tor אחרים. דבר זה יכול להתרחש אם הינך מאחרי נתב רשת או חומת אש שמצריכים ממך להגדיר port forwarding. אם %1:%2 אינו כתובת IP הנוכחית שלך וגם יציאת מדור, נא לבדוק את תצורת ממסרך."
+
+msgctxt "StatusEventWidget"
+msgid "Relay Descriptor Rejected"
+msgstr "מילת מפתח ממסר נדחתה"
+
+msgctxt "StatusEventWidget"
+msgid ""
+"Your relay's descriptor, which enables clients to connect to your relay, was"
+" rejected by the directory server at %1:%2. The reason given was: %3"
+msgstr "מילת המפתח של ממסרך, שמאפשר ללקוחות להתחבר אל ממסרך, נדחה על ידי מדור השרת בשעה %1:%2. הסיבה שניתנה היתה: %3"
+
+msgctxt "StatusEventWidget"
+msgid "Your Relay is Online"
+msgstr "ממסרך הינו מקוון"
+
+msgctxt "StatusEventWidget"
+msgid ""
+"Your relay is now online and available for Tor clients to use. You should "
+"see an increase in network traffic shown by the Bandwidth Graph within a few"
+" hours as more clients learn about your relay. Thank you for contributing to"
+" the Tor network!"
+msgstr "ממסרך מקוון עתה והינו זמין לשימוש עבור לקוחות Tor. הינך צפוי/ה לראות בתוך מספר שעות עלייה בתעבורת רשת התקשורת המוצגת בגרף רוחב הפס כשיותר לקוחות ילמדו אודות ממסרך. רב תודות לך עבור תרומתך למען רשת Tor!"
+
+msgctxt "Stream"
+msgid "New"
+msgstr "חדש"
+
+msgctxt "Stream"
+msgid "Resolving"
+msgstr "מתרגם כעת"
+
+msgctxt "Stream"
+msgid "Connecting"
+msgstr "מתחבר כעת"
+
+msgctxt "Stream"
+msgid "Open"
+msgstr "פתיחה"
+
+msgctxt "Stream"
+msgid "Failed"
+msgstr "נכשל"
+
+msgctxt "Stream"
+msgid "Closed"
+msgstr "סגור"
+
+msgctxt "Stream"
+msgid "Retrying"
+msgstr "מנסה מחדש כעת"
+
+msgctxt "Stream"
+msgid "Remapped"
+msgstr "ממופה מחדש"
+
+msgctxt "Stream"
+msgid "Unknown"
+msgstr "לא ידוע"
+
+msgctxt "TorProcess"
+msgid "Process %1 failed to stop. [%2]"
+msgstr "תהליך %1 נכשל לעצור. (%2)"
+
+msgctxt "TorService"
+msgid "The Tor service is not installed."
+msgstr "השירות Tor אינו מותקן."
+
+msgctxt "TorService"
+msgid "Unable to start the Tor service."
+msgstr "לא ניתן להפעייל את השירות Tor."
+
+msgctxt "TorSettings"
+msgid "Failed to hash the control password."
+msgstr "ערבול סיסמת בקרה נכשל."
+
+msgctxt "TorrcDialog"
+msgid "Editing torrc"
+msgstr "עריכת torrc"
+
+msgctxt "TorrcDialog"
+msgid ""
+"Save settings. If unchecked it will only apply settings to the current Tor "
+"instance."
+msgstr "שמירת הגדרות. במידה ואפשרות זו איננה מסומנת, זו תוחל רק על תהליך Tor הנוכחי בלבד."
+
+msgctxt "TorrcDialog"
+msgid "Cut"
+msgstr "גזירה"
+
+msgctxt "TorrcDialog"
+msgid "Copy"
+msgstr "העתקה"
+
+msgctxt "TorrcDialog"
+msgid "Paste"
+msgstr "הדבקה"
+
+msgctxt "TorrcDialog"
+msgid "Undo"
+msgstr "ביטול"
+
+msgctxt "TorrcDialog"
+msgid "Redo"
+msgstr "ביצוע־חוזר"
+
+msgctxt "TorrcDialog"
+msgid "Select All"
+msgstr "בחר הכל"
+
+msgctxt "TorrcDialog"
+msgid "Apply all"
+msgstr "החל הכל"
+
+msgctxt "TorrcDialog"
+msgid "Apply selection only"
+msgstr "החל על הנבחרים בלבד"
+
+msgctxt "TorrcDialog"
+msgid "Error connecting to Tor"
+msgstr "שגיאה בעת התחברות אל Tor"
+
+msgctxt "TorrcDialog"
+msgid "Selection is empty. Please select some text, or check \"Apply all\""
+msgstr "אין בחירות. נא לבחור תמליל מסוים, או חסמן ב\"החל הכל\""
+
+msgctxt "TorrcDialog"
+msgid "Error at line %1: \"%2\""
+msgstr "שגיאה בשורה %1:\"%2\""
+
+msgctxt "TorrcDialog"
+msgid "Error"
+msgstr "שגיאה"
+
+msgctxt "TorrcDialog"
+msgid "An error ocurred while opening torrc file"
+msgstr "ארעה שגיאה מסוימת בעת פתיחת קובץ torrc"
+
+msgctxt "UPNPControl"
+msgid "Success"
+msgstr "הצלחה"
+
+msgctxt "UPNPControl"
+msgid "No UPnP-enabled devices found"
+msgstr "לא נמצאו התקנים מאופשרים UPnP"
+
+msgctxt "UPNPControl"
+msgid "No valid UPnP-enabled Internet gateway devices found"
+msgstr "לא נמצא תקן חיבור אינטרנט שתומך בשיטת UPnP"
+
+msgctxt "UPNPControl"
+msgid "WSAStartup failed"
+msgstr "WSAStartup נכשל"
+
+msgctxt "UPNPControl"
+msgid "Failed to add a port mapping"
+msgstr "הוספת port mapping נכשלה"
+
+msgctxt "UPNPControl"
+msgid "Failed to retrieve a port mapping"
+msgstr "אחזרת port mapping נכשלה"
+
+msgctxt "UPNPControl"
+msgid "Failed to remove a port mapping"
+msgstr "הסרת port mapping נכשלה"
+
+msgctxt "UPNPControl"
+msgid "Unknown error"
+msgstr "שגיאה לא ידועה"
+
+msgctxt "UPNPTestDialog"
+msgid "Discovering UPnP-enabled devices"
+msgstr "מחפש כעת התקנים מאופשרים UPnP"
+
+msgctxt "UPNPTestDialog"
+msgid "Updating directory port mapping"
+msgstr "מעדכן כעת מדור port mapping"
+
+msgctxt "UPNPTestDialog"
+msgid "Updating relay port mapping"
+msgstr "מעדכן כעת ממסר port mapping"
+
+msgctxt "UPNPTestDialog"
+msgid "Test completed successfully!"
+msgstr "הבדיקה הושלמה בהצלחה!"
+
+msgctxt "UPNPTestDialog"
+msgid "Testing UPnP Support"
+msgstr "בודק כעת תמיכת UPnP"
+
+msgctxt "UPNPTestDialog"
+msgid "Testing Universal Plug & Play Support"
+msgstr "בודק כעת תמיכת Plug & Play אוניברסאלית."
+
+msgctxt "UpdateProcess"
+msgid ""
+"Vidalia was unable to check for available software updates because it could "
+"not find '%1'."
+msgstr "Vidalia לא מסוגל היה לחפש עדכוני תוכנה מכיוון שלא ניתן היה למצוא את '%1'."
+
+msgctxt "UpdateProcess"
+msgid ""
+"Vidalia was unable to check for available software updates because Tor's "
+"update process exited unexpectedly."
+msgstr "Vidalia לא מסוגל היה לחפש עדכוני תוכנה מכיוון שהיישום Tor נסגר בפתאומיות."
+
+msgctxt "UpdateProgressDialog"
+msgid "Checking for available updates..."
+msgstr "מחפש כעת עבור עדכונים זמינים..."
+
+msgctxt "UpdateProgressDialog"
+msgid "Hide"
+msgstr "הסתרה"
+
+msgctxt "UpdateProgressDialog"
+msgid "Downloading updates..."
+msgstr "מוריד עדכונים כעת..."
+
+msgctxt "UpdateProgressDialog"
+msgid "Installing updated software..."
+msgstr "מתקין עדכונים כעת..."
+
+msgctxt "UpdateProgressDialog"
+msgid "Done! Your software is now up to date."
+msgstr "סיום! התוכנה שלך מעודכנת."
+
+msgctxt "UpdateProgressDialog"
+msgid "OK"
+msgstr "אישור"
+
+msgctxt "UpdateProgressDialog"
+msgid "Software Updates"
+msgstr "עדכוני תוכנה"
+
+msgctxt "UpdateProgressDialog"
+msgid "Checking for updates..."
+msgstr "בודק עדכונים כעת..."
+
+msgctxt "UpdateProgressDialog"
+msgid "Cancel"
+msgstr "ביטול"
+
+msgctxt "UpdatesAvailableDialog"
+msgid "Software Updates Available"
+msgstr "קיים עדכון זמין עבור Tor"
+
+msgctxt "UpdatesAvailableDialog"
+msgid "Remind Me Later"
+msgstr "הזכר לי אחר כך"
+
+msgctxt "UpdatesAvailableDialog"
+msgid "Install"
+msgstr "התקן"
+
+msgctxt "UpdatesAvailableDialog"
+msgid "The following updated software packages are ready for installation:"
+msgstr "חבילות התוכנה העדכניות הבאות מוכנות להתקנה:"
+
+msgctxt "UpdatesAvailableDialog"
+msgid "Package"
+msgstr "חבילה"
+
+msgctxt "UpdatesAvailableDialog"
+msgid "Version"
+msgstr "גרסה"
+
+msgctxt "VMessageBox"
+msgid "OK"
+msgstr "אישור"
+
+msgctxt "VMessageBox"
+msgid "Cancel"
+msgstr "ביטול"
+
+msgctxt "VMessageBox"
+msgid "Yes"
+msgstr "כן"
+
+msgctxt "VMessageBox"
+msgid "No"
+msgstr "לא"
+
+msgctxt "VMessageBox"
+msgid "Help"
+msgstr "עזרה"
+
+msgctxt "VMessageBox"
+msgid "Retry"
+msgstr "ניסיון חוזר"
+
+msgctxt "VMessageBox"
+msgid "Show Log"
+msgstr "הצגת יומן"
+
+msgctxt "VMessageBox"
+msgid "Show Settings"
+msgstr "הצגת הגדרות"
+
+msgctxt "VMessageBox"
+msgid "Continue"
+msgstr "המשך"
+
+msgctxt "VMessageBox"
+msgid "Quit"
+msgstr "יציאה"
+
+msgctxt "VMessageBox"
+msgid "Browse"
+msgstr "עיון"
+
+msgctxt "Vidalia"
+msgid "Invalid Argument"
+msgstr "ארגומנט שגוי"
+
+msgctxt "Vidalia"
+msgid "Vidalia is already running"
+msgstr "Vidalia כבר מורץ"
+
+msgctxt "Vidalia"
+msgid "Displays this usage message and exits."
+msgstr "הצגת הודעת שימוש זו ויציאה."
+
+msgctxt "Vidalia"
+msgid "Resets ALL stored Vidalia settings."
+msgstr "איפוס מוחלט של כל ההגדרות המאוחסנות של Vidalia."
+
+msgctxt "Vidalia"
+msgid "Sets the directory Vidalia uses for data files."
+msgstr "הגדרת הספרייה שבשימוש על ידי Vidalia לקבצי מידע."
+
+msgctxt "Vidalia"
+msgid "Sets the name and location of Vidalia's pidfile."
+msgstr "הגדרת השם ומיקום קובץ ה־PID של Vidalia."
+
+msgctxt "Vidalia"
+msgid "Sets the name and location of Vidalia's logfile."
+msgstr "הגדרת השם ומיקום קובץ היומן של Vidalia."
+
+msgctxt "Vidalia"
+msgid "Sets the verbosity of Vidalia's logging."
+msgstr "הגדרת הגיבוב של היומן אצל Vidalia."
+
+msgctxt "Vidalia"
+msgid "Sets Vidalia's interface style."
+msgstr "הגדרת סגנון הממשק של Vidalia."
+
+msgctxt "Vidalia"
+msgid "Sets Vidalia's language."
+msgstr "הגדרת השפה של Vidalia."
+
+msgctxt "Vidalia"
+msgid "Vidalia Usage Information"
+msgstr "מידע שימוש עבור Vidalia"
+
+msgctxt "Vidalia"
+msgid "Unable to open log file '%1': %2"
+msgstr "לא ניתן לפתוח קובץ יומן '%1': %2"
+
+msgctxt "Vidalia"
+msgid "Value required for parameter :"
+msgstr "נדרש ערך עבור פרמטר :"
+
+msgctxt "Vidalia"
+msgid "Invalid language code specified:"
+msgstr "צוין קוד שפה שגו:"
+
+msgctxt "Vidalia"
+msgid "Invalid GUI style specified:"
+msgstr "צוין סגנון ממשק שגוי:"
+
+msgctxt "Vidalia"
+msgid "Invalid log level specified:"
+msgstr "צוינה רמת יומן שגויה:"
+
+msgctxt "Vidalia"
+msgid ""
+"Another Vidalia process is possibly already running. If there really is not another Vidalia process running, you can choose to continue anyway.\n"
+"\n"
+"Would you like to continue starting Vidalia?"
+msgstr "תהליך אחר של Vidalia כבר מורץ. אם אין תהליך פעיל אחר של Vidalia, ביכולתך לבחור להמשיך בכל מקרה.\n\nהאם ברצונך להמשיך להפעיל את Vidalia?"
+
+msgctxt "stringutil.h"
+msgid "%1 secs"
+msgstr "%1 שניות"
+
+msgctxt "stringutil.h"
+msgid "%1 B/s"
+msgstr "%1 ביתים/ש"
+
+msgctxt "stringutil.h"
+msgid "%1 KB/s"
+msgstr "%1 ק״ב/ש"
+
+msgctxt "stringutil.h"
+msgid "%1 MB/s"
+msgstr "%1 מ״ב/ש"
+
+msgctxt "stringutil.h"
+msgid "%1 GB/s"
+msgstr "%1 ג״ב/ש"
+
+msgctxt "stringutil.h"
+msgid "%1 days"
+msgstr "%1 ימים"
+
+msgctxt "stringutil.h"
+msgid "%1 hours"
+msgstr "%1 שעות"
+
+msgctxt "stringutil.h"
+msgid "%1 mins"
+msgstr "%1 דקות"
1
0

22 Jul '12
commit a810bea1cf2c64fa485570cdfe2f51a255468352
Author: Translation commit bot <translation(a)torproject.org>
Date: Sun Jul 22 13:45:08 2012 +0000
Update translations for vidalia
---
he/vidalia_he.po | 44 +++++++++++++++++++++++---------------------
1 files changed, 23 insertions(+), 21 deletions(-)
diff --git a/he/vidalia_he.po b/he/vidalia_he.po
index 5293ee8..a2e081b 100644
--- a/he/vidalia_he.po
+++ b/he/vidalia_he.po
@@ -2,7 +2,9 @@
# Translators:
# Amichay P. K. <am1chay.p.k(a)gmail.com>, 2011.
# <arab.with.nargila(a)gmail.com>, 2012.
+# Elifelet h<ttps://www.transifex.com/accounts/profile/Elifelet/, 2012.
# Isratine Citizen <genghiskhan(a)gmx.ca>, 2012.
+# Runa A. Sandvik <runa.sandvik(a)gmail.com>, 2011.
# runasand <runa.sandvik(a)gmail.com>, 2011.
# Something Another <roeyjobsyud(a)gmail.com>, 2012.
# <static.172(a)gmail.com>, 2012.
@@ -11,7 +13,7 @@ msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: https://trac.torproject.org/projects/tor\n"
"POT-Creation-Date: 2012-03-21 17:52+0000\n"
-"PO-Revision-Date: 2012-07-22 13:12+0000\n"
+"PO-Revision-Date: 2012-07-22 13:45+0000\n"
"Last-Translator: GenghisKhan <genghiskhan(a)gmx.ca>\n"
"Language-Team: translations(a)vidalia-project.net\n"
"MIME-Version: 1.0\n"
@@ -100,7 +102,7 @@ msgstr "כלום"
msgctxt "AdvancedPage"
msgid "Cookie"
-msgstr "עוגיה"
+msgstr "עוגייה"
msgctxt "AdvancedPage"
msgid "Password"
@@ -200,14 +202,14 @@ msgstr "בחירת קובץ לשימוש עבור Tor socket path"
msgctxt "AdvancedPage"
msgid "Configure ControlPort automatically"
-msgstr "הגדר \"בקרת יציאה\" אוטומטית"
+msgstr "הגדרה אוטומטית של בקרת־יציאה (ControlPort)"
msgctxt "AdvancedPage"
msgid ""
"You've checked the autoconfiguration option for the ControlPort, but "
"provided no Data Directory. Please add one, or uncheck the \"Configure "
"ControlPort automatically\" option."
-msgstr ""
+msgstr "בחרת באפשרות תצורה אוטומטית עבור בקרת יציאה, אולם לא סיפקת מידע מדור. נא להוסיף אחד, או לכבות את האפשרות \"הגדרה אוטומטית של בקרת־יציאה\"."
msgctxt "AdvancedPage"
msgid ""
@@ -239,19 +241,19 @@ msgstr "Vidalia לא מסוגל היה לטעון את קבצי התרגום
msgctxt "AppearancePage"
msgid ""
"System Icon Preferences (changes will take effect when you restart Vidalia)"
-msgstr ""
+msgstr "העדפות סמל מערכת (שינויים יכנסו לתוקף בעת אתחול Vidalia)"
msgctxt "AppearancePage"
msgid "Show the Tray Icon and Dock Icon (default)"
-msgstr ""
+msgstr "הצגת סמל המגש וסמל הרציף (ברירת מחדל)"
msgctxt "AppearancePage"
msgid "Hide the Tray Icon"
-msgstr ""
+msgstr "הסתרת סמל המגש"
msgctxt "AppearancePage"
msgid "Hide the Dock Icon"
-msgstr ""
+msgstr "הסתרת סמל הרציף"
msgctxt "BandwidthGraph"
msgid "Since:"
@@ -1350,7 +1352,7 @@ msgstr "בחירת קובץ הרצה לפרוקסי"
msgctxt "GeneralPage"
msgid "You must specify the name of your Tor executable."
-msgstr "עליך לציין את קובץ הרצת Tor שלך."
+msgstr "עליך לציין את השם של קובץ הרצת Tor שלך."
msgctxt "GeneralPage"
msgid "Start Vidalia when my system starts"
@@ -1877,7 +1879,7 @@ msgstr "מזדהה מול Tor."
msgctxt "MainWindow"
msgid "Cookie Authentication Required"
-msgstr "אימות \"עוגיה\" נדרש"
+msgstr "אימות עוגייה (Cookie) נדרש"
msgctxt "MainWindow"
msgid ""
@@ -2122,14 +2124,14 @@ msgid ""
"\n"
"Here's the last error message:\n"
"%2"
-msgstr ""
+msgstr "Vidalia לא מסוגל להבין כיצד לדבר אל Tor מכיוון שאין ביכולתו לגשת אל קובץ זה: %1\n\nהנה הודעות השגיאה האחרונות:\n%2"
msgctxt "MainWindow"
msgid ""
"It seems Tor has stopped running since Vidalia started it.\n"
"\n"
"See the Advanced Message Log for more information."
-msgstr ""
+msgstr "נראה שהיישום Tor פסק מלפעול מאחר שהיישום Vidalia התחיל אותו.\n\nראו יומן הודעות מתקדם למידע נוסף."
msgctxt "MainWindow"
msgid ""
@@ -2143,7 +2145,7 @@ msgid ""
"Vidalia detected that the Tor software exited unexpectedly.\n"
"\n"
"Please check the message log for recent warning or error messages."
-msgstr "Vidalia הבחין כי היישום Tor נעצר באופן פתאומי.\n\nנא לבדוק את יומן ההודעות עבור הודעות אזהרה או שגיאה."
+msgstr "Vidalia הבחין כי היישום Tor נסגר באופן פתאומי.\n\nנא לבדוק את יומן ההודעות עבור הודעות אזהרה או שגיאה."
msgctxt "MessageLog"
msgid "Error Setting Filter"
@@ -2227,11 +2229,11 @@ msgstr "איפוס"
msgctxt "MessageLog"
msgid "Clear all messages from the Message Log (Ctrl+E)"
-msgstr "מחיקת כל ההודעות מיומן ההודעות (Ctrl+E)"
+msgstr "מחיקת כל ההודעות מן יומן ההודעות (Ctrl+E)"
msgctxt "MessageLog"
msgid "Ctrl+E"
-msgstr "(Ctrl+E)"
+msgstr "Ctrl+E"
msgctxt "MessageLog"
msgid "Copy"
@@ -2315,7 +2317,7 @@ msgstr "מציאה"
msgctxt "MessageLog"
msgid "Find all messages containing the search text (Ctrl+F)"
-msgstr "מציאת את כל ההודעות המכילות את טקסט החיפוש (Ctrl+F)"
+msgstr "מציאת את כל ההודעות המכילות את תמליל החיפוש (Ctrl+F)"
msgctxt "MessageLog"
msgid "Ctrl+F"
@@ -2666,7 +2668,7 @@ msgstr "גשרים חדשים אינם זמינים כעת. ניתן להמתי
msgctxt "NetworkPage"
msgid "Click Help to see other methods of finding new bridges."
-msgstr "לחצו על \"עזרה\" לקבלת מידע נוסף על דרכים שונות למציאת גשרים חדשים."
+msgstr "לחצו על עזרה לקבלת מידע נוסף על דרכים שונות למציאת גשרים חדשים."
msgctxt "NetworkPage"
msgid "Address:"
@@ -2694,7 +2696,7 @@ msgstr "HTTP / HTTPS"
msgctxt "NetworkPage"
msgid "You must specify one or more bridges."
-msgstr ""
+msgstr "עליך לציין את גשר אחד או יותר."
msgctxt "Policy"
msgid "accept"
@@ -3118,11 +3120,11 @@ msgstr "הפצה אוטומטית של כתובת הגשר שלי"
msgctxt "ServerPage"
msgid "Relay traffic for the Tor network (exit relay)"
-msgstr ""
+msgstr "תעבורת ממסר עבור רשת Tor (ממסר יציאה)"
msgctxt "ServerPage"
msgid "Relay traffic inside the Tor network (non-exit relay)"
-msgstr ""
+msgstr "תעבורת ממסר בתוך רשת Tor (ממסר שאינו-יציאה)"
msgctxt "ServerPage"
msgid "Mirror the Relay Directory"
@@ -3561,7 +3563,7 @@ msgstr "שגיאה בעת התחברות אל Tor"
msgctxt "TorrcDialog"
msgid "Selection is empty. Please select some text, or check \"Apply all\""
-msgstr "אין בחירות. אנא בחר טקסט מסוים, או שבחר ב\"החל הכל\""
+msgstr "אין בחירות. נא לבחור תמליל מסוים, או חסמן ב\"החל הכל\""
msgctxt "TorrcDialog"
msgid "Error at line %1: \"%2\""
1
0

22 Jul '12
commit 8a8a25ae10ab2a9a632a4b765835cbf033a41dc5
Author: Translation commit bot <translation(a)torproject.org>
Date: Sun Jul 22 13:15:08 2012 +0000
Update translations for vidalia
---
he/vidalia_he.po | 937 +++++++++++++++++++++++++++---------------------------
1 files changed, 469 insertions(+), 468 deletions(-)
diff --git a/he/vidalia_he.po b/he/vidalia_he.po
index 96db051..5293ee8 100644
--- a/he/vidalia_he.po
+++ b/he/vidalia_he.po
@@ -2,6 +2,7 @@
# Translators:
# Amichay P. K. <am1chay.p.k(a)gmail.com>, 2011.
# <arab.with.nargila(a)gmail.com>, 2012.
+# Isratine Citizen <genghiskhan(a)gmx.ca>, 2012.
# runasand <runa.sandvik(a)gmail.com>, 2011.
# Something Another <roeyjobsyud(a)gmail.com>, 2012.
# <static.172(a)gmail.com>, 2012.
@@ -10,8 +11,8 @@ msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: https://trac.torproject.org/projects/tor\n"
"POT-Creation-Date: 2012-03-21 17:52+0000\n"
-"PO-Revision-Date: 2012-05-16 08:59+0000\n"
-"Last-Translator: Elifelet <arab.with.nargila(a)gmail.com>\n"
+"PO-Revision-Date: 2012-07-22 13:12+0000\n"
+"Last-Translator: GenghisKhan <genghiskhan(a)gmx.ca>\n"
"Language-Team: translations(a)vidalia-project.net\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -38,20 +39,20 @@ msgstr "Tor 0.2.0.32"
msgctxt "AboutDialog"
msgid "Qt 4.4.2"
-msgstr "4.4.2"
+msgstr "Qt 4.4.2"
msgctxt "AdvancedPage"
msgid "'%1' is not a valid IP address."
-msgstr "%1 אינו כתובת IP חוקית."
+msgstr "%1 אינו כתובת IP תקפה."
msgctxt "AdvancedPage"
msgid ""
"You selected 'Password' authentication, but did not specify a password."
-msgstr "בחרת באימות 'סיסמה', אך לא הגדרת סיסמה."
+msgstr "בחרת באימות 'סיסמה', אך לא ציינת סיסמה."
msgctxt "AdvancedPage"
msgid "Select Tor Configuration File"
-msgstr "בחר קובץ הגדרות ל-Tor"
+msgstr "בחירת קובץ הגדרות Tor"
msgctxt "AdvancedPage"
msgid "File Not Found"
@@ -67,23 +68,23 @@ msgstr "כשלון בעת יצירת קובץ"
msgctxt "AdvancedPage"
msgid "Unable to create %1 [%2]"
-msgstr "לא יכול ליצור %1 (%2)"
+msgstr "לא יכול ליצור %1 [%2]"
msgctxt "AdvancedPage"
msgid "Select a Directory to Use for Tor Data"
-msgstr "בחר ספריה לאחסון המידע של Tor"
+msgstr "בחירת ספריה לשימוש עבור מידע של Tor"
msgctxt "AdvancedPage"
msgid "Unable to remove Tor Service"
-msgstr "לא יכול להסיר את שירות Tor"
+msgstr "לא ניתן להסיר את שירות Tor"
msgctxt "AdvancedPage"
msgid "Unable to install Tor Service"
-msgstr "לא יכול להתקין את שירות Tor"
+msgstr "לא ניתן להתקין את שירות Tor"
msgctxt "AdvancedPage"
msgid "Vidalia was unable to install the Tor service."
-msgstr "Vidalia לא הצליחה להתקין את שירות Tor."
+msgstr "Vidalia לא הצליח להתקין את השירות Tor."
msgctxt "AdvancedPage"
msgid "Authentication:"
@@ -119,27 +120,27 @@ msgstr "קובץ הגדרות Tor"
msgctxt "AdvancedPage"
msgid "Start the Tor software with the specified configuration file (torrc)"
-msgstr "התחל את Tor באמצעות קובץ הגדרות מותאם אישית (torrc)"
+msgstr "הפעלת Tor באמצעות קובץ ההגדרות המצוין (torrc)"
msgctxt "AdvancedPage"
msgid "Select path to your configuration file"
-msgstr "בחר נתיב אל קובץ ההגדרות"
+msgstr "בחירת נתיב אל קובץ ההגדרות"
msgctxt "AdvancedPage"
msgid "Browse"
-msgstr "חפש"
+msgstr "עיון"
msgctxt "AdvancedPage"
msgid "Data Directory"
-msgstr "תיקית מידע"
+msgstr "מדור מידע"
msgctxt "AdvancedPage"
msgid "Store data for the Tor software in the following directory"
-msgstr "אחסן מידע עבור Tor בתיקיה זו"
+msgstr "אחסון מידע עבור Tor במדור זה"
msgctxt "AdvancedPage"
msgid "Select the directory used to store data for the Tor software"
-msgstr "בחר את התיקיה שתשמש לאיחסון מידע עבור Tor"
+msgstr "בחירת המדור שישמש לאחסון מידע עבור Tor"
msgctxt "AdvancedPage"
msgid "Tor Control"
@@ -147,7 +148,7 @@ msgstr "שליטה ב-Tor"
msgctxt "AdvancedPage"
msgid "Use TCP connection (ControlPort)"
-msgstr "השתמש בחיבור TCP (ControlPort)"
+msgstr "שימוש בחיבור TCP (ControlPort)"
msgctxt "AdvancedPage"
msgid "Path:"
@@ -155,31 +156,31 @@ msgstr "נתיב:"
msgctxt "AdvancedPage"
msgid "Use Unix domain socket (ControlSocket)"
-msgstr "השתמש ב-Unix domain socket (ControlSocket)"
+msgstr "שימוש ב-Unix domain socket (ControlSocket)"
msgctxt "AdvancedPage"
msgid "Edit current torrc"
-msgstr "ערוך את torrc"
+msgstr "עריכת קובץ torrc נוכחי"
msgctxt "AdvancedPage"
msgid "NOTE: this will edit the currently loaded torrc"
-msgstr "שים לב: פעולה זו תערוך את קובץ torrc הטעון"
+msgstr "לתשומת לבך: פעולה זו תערוך את קובץ torrc שטעון כעת"
msgctxt "AdvancedPage"
msgid "ControlSocket path doesn't exist."
-msgstr "נתיב ל-ControlSocket אינו קיים."
+msgstr "נתיב הקרת Socket אינו קיים."
msgctxt "AdvancedPage"
msgid ""
"The specified Tor configuration file location contains characters that "
"cannot be represented in your system's current 8-bit character encoding."
-msgstr ""
+msgstr "מיקום קובץ תצורת Tor שצוין מכיל תווים שלא ניתן להציגם בקידוד 8-bit הנוכחי של מערכתך."
msgctxt "AdvancedPage"
msgid ""
"The specified Tor data directory location contains characters that cannot be"
" represented in your system's current 8-bit character encoding."
-msgstr ""
+msgstr "מיקום מדור מידע Tor שצוין מכיל תווים שלא ניתן להציגם בקידוד 8-bit הנוכחי של מערכתך."
msgctxt "AdvancedPage"
msgid "Warning"
@@ -187,19 +188,19 @@ msgstr "אזהרה"
msgctxt "AdvancedPage"
msgid "You changed torrc path, would you like to restart Tor?"
-msgstr "שינית הגדרות בקונפיגורציית טור, רוצה לאתחל את Tor?"
+msgstr "שינית את הנתיב של torrc, האם ברצונך לאתחל את Tor?"
msgctxt "AdvancedPage"
msgid "Tor Configuration File (torrc);;All Files (*)"
-msgstr "קובץ קונפיגורציית Tor (torrc);;כל הקבצים (*)"
+msgstr "קובץ תצורת Tor (torrc);;כל הקבצים (*)"
msgctxt "AdvancedPage"
msgid "Select a file to use for Tor socket path"
-msgstr "בחר קובץ עבור Tor socket path"
+msgstr "בחירת קובץ לשימוש עבור Tor socket path"
msgctxt "AdvancedPage"
msgid "Configure ControlPort automatically"
-msgstr "עשה קונפיגורצייה אוטומטית עבור \"שליטת פורטים\""
+msgstr "הגדר \"בקרת יציאה\" אוטומטית"
msgctxt "AdvancedPage"
msgid ""
@@ -213,7 +214,7 @@ msgid ""
"Vidalia was unable to remove the Tor service.\n"
"\n"
"You may need to remove it manually."
-msgstr "Vidalia לא היתה מסוגלת להסיר את Tor.\n\nיתכן שעליך להסיר אותו ידנית."
+msgstr "Vidalia לא מסוגל היה להסיר את Tor.\n\nייתכן שעליך להסיר אותו ידנית."
msgctxt "AppearancePage"
msgid "Language"
@@ -221,7 +222,7 @@ msgstr "שפה"
msgctxt "AppearancePage"
msgid "Choose the language used in Vidalia"
-msgstr "בחר שפה לשימוש על ידי Vidalia"
+msgstr "בחירת שפה לשימוש ביישום Vidalia"
msgctxt "AppearancePage"
msgid "Style"
@@ -229,11 +230,11 @@ msgstr "סגנון"
msgctxt "AppearancePage"
msgid "Choose Vidalia's interface style"
-msgstr "בחר את סגנון הממשק של Vidalia"
+msgstr "בחירת סגנון הממשק של Vidalia"
msgctxt "AppearancePage"
msgid "Vidalia was unable to load the selected language translation."
-msgstr "Vidalia לא היתה מסוגלת לטעון את קבצי התרגום המבוקשים."
+msgstr "Vidalia לא מסוגל היה לטעון את קבצי התרגום הנבחרים."
msgctxt "AppearancePage"
msgid ""
@@ -258,15 +259,15 @@ msgstr "מאז:"
msgctxt "BandwidthGraph"
msgid "Hide Settings"
-msgstr "הסתר הגדרות"
+msgstr "הסתרת הגדרות"
msgctxt "BandwidthGraph"
msgid "Show Settings"
-msgstr "הצג הגדרות"
+msgstr "הצגת הגדרות"
msgctxt "BandwidthGraph"
msgid "Tor Bandwidth Usage"
-msgstr "שימוש רוחב-פס של Tor"
+msgstr "שימוש רוחב פס של Tor"
msgctxt "BandwidthGraph"
msgid "Reset"
@@ -290,7 +291,7 @@ msgstr "סגנון"
msgctxt "BandwidthGraph"
msgid "Changes the transparency of the Bandwidth Graph"
-msgstr "שנה את השקיפות של גרף רוחב הפס"
+msgstr "שינוי את השקיפות של גרף רוחב הפס"
msgctxt "BandwidthGraph"
msgid "100"
@@ -302,7 +303,7 @@ msgstr "% אטום"
msgctxt "BandwidthGraph"
msgid "Save"
-msgstr "שמור"
+msgstr "שמירה"
msgctxt "BandwidthGraph"
msgid "Cancel"
@@ -310,23 +311,23 @@ msgstr "ביטול"
msgctxt "BridgeDownloader"
msgid "Starting HTTPS bridge request..."
-msgstr "מתחיל בקשת גשר HTTPS..."
+msgstr "מפעיל כעת בקשת גשר HTTPS..."
msgctxt "BridgeDownloader"
msgid "Connecting to %1:%2..."
-msgstr "מתחבר אל %1:%2..."
+msgstr "מתחבר כעת אל %1:%2..."
msgctxt "BridgeDownloader"
msgid "Sending an HTTPS request for bridges..."
-msgstr "שולח בקשת HTTPS אל הגשר..."
+msgstr "שולח כעת בקשת HTTPS עבור גשרים..."
msgctxt "BridgeDownloader"
msgid "Downloading a list of bridges..."
-msgstr "טוען רשימת גשרים..."
+msgstr "טוען כעת רשימת גשרים..."
msgctxt "BridgeDownloaderProgressDialog"
msgid "Downloading Bridges"
-msgstr "טוען גשרים..."
+msgstr "טוען גשרים כעת..."
msgctxt "BridgeDownloaderProgressDialog"
msgid "Unable to download bridges: %1"
@@ -334,7 +335,7 @@ msgstr "לא מסוגל לטעון גשרים: %1"
msgctxt "BridgeDownloaderProgressDialog"
msgid "Retrying bridge request..."
-msgstr "מנסה שנית בקשה לגשרים..."
+msgstr "מנסה שוב בקשת גשר כעת..."
msgctxt "BridgeUsageDialog"
msgid "Country"
@@ -342,11 +343,11 @@ msgstr "מדינה"
msgctxt "BridgeUsageDialog"
msgid "# Clients"
-msgstr "# קליינט"
+msgstr "# לקוחות"
msgctxt "BridgeUsageDialog"
msgid "Clients from the following countries have used your relay since %1"
-msgstr "קליינטים מהמדינות הבאות השתמשו בממסר שלך מאז %1"
+msgstr "לקוחות מן המדינות הבאות השתמשו בממסרך מאז %1"
msgctxt "BridgeUsageDialog"
msgid "Bridge Usage Summary"
@@ -374,7 +375,7 @@ msgstr "נכשל"
msgctxt "Circuit"
msgid "Closed"
-msgstr "סגור"
+msgstr "סגירה"
msgctxt "Circuit"
msgid "Unknown"
@@ -398,11 +399,11 @@ msgstr "קרב למעגל"
msgctxt "CircuitListWidget"
msgid "Close Circuit (Del)"
-msgstr "סגור מעגל (Del)"
+msgstr "סגירת מעגל (Del)"
msgctxt "CircuitListWidget"
msgid "Close Stream (Del)"
-msgstr "סגור זרם (Del)"
+msgstr "סגירת זרם (Del)"
msgctxt "ConfigDialog"
msgid "General"
@@ -418,7 +419,7 @@ msgstr "שיתוף"
msgctxt "ConfigDialog"
msgid "Services"
-msgstr "שירות"
+msgstr "שירותים"
msgctxt "ConfigDialog"
msgid "Appearance"
@@ -438,15 +439,15 @@ msgstr "תקלה בעת שמירת הגדרות"
msgctxt "ConfigDialog"
msgid "Vidalia was unable to save your %1 settings."
-msgstr "Vidalia לא הצליח לשמור את השינויים בהגדרות 1%."
+msgstr "Vidalia לא הצליח לשמור את השינויים בהגדרות 1%."
msgctxt "ConfigDialog"
msgid "Error Applying Settings"
-msgstr "תקלה בעת הפעלת שינויים"
+msgstr "תקלה בעת החלת הגדרות"
msgctxt "ConfigDialog"
msgid "Vidalia was unable to apply your %1 settings to Tor."
-msgstr "Vidalia לא הצליח להפעיל את השינויים בהגדרות 1%."
+msgstr "Vidalia לא הצליח להפעיל את השינויים בהגדרות 1%."
msgctxt "ConfigDialog"
msgid "Settings"
@@ -454,11 +455,11 @@ msgstr "הגדרות"
msgctxt "ControlConnection"
msgid "Vidalia was unable to connect to Tor. (%1)"
-msgstr "Vidalia לא הצליח להתחבר ל-Tor. (%1)"
+msgstr "Vidalia לא הצליח להתחבר אל Tor. (%1)"
msgctxt "ControlConnection"
msgid "Control socket is not connected."
-msgstr "סוקט שליטה לא מחובר."
+msgstr "socket בקרה אינו מחובר."
msgctxt "ControlPasswordInputDialog"
msgid "Password Required"
@@ -472,23 +473,23 @@ msgctxt "ControlPasswordInputDialog"
msgid ""
"Vidalia has connected to a running Tor process that requires a password. "
"Please enter your control password:"
-msgstr "Vidalia התחברה לתהליך פעיל של Tor שדורש סיסמה. אנא הזן את סיסמת התהליך:"
+msgstr "Vidalia התחבר אל תהליך פעיל של Tor שדורש סיסמה. נא להזין את סיסמת התהליך:"
msgctxt "ControlSocket"
msgid "Control socket is not connected."
-msgstr "סוקט שליטה לא מחובר."
+msgstr "socket בקרה אינו מחובר."
msgctxt "ControlSocket"
msgid "Error sending control command. [%1]"
-msgstr "שגיעה בעת שליחת פקודת שליטה. (%1)"
+msgstr "שגיאה בעת שליחת פקודת בקרה. (%1)"
msgctxt "ControlSocket"
msgid "Socket disconnected while attempting to read a line of data."
-msgstr "סוקט נסגר בזמן נסיון לקרוא שורת מידע."
+msgstr "Socket נסגר במהלך ניסיון לקרוא שורת מידע."
msgctxt "ControlSocket"
msgid "Invalid control reply. [%1]"
-msgstr "תשובת שליטה שגויה. (%1)"
+msgstr "תשובת בקרה שגויה. (%1)"
msgctxt "CountryInfo"
msgid "Afghanistan"
@@ -556,7 +557,7 @@ msgstr "בוליביה"
msgctxt "CountryInfo"
msgid "Bosnia & Herzegovina"
-msgstr "בוסניה / הרצגובינה"
+msgstr "בוסניה והרצגובינה"
msgctxt "CountryInfo"
msgid "Botswana"
@@ -728,15 +729,15 @@ msgstr "גואטמאלה"
msgctxt "CountryInfo"
msgid "Guinea"
-msgstr "Guinea"
+msgstr "גינאה"
msgctxt "CountryInfo"
msgid "Guinea-Bissau"
-msgstr "Guinea-Bissau"
+msgstr "גינאה-ביסאו"
msgctxt "CountryInfo"
msgid "Guyana"
-msgstr "Guyana"
+msgstr "גיאנה"
msgctxt "CountryInfo"
msgid "Hong Kong"
@@ -780,7 +781,7 @@ msgstr "קניה"
msgctxt "CountryInfo"
msgid "Kiribati"
-msgstr "Kiribati"
+msgstr "קיריבאטי"
msgctxt "CountryInfo"
msgid "Kuwait"
@@ -804,7 +805,7 @@ msgstr "לבנון"
msgctxt "CountryInfo"
msgid "Lesotho"
-msgstr "Lesotho"
+msgstr "לסוטו"
msgctxt "CountryInfo"
msgid "Liberia"
@@ -816,7 +817,7 @@ msgstr "ליכטנשטיין"
msgctxt "CountryInfo"
msgid "Lithuania"
-msgstr "Lithuania"
+msgstr "ליטא"
msgctxt "CountryInfo"
msgid "Luxembourg"
@@ -832,7 +833,7 @@ msgstr "מדגסקר"
msgctxt "CountryInfo"
msgid "Malawi"
-msgstr "Malawi"
+msgstr "מלאווי"
msgctxt "CountryInfo"
msgid "Malaysia"
@@ -848,7 +849,7 @@ msgstr "מלטה"
msgctxt "CountryInfo"
msgid "Marshall Islands"
-msgstr "Marshall Islands"
+msgstr "איי מרשל"
msgctxt "CountryInfo"
msgid "Mauritania"
@@ -1096,7 +1097,7 @@ msgstr "תאילנד"
msgctxt "CountryInfo"
msgid "Timor-Leste (East Timor)"
-msgstr "טימור-Leste (מזרח טימור)"
+msgstr "טימור-לאסטה (מזרח טימור)"
msgctxt "CountryInfo"
msgid "Togo"
@@ -1144,7 +1145,7 @@ msgstr "בריטניה"
msgctxt "CountryInfo"
msgid "United States"
-msgstr "ארה\"ב"
+msgstr "ארצות הברית"
msgctxt "CountryInfo"
msgid "Uruguay"
@@ -1188,7 +1189,7 @@ msgstr "זימבבואה"
msgctxt "CountryInfo"
msgid "Zaire"
-msgstr "Zaire"
+msgstr "זאיר"
msgctxt "CountryInfo"
msgid "Albania"
@@ -1288,80 +1289,80 @@ msgstr "טאיוואן"
msgctxt "CrashReportDialog"
msgid "Submit a Crash Report"
-msgstr "שלח דו\"ח התרסקות"
+msgstr "שליחת דו״ח התרסקות"
msgctxt "CrashReportDialog"
msgid "Vidalia encountered an error and needed to close"
-msgstr "Vidalia נתקל בשגיאה וחייב להסגר"
+msgstr "Vidalia נתקל בשגיאה ונאלץ להסגר"
msgctxt "CrashReportDialog"
msgid "Restart Vidalia"
-msgstr "אתחל את "
+msgstr "אתחול Vidalia"
msgctxt "CrashReportDialog"
msgid "Don't Restart"
-msgstr "אל תאתחל"
+msgstr "לא לאתחל"
msgctxt "CrashReportDialog"
msgid "Unable to restart Vidalia"
-msgstr "לא מסוגל לאתחל את Vidalia"
+msgstr "לא ניתן לאתחל את Vidalia"
msgctxt "CrashReportDialog"
msgid ""
"We were unable to automatically restart Vidalia. Please restart Vidalia "
"manually."
-msgstr "לא יכלנו לאתחל את Vidalia. אנא אתחל אותו ידנית."
+msgstr "אין ביכולתנו לאתחל את Vidalia באופן אוטומטי. נא לאתחל את Vidalia ידנית."
msgctxt "CrashReportDialog"
msgid "Please fill a ticket in:"
-msgstr ""
+msgstr "נא למלא ספח כרטיס בכתובת:"
msgctxt "CrashReportDialog"
msgid ""
"<a "
"href=\"https://trac.torproject.org/projects/tor/newticket\">https://trac.torproject.org/projects/tor/newticket</a>"
-msgstr ""
+msgstr "<a href=\"https://trac.torproject.org/projects/tor/newticket\">https://trac.torproject.org/projects/tor/newticket</a>"
msgctxt "CrashReportDialog"
msgid ""
"A crash report has been created that you can send to the Vidalia developers "
"to help identify and fix the problem. The submitted report does not contain "
"any personally identifying information."
-msgstr ""
+msgstr "דו״ח התרסקות נוצר וביכולתך לשלוחו אל המפתחים של Vidalia כדי לעזור לזהות ולתקן את הבעיה. הדו״ח שנשלח לא מכיל שום מידע אישי שעלול לזהותך."
msgctxt "CrashReportDialog"
msgid ""
"with a description of what you were doing before the application crashed, "
"along with the following files corresponding to the crash report:"
-msgstr ""
+msgstr "יחד עם תיאור של מה הינך עושה לפני שהיישום מתרסק, ביחד עם הקבצים הבאים שתואמים לדו״ח ההתרסקות:"
msgctxt "GeneralPage"
msgid "Executables (*.exe)"
-msgstr "קבצי הרצה (exe.*)"
+msgstr "קבצי הרצה (*.exe)"
msgctxt "GeneralPage"
msgid "Select Path to Tor"
-msgstr "בחר נתיב ל-Tor"
+msgstr "בחירת נתיב אל Tor"
msgctxt "GeneralPage"
msgid "Select Proxy Executable"
-msgstr "בחר קובץ הרצה לפרוקסי"
+msgstr "בחירת קובץ הרצה לפרוקסי"
msgctxt "GeneralPage"
msgid "You must specify the name of your Tor executable."
-msgstr "חובה לציין את קובץ הרצת Tor שלך."
+msgstr "עליך לציין את קובץ הרצת Tor שלך."
msgctxt "GeneralPage"
msgid "Start Vidalia when my system starts"
-msgstr "הפעל את Vidalia בהפעלת המחשב"
+msgstr "הפעלת Vidalia בעת הפעלת המערכת"
msgctxt "GeneralPage"
msgid "Browse"
-msgstr "חפש"
+msgstr "עיון"
msgctxt "GeneralPage"
msgid "Start the Tor software when Vidalia starts"
-msgstr "הפעל את Tor כאשר Vidalia מופעלת"
+msgstr "הפעלת היישום Tor כאשר Vidalia מופעל"
msgctxt "GeneralPage"
msgid "Tor"
@@ -1369,15 +1370,15 @@ msgstr "Tor"
msgctxt "GeneralPage"
msgid "Proxy Application (optional)"
-msgstr "תוכנת פרוקסי (אופציונאלי)"
+msgstr "יישום פרוקסי (אופציונאלי)"
msgctxt "GeneralPage"
msgid "Start a proxy application when Tor starts"
-msgstr "הפעל פרוקסי כאשר Tor מופעל"
+msgstr "הפעלת יישום פרוקסי כאשר Tor מופעל"
msgctxt "GeneralPage"
msgid "Proxy Application Arguments:"
-msgstr "ארוגמנטים לתוכנת פרוקסי:"
+msgstr "ארוגמנטים של יישום פרוקסי:"
msgctxt "GeneralPage"
msgid "Software Updates"
@@ -1385,7 +1386,7 @@ msgstr "עדכוני תוכנה"
msgctxt "GeneralPage"
msgid "Check for new software updates automatically"
-msgstr "חפש עבור עדכונים אוטומטית"
+msgstr "חיפוש עבור עדכוני תוכנה חדשים אוטומטית"
msgctxt "GeneralPage"
msgid "Check Now"
@@ -1393,19 +1394,19 @@ msgstr "חפש עכשיו"
msgctxt "GraphFrame"
msgid "%1 KB/s"
-msgstr "%1 KB/s"
+msgstr "%1 ק״ב/ש"
msgctxt "GraphFrame"
msgid "%1 KB"
-msgstr "%1 KB"
+msgstr "%1 ק״ב"
msgctxt "GraphFrame"
msgid "%1 MB"
-msgstr "%1 MB"
+msgstr "%1 מ״ב"
msgctxt "GraphFrame"
msgid "%1 GB"
-msgstr "%1 GB"
+msgstr "%1 ג״ב"
msgctxt "GraphFrame"
msgid "Recv:"
@@ -1417,19 +1418,19 @@ msgstr "נשלחו:"
msgctxt "HelpBrowser"
msgid "Supplied XML file is not a valid Contents document."
-msgstr "קובץ XML נתון אינו קובץ תוכן חוקי."
+msgstr "קובץ XML שסופק אינו מסמך תכנים תקף."
msgctxt "HelpBrowser"
msgid "Search reached end of document"
-msgstr "החיפוש הגיע לסוף המסמך"
+msgstr "החיפוש הגיע אל סוף המסמך"
msgctxt "HelpBrowser"
msgid "Search reached start of document"
-msgstr "החיפוש הגיע לתחילת המסמך"
+msgstr "החיפוש הגיע אל תחילת המסמך"
msgctxt "HelpBrowser"
msgid "Text not found in document"
-msgstr "הטקסט לא נמצא במסמך"
+msgstr "התמליל לא נמצא במסמך"
msgctxt "HelpBrowser"
msgid "Found %1 results"
@@ -1437,7 +1438,7 @@ msgstr "נמצאו 1% תוצאות"
msgctxt "HelpBrowser"
msgid "Vidalia Help"
-msgstr "עזרת Vidalia"
+msgstr "עזרה - Vidalia"
msgctxt "HelpBrowser"
msgid "Back"
@@ -1445,7 +1446,7 @@ msgstr "אחורה"
msgctxt "HelpBrowser"
msgid "Move to previous page (Backspace)"
-msgstr "חזור לדף הקודם (Backspace)"
+msgstr "חזרה אל דף הקודם (Backspace)"
msgctxt "HelpBrowser"
msgid "Backspace"
@@ -1457,7 +1458,7 @@ msgstr "קדימה"
msgctxt "HelpBrowser"
msgid "Move to next page (Shift+Backspace)"
-msgstr "עבור לדף הבא (Shift+Backspace)"
+msgstr "מעבר אל הדף הבא (Shift+Backspace)"
msgctxt "HelpBrowser"
msgid "Shift+Backspace"
@@ -1469,7 +1470,7 @@ msgstr "דף בית"
msgctxt "HelpBrowser"
msgid "Move to the Home page (Ctrl+H)"
-msgstr "עבור לדף הבית (Ctrl+H)"
+msgstr "מעבר אל דף הבית (Ctrl+H)"
msgctxt "HelpBrowser"
msgid "Ctrl+H"
@@ -1477,11 +1478,11 @@ msgstr "Ctrl+H"
msgctxt "HelpBrowser"
msgid "Find"
-msgstr "מצא"
+msgstr "מציאה"
msgctxt "HelpBrowser"
msgid "Search for a word or phrase on current page (Ctrl+F)"
-msgstr "חפש מילה או ביטוי בדף הנוכחי (Ctrl+F)"
+msgstr "חיפש עבור מילה או ביטוי בדף הנוכחי (Ctrl+F)"
msgctxt "HelpBrowser"
msgid "Ctrl+F"
@@ -1489,11 +1490,11 @@ msgstr "Ctrl+F"
msgctxt "HelpBrowser"
msgid "Close"
-msgstr "סגור"
+msgstr "סגירה"
msgctxt "HelpBrowser"
msgid "Close Vidalia Help"
-msgstr "סגור את עזרת Vidalia"
+msgstr "סגירת עזרה - Vidalia"
msgctxt "HelpBrowser"
msgid "Esc"
@@ -1501,19 +1502,19 @@ msgstr "Esc"
msgctxt "HelpBrowser"
msgid "Find:"
-msgstr "מצא:"
+msgstr "מציאה:"
msgctxt "HelpBrowser"
msgid "Find Previous"
-msgstr "מצא הבא"
+msgstr "מציאת הבא"
msgctxt "HelpBrowser"
msgid "Find Next"
-msgstr "מצא קודם"
+msgstr "מציאת קודם"
msgctxt "HelpBrowser"
msgid "Case sensitive"
-msgstr "התחשב ב-Case"
+msgstr "התאמת אותיות גדולות/קטנות"
msgctxt "HelpBrowser"
msgid "Whole words only"
@@ -1525,11 +1526,11 @@ msgstr "נושאי עזרה"
msgctxt "HelpBrowser"
msgid "Contents"
-msgstr "תוכן"
+msgstr "תכנים"
msgctxt "HelpBrowser"
msgid "Search"
-msgstr "חפש"
+msgstr "חיפוש"
msgctxt "HelpBrowser"
msgid "Searching for:"
@@ -1541,40 +1542,40 @@ msgstr "מסמכים שנמצאו"
msgctxt "HelpBrowser"
msgid "Error Loading Help Contents:"
-msgstr "שגיאה בטעינת תוכן עזרה:"
+msgstr "שגיאה בעת טעינת תכני עזרה:"
msgctxt "HelpTextBrowser"
msgid "Opening External Link"
-msgstr "פותח קישור חיצוני"
+msgstr "פתיחת קישור חיצוני"
msgctxt "HelpTextBrowser"
msgid ""
"Vidalia can open the link you selected in your default Web browser. If your "
"browser is not currently configured to use Tor then the request will not be "
"anonymous."
-msgstr "Vidalia יכולה לפתוח את הקישור שבחרת בדפדפן ברירת המחדל שלך. אם הדפדפן אינו מותאם לשימוש ב-Tor, הבקשה עשוייה להיות חשופה."
+msgstr "Vidalia יכול לפתוח את הקישור שבחרת בדפדפן ברירת המחדל שלך. אם הדפדפן אינו מותאם לשימוש ביישום Tor, הבקשה לא תהיה אלמונית."
msgctxt "HelpTextBrowser"
msgid "Do you want Vidalia to open the link in your Web browser?"
-msgstr "האם ברצונך ש-Vidalia תפתח את הקישור בדפדפן?"
+msgstr "האם ברצונך שהיישום Vidalia יפתח את הקישור בדפדפן?"
msgctxt "HelpTextBrowser"
msgid "Unable to Open Link"
-msgstr "אין אפשרות לפתוח את הקישור"
+msgstr "לא ניתן לפתוח את הקישור"
msgctxt "HelpTextBrowser"
msgid ""
"Vidalia was unable to open the selected link in your Web browser. You can "
"still copy the URL and paste it into your browser."
-msgstr "Vidalia לא הצליחה לפתוח את הקישור בדפדפן. אתה עדיין יכול להעתיק את הכתובת אל הדפדפן בצורה ידנית."
+msgstr "Vidalia לא הצליח לפתוח את הקישור בדפדפן. ביכולתך להעתיק את הכתובת אל הדפדפן שלך בצורה ידנית."
msgctxt "HelpTextBrowser"
msgid "Error opening help file:"
-msgstr "שגיאה בפתיחת קובץ העזרה:"
+msgstr "שגיאה בפתיחת קובץ עזרה:"
msgctxt "LicenseDialog"
msgid "License Information"
-msgstr "מידע אודות הרישיון"
+msgstr "מידע רישוי"
msgctxt "LicenseDialog"
msgid "License"
@@ -1586,55 +1587,55 @@ msgstr "תודות"
msgctxt "LogEvent"
msgid "Debug"
-msgstr "דיבאג"
+msgstr "ניפוי שגיאות"
msgctxt "LogEvent"
msgid "Info"
-msgstr "מידע"
+msgstr "Info"
msgctxt "LogEvent"
msgid "Notice"
-msgstr "שים-לב"
+msgstr "Notice"
msgctxt "LogEvent"
msgid "Warning"
-msgstr "אזהרה"
+msgstr "Warning"
msgctxt "LogEvent"
msgid "Error"
-msgstr "שגיאה"
+msgstr "Error"
msgctxt "LogEvent"
msgid "Unknown"
-msgstr "לא ידוע"
+msgstr "Unknown"
msgctxt "LogTreeItem"
msgid "Debug"
-msgstr "דיבאג"
+msgstr "ניפוי שגיאות"
msgctxt "LogTreeItem"
msgid "Info"
-msgstr "מידע"
+msgstr "Info"
msgctxt "LogTreeItem"
msgid "Notice"
-msgstr "שים לב"
+msgstr "Notice"
msgctxt "LogTreeItem"
msgid "Warning"
-msgstr "אזהרה"
+msgstr "Warning"
msgctxt "LogTreeItem"
msgid "Error"
-msgstr "שגיאה"
+msgstr "Error"
msgctxt "LogTreeItem"
msgid "Unknown"
-msgstr "לא ידוע"
+msgstr "Unknown"
msgctxt "MainWindow"
msgid "Start Tor"
-msgstr "הפעל את Tor"
+msgstr "הפעלת Tor"
msgctxt "MainWindow"
msgid "Exit"
@@ -1642,7 +1643,7 @@ msgstr "יציאה"
msgctxt "MainWindow"
msgid "Bandwidth Graph"
-msgstr "גרף רוחב-פס"
+msgstr "גרף רוחב פס"
msgctxt "MainWindow"
msgid "Message Log"
@@ -1710,67 +1711,67 @@ msgstr "תצוגה"
msgctxt "MainWindow"
msgid "Vidalia Help"
-msgstr "עזרה אודות Vidalia"
+msgstr "עזרה - Vidalia"
msgctxt "MainWindow"
msgid "Error starting web browser"
-msgstr "שגיאה בעת פתיחת דפדפן"
+msgstr "שגיאה בעת הפעלת דפדפן"
msgctxt "MainWindow"
msgid "Vidalia was unable to start the configured web browser"
-msgstr "Vidalia נכשל בהפעלת הדפדפן המוגדר"
+msgstr "Vidalia לא מסוגל היה להפעיל את דפדפן הרשת המוגדר"
msgctxt "MainWindow"
msgid "Error starting IM client"
-msgstr "שגיאה בהפעלת לקוח מסרים מיידיים"
+msgstr "שגיאה בעת הפעלת לקוח מסרים מידיים"
msgctxt "MainWindow"
msgid "Vidalia was unable to start the configured IM client"
-msgstr "Vidalia לא היתה מסוגלת להפעיל את לקוח המסרים המיידיים המוגדר"
+msgstr "Vidalia לא מסוגל היה להפעיל את לקוח המסרים המידיים המוגדר"
msgctxt "MainWindow"
msgid "Error starting proxy server"
-msgstr "שגיאה בהפעלת שרת הפרוקסי"
+msgstr "שגיאה בעת הפעלת שרת פרוקסי"
msgctxt "MainWindow"
msgid "Vidalia was unable to start the configured proxy server"
-msgstr "Vidalia לא היתה מסוגלת להפעיל את שרת הפרוקסי המוגדר"
+msgstr "Vidalia לא מסוגל היה להפעיל את שרת הפרוקסי המוגדר"
msgctxt "MainWindow"
msgid "Connecting to a relay directory"
-msgstr "מתחבר לספריית הממסר"
+msgstr "מתחבר כעת אל מדור ממסר"
msgctxt "MainWindow"
msgid "Establishing an encrypted directory connection"
-msgstr "מקים חיבור ספריות מוצפן"
+msgstr "מקים כעת חיבור ספריות מוצפן"
msgctxt "MainWindow"
msgid "Retrieving network status"
-msgstr "מאתר את מצב הרשת"
+msgstr "מאתר כעת את מצב הרשת"
msgctxt "MainWindow"
msgid "Loading network status"
-msgstr "טוען את מצב הרשת"
+msgstr "טוען כעת את מצב הרשת"
msgctxt "MainWindow"
msgid "Loading authority certificates"
-msgstr "טוען אישורים אמינים"
+msgstr "טוען כעת אישורים אמינים"
msgctxt "MainWindow"
msgid "Requesting relay information"
-msgstr "מבקש מידע על הממסר"
+msgstr "מבקש כעת מידע ממסר"
msgctxt "MainWindow"
msgid "Loading relay information"
-msgstr "טוען מידע על הממסר"
+msgstr "טוען כעת מידע ממסר"
msgctxt "MainWindow"
msgid "Connecting to the Tor network"
-msgstr "מתחבר אל רשת Tor"
+msgstr "מתחבר כעת אל רשת Tor"
msgctxt "MainWindow"
msgid "Establishing a Tor circuit"
-msgstr "מקים מעגל שימוש ב-Tor"
+msgstr "מקים כעת מעגל Tor"
msgctxt "MainWindow"
msgid "Connected to the Tor network!"
@@ -1806,7 +1807,7 @@ msgstr "אין נתיב אל השרת"
msgctxt "MainWindow"
msgid "insufficient resources"
-msgstr "משאבים לא מספקים"
+msgstr "משאבים לא מספיקים"
msgctxt "MainWindow"
msgid "unknown"
@@ -1814,11 +1815,11 @@ msgstr "לא ידוע"
msgctxt "MainWindow"
msgid "Tor is not running"
-msgstr "Tor אינו רץ"
+msgstr "Tor אינו מורץ כעת"
msgctxt "MainWindow"
msgid "Tor is shutting down"
-msgstr "Tor בתהליך עצירה"
+msgstr "Tor בתהליך עצירה"
msgctxt "MainWindow"
msgid "Stop Tor Now"
@@ -1826,45 +1827,45 @@ msgstr "עצור את Tor עכשיו"
msgctxt "MainWindow"
msgid "Stop Tor"
-msgstr "עצור את Tor"
+msgstr "עצירת Tor"
msgctxt "MainWindow"
msgid "Starting the Tor software"
-msgstr "מפעיל את התוכנה"
+msgstr "מפעיל את Tor כעת"
msgctxt "MainWindow"
msgid "Starting Tor"
-msgstr "מפעיל את Tor"
+msgstr "מפעיל את Tor כעת"
msgctxt "MainWindow"
msgid "Error Starting Tor"
-msgstr "שגיאה בעת התחלת Tor"
+msgstr "שגיאה בעת הפעלת Tor"
msgctxt "MainWindow"
msgid ""
"Vidalia was unable to start Tor. Check your settings to ensure the correct "
"name and location of your Tor executable is specified."
-msgstr "Vidalia לא הצליח להפעיל את Tor. אנא בדוק את ההגדרות וודא שהשם ומיקום קובץ הרצת Tor הינו נכון."
+msgstr "Vidalia לא הצליח להפעיל את Tor. נא לבדוק את ההגדרות ולוודא שהשם ומיקום קובץ הרצת Tor שצוינו אכן תקפים."
msgctxt "MainWindow"
msgid "Connecting to Tor"
-msgstr "מתחבר אל Tor"
+msgstr "מתחבר אל Tor כעת"
msgctxt "MainWindow"
msgid "Connection Error"
-msgstr "שגיאה בחיבור"
+msgstr "שגיאת חיבור"
msgctxt "MainWindow"
msgid "Relaying is Enabled"
-msgstr "מימסור מופעל"
+msgstr "ממסור מאופשר כעת"
msgctxt "MainWindow"
msgid "Error Shutting Down"
-msgstr "שגיאה בכיבוי"
+msgstr "שגיאה במהלך כיבוי"
msgctxt "MainWindow"
msgid "Vidalia was unable to stop the Tor software."
-msgstr "Vidalia לא היתה מסוגלת לעצור את Tor."
+msgstr "Vidalia לא מסוגל היה לעצור את היישום Tor."
msgctxt "MainWindow"
msgid "Unexpected Error"
@@ -1876,13 +1877,13 @@ msgstr "מזדהה מול Tor."
msgctxt "MainWindow"
msgid "Cookie Authentication Required"
-msgstr "אימות \"עוגיה\" דרוש"
+msgstr "אימות \"עוגיה\" נדרש"
msgctxt "MainWindow"
msgid ""
"The Tor software requires Vidalia to send the contents of an authentication "
"cookie, but Vidalia was unable to find one."
-msgstr "תוכנת Tor דורשת ש-Vidalia תשלח עוגיית אימות, אך Vidalia לא היתה מסוגלת למצוא כזאת."
+msgstr "היישום Tor דורש מן Vidalia לשלוח את התכנים של עוגיית אימות, אך Vidalia לא מסוגל היה למצוא עוגייה שכזאת."
msgctxt "MainWindow"
msgid "Would you like to browse for the file 'control_auth_cookie' yourself?"
@@ -1890,21 +1891,21 @@ msgstr "האם ברצונך לציין את המיקום של הקובץ 'contro
msgctxt "MainWindow"
msgid "Data Directory"
-msgstr "תיקיית מידע"
+msgstr "מדור מידע"
msgctxt "MainWindow"
msgid "Control Cookie (control_auth_cookie)"
-msgstr "עוגיית שליטה (control_auth_cookie)"
+msgstr "עוגיית בקרה (control_auth_cookie)"
msgctxt "MainWindow"
msgid "Error Registering for Events"
-msgstr "שגיעה בעת רישום לאירועים"
+msgstr "שגיאה בעת רישום לאירועים"
msgctxt "MainWindow"
msgid ""
"Vidalia was unable to register for some events. Many of Vidalia's features "
"may be unavailable."
-msgstr "Vidalia לא היתה מסוגלת להרשם למספר אירועים. תכונות מסויימות של Vidalia יושבתו."
+msgstr "Vidalia לא מסוגל היה להירשם למספר אירועים. כתוצאה מכך תכונות רבות של Vidalia לא יהיו זמינות."
msgctxt "MainWindow"
msgid "Authentication Error"
@@ -1912,25 +1913,25 @@ msgstr "שגיאה בהזדהות"
msgctxt "MainWindow"
msgid "Vidalia was unable to authenticate to the Tor software. (%1)"
-msgstr "Vidalia לא היתה מסוגלת לאמת את תוכנת Tor. (%1)"
+msgstr "Vidalia לא מסוגל היה לאמת את Tor. (%1)"
msgctxt "MainWindow"
msgid "Please check your control port authentication settings."
-msgstr "אנא בדוק את הגדרות אימות פורט השליטה שלך."
+msgstr "נא לבדוק את הגדרות אימות בקרת היציאה שלך."
msgctxt "MainWindow"
msgid "Tor Update Available"
-msgstr "עידכון Tor זמין"
+msgstr "עדכון Tor זמין"
msgctxt "MainWindow"
msgid ""
"The currently installed version of Tor is out of date or no longer "
"recommended. Please visit the Tor website to download the latest version."
-msgstr "גירסת Tor הנוכחית מיושנת ולא מומלצת יותר לשימוש. אנא בקר באתר Tor על מנת להוריד את הגירסה האחרונה."
+msgstr "גרסת Tor הנוכחית מיושנת ולא מומלצת יותר לשימוש. אנא בקר באתר Tor על מנת להוריד את הגרסה האחרונה."
msgctxt "MainWindow"
msgid "Tor website: %1"
-msgstr "אתר Tor: %1"
+msgstr "אתר Tor: %1"
msgctxt "MainWindow"
msgid ""
@@ -1948,7 +1949,7 @@ msgstr "כשלון ב-Port Forwarding"
msgctxt "MainWindow"
msgid "Vidalia was unable to configure automatic port forwarding."
-msgstr "Vidalia לא היתה מסוגלת להתקין אוטומטית port forwarding."
+msgstr "Vidalia לא מסוגל היה להתקין port forwarding באופן אוטומטי."
msgctxt "MainWindow"
msgid "Vidalia Control Panel"
@@ -1960,67 +1961,67 @@ msgstr "מצב"
msgctxt "MainWindow"
msgid "Vidalia Shortcuts"
-msgstr "קיצורי-דרך של Tor"
+msgstr "קיצורי־דרך Vidalia"
msgctxt "MainWindow"
msgid "Setup Relaying"
-msgstr "הגדר מימסור\n"
+msgstr "הגדרת ממסור"
msgctxt "MainWindow"
msgid "Set up a relay and help the network grow"
-msgstr "הגדרת ממסר וסיוע לרשת לצמוח"
+msgstr "הגדרת ממסר וסיוע לצמיחת הרשת"
msgctxt "MainWindow"
msgid "View the Network"
-msgstr "הצג את הרשת"
+msgstr "הצגת הרשת"
msgctxt "MainWindow"
msgid "View a map of the Tor network"
-msgstr "הצג מפה של רשת Tor"
+msgstr "הצגת מפה של רשת Tor"
msgctxt "MainWindow"
msgid "Use a New Identity"
-msgstr "השתמש בזהות חדשה"
+msgstr "שימוש בזהות חדשה"
msgctxt "MainWindow"
msgid "Make subsequent connections appear new"
-msgstr "גרום לחיבורים הבאים להיראות חדשים"
+msgstr "גרום לחיבורים הבאים להיראות כחדשים"
msgctxt "MainWindow"
msgid "View recent bandwidth usage"
-msgstr "הצג את השימוש האחרון ברוחב הפס"
+msgstr "הצגת השימוש האחרון ברוחב הפס"
msgctxt "MainWindow"
msgid "View log message history"
-msgstr "הצג את ארכיון ההודעות"
+msgstr "הצגת היסטורית יומן ההודעות"
msgctxt "MainWindow"
msgid "View help documentation"
-msgstr "הצג מסמכי עזרה"
+msgstr "הצגת מסמכי עזרה"
msgctxt "MainWindow"
msgid "Configure Vidalia"
-msgstr "שנה את הגדרות Vidalia"
+msgstr "הגדרת Vidalia"
msgctxt "MainWindow"
msgid "View version and license information"
-msgstr "הצג מידע גירסה ורישיון"
+msgstr "הצגת מידע גרסה ורישיון"
msgctxt "MainWindow"
msgid "Exit Vidalia"
-msgstr "צא מ-Vidalia"
+msgstr "יציאה מן Vidalia"
msgctxt "MainWindow"
msgid "Show this window on startup"
-msgstr "הצג חלון זה בעת אתחול"
+msgstr "הצגת חלון זה בעת אתחול"
msgctxt "MainWindow"
msgid "Hide"
-msgstr "הסתר"
+msgstr "הסתרה"
msgctxt "MainWindow"
msgid "Hide this window"
-msgstr "הסתר חלון זה"
+msgstr "הסתרת חלון זה"
msgctxt "MainWindow"
msgid "Password Reset Failed"
@@ -2031,13 +2032,13 @@ msgid ""
"Vidalia tried to reset Tor's control password, but was not able to restart "
"the Tor software. Please check your Task Manager to ensure there are no "
"other Tor processes running."
-msgstr "Vidalia ניסתה לאתחל את סיסמת לוח הבקרה של Tor, אך לא היתה מסוגלת לאתחל את התוכנה. אנא וודא שאין עוד תהליכים פעילים של Tor."
+msgstr "Vidalia ניסה לאפס את סיסמת לוח הבקרה של Tor, אך לא מסוגל היה לאתחל את היישום Tor. נא לוודא באמצעות מנהל המשימות שלך שאין עוד תהליכים פעילים של Tor."
msgctxt "MainWindow"
msgid ""
"The currently installed version of Tor is out of date or no longer "
"recommended."
-msgstr "גירסת Tor הנוכחית מיושנת ולא מומלצת יותר לשימוש. אנא בקר באתר Tor על מנת להוריד את הגירסה האחרונה."
+msgstr "גרסת Tor שמותקנת כעת הינה מיושנת ולא מומלצת עוד לשימוש."
msgctxt "MainWindow"
msgid ""
@@ -2046,13 +2047,13 @@ msgstr "האם ברצונך לבדוק אם חבילות חדשות יותר ז
msgctxt "MainWindow"
msgid "Potentially Unsafe Connection"
-msgstr "חיבור מסוכן פוטנציאלית"
+msgstr "חיבור לא בטוח פוטנציאלית"
msgctxt "MainWindow"
msgid ""
"Tor has automatically closed your connection in order to protect your "
"anonymity."
-msgstr "Tor סגר אוטומטית את החיבור על מנת לשמור על האנונימיות שלך."
+msgstr "Tor סגר אוטומטית את החיבור על מנת לשמור על האלמוניות שלך."
msgctxt "MainWindow"
msgid "Update Failed"
@@ -2060,13 +2061,13 @@ msgstr "עידכון Tor זמין"
msgctxt "MainWindow"
msgid "Your software is up to date"
-msgstr "התוכנה שבידך מעודכנת"
+msgstr "התוכנה שברשותך הינה מעודכנת"
msgctxt "MainWindow"
msgid ""
"There are no new Tor software packages available for your computer at this "
"time."
-msgstr "אין חבילות תוכנה חדשות שזמינות למחשבך כרגע."
+msgstr "לא קיימות חבילות תוכנה חדשות שזמינות למחשבך כרגע."
msgctxt "MainWindow"
msgid "Installation Failed"
@@ -2074,7 +2075,7 @@ msgstr "ההתקנה נכשלה"
msgctxt "MainWindow"
msgid "Vidalia was unable to install your software updates."
-msgstr "Vidalia לא הצליח להתקין את העידכונים."
+msgstr "Vidalia לא הצליח להתקין את עדכוני התוכנה."
msgctxt "MainWindow"
msgid "The following error occurred:"
@@ -2085,35 +2086,35 @@ msgid ""
"Anything sent over this connection could be monitored. Please check your "
"application's configuration and use only encrypted protocols, such as SSL, "
"if possible."
-msgstr "כל מה שנשלח דרך חיבור זה יכול להיות והיה מועקב. אנא בדוק את קונפיגורציית התוכניות שלך והשתמש בפרוטוקולים מוצפנים, כגון SSL, אם מתאפשר."
+msgstr "כל מה שנשלח דרך חיבור זה עלול להימצא תחת האזנה. נא לבדוק את הגדרת היישום שלך בניסיון לעשות שימוש בפרוטוקולים מוצפנים בלבד, כגון SSL, במידה וניתן."
msgctxt "MainWindow"
msgid "Bootstrapping torrc from %1 to %2"
-msgstr ""
+msgstr "מחלץ כעת את torrc מן %1 אל %2"
msgctxt "MainWindow"
msgid "(probably Telnet)"
-msgstr "(יתכן (Telnet"
+msgstr "(ייתכן Telnet)"
msgctxt "MainWindow"
msgid "(probably an email client)"
-msgstr "(כנראה לקוח אימייל)"
+msgstr "(ייתכן לקוח דוא״ל)"
msgctxt "MainWindow"
msgid ""
"One of your applications %1 appears to be making a potentially unencrypted "
"and unsafe connection to port %2."
-msgstr ""
+msgstr "נראה שיישום מן יישומך %1 מקיים באופן פוטנציאלי חיבור לא מוצפן ולא בטוח אל יציאה %2."
msgctxt "MainWindow"
msgid "failed (%1)"
-msgstr "נכשל (%1)"
+msgstr "כשל (%1)"
msgctxt "MainWindow"
msgid ""
"Your relay is shutting down.\n"
"Click 'Stop' again to stop your relay now."
-msgstr "הממדר שלך מכובה כעת.\nלחץ \"עצור\" על מנת לעצור אותו מיידית."
+msgstr "ממסרך מתכבה כעת.\nניתן ללחוץ על 'עצור' כדי לעצורו כעת."
msgctxt "MainWindow"
msgid ""
@@ -2135,30 +2136,30 @@ msgid ""
"You are currently running a relay. Terminating your relay will interrupt any open connections from clients.\n"
"\n"
"Would you like to shutdown gracefully and give clients time to find a new relay?"
-msgstr "אתה מריץ כעת ממסר. עצירת הממסר יפגע בתקשורת של קליינטים דרכך.\n\nהאם ברצונך לעצור את הממסר בהדרגה, ולאפשר לקליינטים לאתר נתיב שונה?"
+msgstr "קיים ממסר פעיל כעת. עצירת הממסר תפריע לחיבורים של משתמשים המחוברים דרכך.\n\nהאם ברצונך לעצור את הממסר בהדרגתיות, ובכך לאפשר למשתמשים המחוברים זה עתה לאתר ממסר אחר?"
msgctxt "MainWindow"
msgid ""
"Vidalia detected that the Tor software exited unexpectedly.\n"
"\n"
"Please check the message log for recent warning or error messages."
-msgstr "Vidalia זיהה כי תוכנת Tor נעצרה באופן פתאומי.\n\nאנא בדוק את ארכיון ההודעות למידע נוסף."
+msgstr "Vidalia הבחין כי היישום Tor נעצר באופן פתאומי.\n\nנא לבדוק את יומן ההודעות עבור הודעות אזהרה או שגיאה."
msgctxt "MessageLog"
msgid "Error Setting Filter"
-msgstr "שגיאה בעת קביעת סינון"
+msgstr "שגיאה בהגדרת סינון"
msgctxt "MessageLog"
msgid "Vidalia was unable to register for Tor's log events."
-msgstr "Vidalia לא הצליח להרשם ליומן האירועים של Tor."
+msgstr "Vidalia לא הצליח להירשם ליומן האירועים של Tor."
msgctxt "MessageLog"
msgid "Error Opening Log File"
-msgstr "שגיעה בעת פתיחת קובץ יומן"
+msgstr "שגיאה בעת פתיחת קובץ יומן"
msgctxt "MessageLog"
msgid "Vidalia was unable to open the specified log file."
-msgstr "Vidalia לא הצליח לפתוח את קובץ היומן הנבחר."
+msgstr "Vidalia לא הצליח לפתוח את קובץ היומן שצוין."
msgctxt "MessageLog"
msgid "Log Filename Required"
@@ -2170,15 +2171,15 @@ msgstr "עליך להכניס שם קובץ על מנת לשמור הודעות
msgctxt "MessageLog"
msgid "Select Log File"
-msgstr "בחר קובץ יומן"
+msgstr "בחירת קובץ יומן"
msgctxt "MessageLog"
msgid "Save Log Messages"
-msgstr "שמור הודעות יומן"
+msgstr "שמירת הודעות יומן"
msgctxt "MessageLog"
msgid "Text Files (*.txt)"
-msgstr "קבצי טקסט (*.txt)"
+msgstr "קבצי טקסט (*.txt)"
msgctxt "MessageLog"
msgid "Vidalia"
@@ -2186,11 +2187,11 @@ msgstr "Vidalia"
msgctxt "MessageLog"
msgid "Find in Message Log"
-msgstr "חפש ביומן הודעות"
+msgstr "חיפוש ביומן הודעות"
msgctxt "MessageLog"
msgid "Find:"
-msgstr "חפש:"
+msgstr "חיפוש:"
msgctxt "MessageLog"
msgid "Not Found"
@@ -2218,15 +2219,15 @@ msgstr "גודל היסטוריה..."
msgctxt "MessageLog"
msgid "Set maximum number of messages to display"
-msgstr "קבע את מספר ההודעות המירבי להצגה"
+msgstr "הגדרת מספר ההודעות המירבי להצגה"
msgctxt "MessageLog"
msgid "Clear"
-msgstr "נקה"
+msgstr "איפוס"
msgctxt "MessageLog"
msgid "Clear all messages from the Message Log (Ctrl+E)"
-msgstr "נקה את כל ההודעות מיומן ההודעות (Ctrl+E)"
+msgstr "מחיקת כל ההודעות מיומן ההודעות (Ctrl+E)"
msgctxt "MessageLog"
msgid "Ctrl+E"
@@ -2234,11 +2235,11 @@ msgstr "(Ctrl+E)"
msgctxt "MessageLog"
msgid "Copy"
-msgstr "העתק"
+msgstr "העתקה"
msgctxt "MessageLog"
msgid "Copy the selected messages to the clipboard (Ctrl+C)"
-msgstr "העתק את ההודעות הנבחרות ללוח-העריכה (Ctrl+C)"
+msgstr "העתקת ההודעות הנבחרות אל לוח־הגזירה (Ctrl+C)"
msgctxt "MessageLog"
msgid "Ctrl+C"
@@ -2250,7 +2251,7 @@ msgstr "בחר הכל"
msgctxt "MessageLog"
msgid "Select all messages (Ctrl+A)"
-msgstr "בחר את כל ההודעות (Ctrl+A)"
+msgstr "בחירת כל ההודעות (Ctrl+A)"
msgctxt "MessageLog"
msgid "Ctrl+A"
@@ -2262,15 +2263,15 @@ msgstr "שמור הכל"
msgctxt "MessageLog"
msgid "Save all messages to a file"
-msgstr "שמור את כל ההודעות לקובץ"
+msgstr "שמירת כל ההודעות אל קובץ"
msgctxt "MessageLog"
msgid "Save Selected"
-msgstr "שמור הודעות נבחרות"
+msgstr "שמירת הודעות הנבחרות"
msgctxt "MessageLog"
msgid "Save selected messages to a file"
-msgstr "שמור את ההודעות הנבחרות לקובץ"
+msgstr "שמירת הודעות נבחרות אל קובץ"
msgctxt "MessageLog"
msgid "Settings"
@@ -2278,7 +2279,7 @@ msgstr "הגדרות"
msgctxt "MessageLog"
msgid "Adjust Message Log Settings"
-msgstr "שנה הגדרות יומן הודעות"
+msgstr "התאמת הגדרות יומן הודעות"
msgctxt "MessageLog"
msgid "Ctrl+T"
@@ -2290,7 +2291,7 @@ msgstr "עזרה"
msgctxt "MessageLog"
msgid "Show the help browser"
-msgstr "הצג את דפדפן העזרה"
+msgstr "הצגת דפדפן העזרה"
msgctxt "MessageLog"
msgid "F1"
@@ -2298,11 +2299,11 @@ msgstr "F1"
msgctxt "MessageLog"
msgid "Close"
-msgstr "סגור"
+msgstr "סגירה"
msgctxt "MessageLog"
msgid "Close the Message Log"
-msgstr "סגור את יומן ההודעות"
+msgstr "סגירת יומן ההודעות"
msgctxt "MessageLog"
msgid "Esc"
@@ -2310,11 +2311,11 @@ msgstr "Esc"
msgctxt "MessageLog"
msgid "Find"
-msgstr "מצא"
+msgstr "מציאה"
msgctxt "MessageLog"
msgid "Find all messages containing the search text (Ctrl+F)"
-msgstr "מצא את כל ההודעות המכילות את טקסט החיפוש (Ctrl+F)"
+msgstr "מציאת את כל ההודעות המכילות את טקסט החיפוש (Ctrl+F)"
msgctxt "MessageLog"
msgid "Ctrl+F"
@@ -2334,15 +2335,15 @@ msgstr "הודעה"
msgctxt "MessageLog"
msgid "Saves the current Message Log settings"
-msgstr "שומר את ההגדרות הנוכחיות של יומן ההודעות"
+msgstr "שמירת הגדרות יומן ההודעות הנוכחיות"
msgctxt "MessageLog"
msgid "Save Settings"
-msgstr "שמור הגדרות"
+msgstr "שמירת הגדרות"
msgctxt "MessageLog"
msgid "Cancels changes made to settings"
-msgstr "מבטל את השינויים שנעשו"
+msgstr "ביטול השינויים שנעשו להגדרות"
msgctxt "MessageLog"
msgid "Cancel"
@@ -2354,23 +2355,23 @@ msgstr "מסנן הודעות"
msgctxt "MessageLog"
msgid "Error"
-msgstr "שגיעה"
+msgstr "Error"
msgctxt "MessageLog"
msgid "Warning"
-msgstr "אזהרה"
+msgstr "Warning"
msgctxt "MessageLog"
msgid "Notice"
-msgstr "שים-לב"
+msgstr "Notice"
msgctxt "MessageLog"
msgid "Info"
-msgstr "מידע"
+msgstr "Info"
msgctxt "MessageLog"
msgid "Debug"
-msgstr "דיבאג"
+msgstr "Debug"
msgctxt "MessageLog"
msgid "Message Log History"
@@ -2386,15 +2387,15 @@ msgstr "הודעות"
msgctxt "MessageLog"
msgid "Browse"
-msgstr "חפש"
+msgstr "עיון"
msgctxt "MessageLog"
msgid "Enable automatically saving all new log messages to a file"
-msgstr "אפשר שמירה אוטומטית של כל ההודעות החדשות לקובץ"
+msgstr "אפשור שמירה אוטומטית של כל ההודעות החדשות אל קובץ"
msgctxt "MessageLog"
msgid "Automatically save new log messages to a file"
-msgstr "שמוראוטומטית הודעות חדשות לקובץ"
+msgstr "שמירה אוטומטית של הודעות יומן חדשות לקובץ"
msgctxt "MessageLog"
msgid "Basic"
@@ -2402,7 +2403,7 @@ msgstr "בסיסי"
msgctxt "MessageLog"
msgid "Tor Status"
-msgstr "סטטוס Tor"
+msgstr "מצב Tor"
msgctxt "MessageLog"
msgid "Advanced"
@@ -2410,19 +2411,19 @@ msgstr "מתקדם"
msgctxt "MessageLog"
msgid "Always Save New Log Messages"
-msgstr "שמור תמיד הודעות יומן חדשות"
+msgstr "שמירה תמידית של הודעות יומן חדשות"
msgctxt "MessageLog"
msgid ""
"Messages that appear when something has \n"
"gone very wrong and Tor cannot proceed."
-msgstr "הודעות המופיעות כאשר משהו\nהשתבש מאוד ו-Tor לא יכול להמשיך."
+msgstr "הודעות המופיעות כאשר משהו\nהשתבש מאוד ואין ביכולתו של Tor להמשיך."
msgctxt "MessageLog"
msgid ""
"Messages that only appear when \n"
"something has gone wrong with Tor."
-msgstr "הודעות המופיעות כאשר משהו\nהשתבש ב-Tor."
+msgstr "הודעות המופיעות כאשר משהו\nהשתבש עם Tor."
msgctxt "MessageLog"
msgid ""
@@ -2430,26 +2431,26 @@ msgid ""
"during normal Tor operation and are \n"
"not considered errors, but you may \n"
"care about."
-msgstr "הודעות המופיעות לעיתים רחוקות\nבמהלך פעילות רגילה של Tor\nואינן נחשבות לתקלות, אך יתכן\nשיעניינו אותך."
+msgstr "הודעות המופיעות לעיתים רחוקות\nבמהלך פעילות שגרתית של Tor\nואינן נחשבות לתקלות, אולם ייתכן\nשאלו יעניינו אותך."
msgctxt "MessageLog"
msgid ""
"Messages that appear frequently \n"
"during normal Tor operation."
-msgstr "הודעות שמופיעות לעתים קרובות במהלך פעילות רגילה של Tor."
+msgstr "הודעות המופיעות לעתים קרובות במהלך פעילות שגרתית של Tor."
msgctxt "MessageLog"
msgid ""
"Hyper-verbose messages primarily of \n"
"interest to Tor developers."
-msgstr "הודעות מגוונות המיועדות בעיקר למפתחים."
+msgstr "הודעות היפר-מגובבות המיועדות \nבעיקר אל המפתחים של Tor."
msgctxt "MessageLog"
msgid ""
"Cannot write file %1\n"
"\n"
"%2."
-msgstr "לא יכול לכתוב את הקובץ %1\n\n%2."
+msgstr "לא ניתן לכתוב את הקובץ %1\n\n%2."
msgctxt "NetViewer"
msgid "Tor Network Map"
@@ -2457,11 +2458,11 @@ msgstr "מפת רשת Tor"
msgctxt "NetViewer"
msgid "Refresh"
-msgstr "רענן"
+msgstr "רענון"
msgctxt "NetViewer"
msgid "Refresh the list of Tor relays and connections"
-msgstr "עדכן את רשימת הנתבים והחיבורים של Tor"
+msgstr "עדכון רשימת הממסרים והחיבורים של Tor"
msgctxt "NetViewer"
msgid "Ctrl+R"
@@ -2473,11 +2474,11 @@ msgstr "עזרה"
msgctxt "NetViewer"
msgid "Show the network map help"
-msgstr "הצג עזרה על מפת הרשת"
+msgstr "הצגת העזרה של מפת רשת"
msgctxt "NetViewer"
msgid "Show network map help"
-msgstr "הצג עזרה על מפת רשת"
+msgstr "הצגת עזרת מפת רשת"
msgctxt "NetViewer"
msgid "F1"
@@ -2485,11 +2486,11 @@ msgstr "F1"
msgctxt "NetViewer"
msgid "Close"
-msgstr "סגור"
+msgstr "סגירה"
msgctxt "NetViewer"
msgid "Close the network map"
-msgstr "סגור מפת רשת"
+msgstr "סגירת מפת הרשת"
msgctxt "NetViewer"
msgid "Esc"
@@ -2497,11 +2498,11 @@ msgstr "Esc"
msgctxt "NetViewer"
msgid "Zoom In"
-msgstr "קרב"
+msgstr "הקרבה"
msgctxt "NetViewer"
msgid "Zoom in on the network map"
-msgstr "קרב את מפת הרשת"
+msgstr "הקרבת מפת הרשת"
msgctxt "NetViewer"
msgid "+"
@@ -2509,11 +2510,11 @@ msgstr "+"
msgctxt "NetViewer"
msgid "Zoom Out"
-msgstr "הרחק"
+msgstr "הרחקה"
msgctxt "NetViewer"
msgid "Zoom out on the network map"
-msgstr "הרחק את מפת הרשת"
+msgstr "הרחקת מפת הרשת"
msgctxt "NetViewer"
msgid "-"
@@ -2521,11 +2522,11 @@ msgstr "-"
msgctxt "NetViewer"
msgid "Zoom To Fit"
-msgstr "הצג הכל"
+msgstr "תצוגה שלמה"
msgctxt "NetViewer"
msgid "Zooms to fit all currently displayed circuits"
-msgstr "קרב להצגת כל המעגלים המוצגים"
+msgstr "התחמה לכל המעגלים המוצגים"
msgctxt "NetViewer"
msgid "Ctrl+Z"
@@ -2533,11 +2534,11 @@ msgstr "Ctrl+Z"
msgctxt "NetViewer"
msgid "Relay Not Found"
-msgstr "קובץ לא נמצא"
+msgstr "ממסר לא נמצא"
msgctxt "NetViewer"
msgid "No details on the selected relay are available."
-msgstr "אין פרטים זמינים על החיבור הנבחר"
+msgstr "אין פרטים זמינים על הממסר הנבחר"
msgctxt "NetViewer"
msgid "Unknown"
@@ -2545,11 +2546,11 @@ msgstr "לא ידוע"
msgctxt "NetViewer"
msgid "Full Screen"
-msgstr "מסך מלא"
+msgstr "מסך־מלא"
msgctxt "NetViewer"
msgid "View the network map as a full screen window"
-msgstr "הצג את מפת הרשת במסך מלא"
+msgstr "הצגת מפת הרשת במסך־מלא"
msgctxt "NetViewer"
msgid "Ctrl+F"
@@ -2557,31 +2558,31 @@ msgstr "Ctrl+F"
msgctxt "NetworkPage"
msgid "Copy (Ctrl+C)"
-msgstr "העתק (Ctrl+C)"
+msgstr "העתקה (Ctrl+C)"
msgctxt "NetworkPage"
msgid ""
"You must specify both an IP address or hostname and a port number to "
"configure Tor to use a proxy to access the Internet."
-msgstr "עליך לציין כתובת IP או שם ומספר פורט על מנת להגדיר את Tor לשימוש בשרת פרוקסי."
+msgstr "עליך לציין כתובת IP או שם מארח וגם מספר יציאה בכדי להגדיר את Tor לשימוש בשרת פרוקסי כדי לעשות שימוש בפרוקסי כדי להיכנס אל האינטרנט."
msgctxt "NetworkPage"
msgid ""
"You must specify one or more ports to which your firewall allows you to "
"connect."
-msgstr "עליך לציין פורט אחד או יותר שחומת-האש שלך מאפשרת לך להתחבר אליהם."
+msgstr "עליך לציין יציאה אחת או יותר שחומת האש שלך מרשה לך להתחבר אליהן."
msgctxt "NetworkPage"
msgid "'%1' is not a valid port number."
-msgstr "'%1' אינו מספר פורט חוקי."
+msgstr "'%1' אינו מספר יציאה תקף."
msgctxt "NetworkPage"
msgid "Check if your local network requires a proxy to access the Internet"
-msgstr "בודק אם הרשת המקומית זקוקה לפרוקסי על מנת לגשת לאינטרנט"
+msgstr "בודק אם הרשת המקומית זקוקה לפרוקסי על מנת לגשת אל האינטרנט"
msgctxt "NetworkPage"
msgid "I use a proxy to access the Internet"
-msgstr "אני משתמש בשרת פרוקסי על מנת לגשת לאינטרנט"
+msgstr "אני משתמש בפרוקסי בכדי לגשת אל האינטרנט"
msgctxt "NetworkPage"
msgid "Proxy Settings"
@@ -2597,15 +2598,15 @@ msgstr "סיסמה:"
msgctxt "NetworkPage"
msgid "Port:"
-msgstr "פורט:"
+msgstr "יציאה:"
msgctxt "NetworkPage"
msgid "Check to only connect to relays using ports allowed by your firewall"
-msgstr "ברצוני לגשת באמצעות פורט מסויים שמאושר על ידי חומת האש שלי"
+msgstr "ברצוני להתחבר אל ממסרים באמצעות יציאות מסוימות שמורשות על ידי חומת האש שלי"
msgctxt "NetworkPage"
msgid "My firewall only lets me connect to certain ports"
-msgstr "חומת האש שלי מאפשרת לי להתחבר לפורטים מסוימים"
+msgstr "חומת האש שלי מאפשרת לי להתחבר אל יציאות מסוימות"
msgctxt "NetworkPage"
msgid "Firewall Settings"
@@ -2613,7 +2614,7 @@ msgstr "הגדרות חומת אש"
msgctxt "NetworkPage"
msgid "Allowed Ports:"
-msgstr "פורטים מורשים:"
+msgstr "יציאות מורשות:"
msgctxt "NetworkPage"
msgid "80, 443"
@@ -2623,7 +2624,7 @@ msgctxt "NetworkPage"
msgid ""
"Check to encrypt directory requests and, optionally, use bridge relays to "
"access the Tor network"
-msgstr "סמן כדי להצפין בקשות לספרייה ו(אפשרי) ולהשתמש בממסר כדי לגשת לרשת Tor"
+msgstr "בחר/י באפשרות זו כדי להצפין בקשות מדור וגם, אפשרי, לעשות שימוש בגשר ממסרים כדי לגשת אל רשת Tor"
msgctxt "NetworkPage"
msgid "My ISP blocks connections to the Tor network"
@@ -2635,15 +2636,15 @@ msgstr "הגדרות גשר"
msgctxt "NetworkPage"
msgid "Add a Bridge:"
-msgstr "הוסף גשר:"
+msgstr "הוספת גשר:"
msgctxt "NetworkPage"
msgid "Remove the selected bridges from the list"
-msgstr "הסר את הגשרים הנבחרים מהרשימה"
+msgstr "הסרת הגשרים הנבחרים מן הרשימה"
msgctxt "NetworkPage"
msgid "Copy the selected bridges to the clipboard"
-msgstr "העתק את הגשרים הנבחרים ללוח-העריכה"
+msgstr "העתקת הגשרים הנבחרים אל לוח-הגזירה"
msgctxt "NetworkPage"
msgid "Find Bridges Now"
@@ -2651,21 +2652,21 @@ msgstr "חפש גשר עכשיו"
msgctxt "NetworkPage"
msgid "<a href=\"bridges.finding\">How else can I find bridges?</a>"
-msgstr "<a href=\"bridges.finding\">איך עוד אני יכול למצוא גשרים?</a>"
+msgstr "<a href=\"bridges.finding\">איך עוד ביכולתי למצוא גשרים?</a>"
msgctxt "NetworkPage"
msgid "<a href=\"bridges.finding\">How can I find bridges?</a>"
-msgstr "<a href=\"bridges.finding\">איך אני יכול למצוא גשרים?</a>"
+msgstr "<a href=\"bridges.finding\">כיצד ביכולתי למצוא גשרים?</a>"
msgctxt "NetworkPage"
msgid ""
"No new bridges are currently available. You can either wait a while and try "
"again, or try another method of finding new bridges."
-msgstr "גשרים חדשים אינם זמינים כעת. אתה יכול לחכות ולנסות שוב, או לנסות דרך אחרת לאיתור גשרים חדשים."
+msgstr "גשרים חדשים אינם זמינים כעת. ניתן להמתין לזמן מה ולנסות שוב, או לנסות דרך אחרת לאיתור גשרים חדשים."
msgctxt "NetworkPage"
msgid "Click Help to see other methods of finding new bridges."
-msgstr "לחץ על \"עזרה\" לקבלת מידע נוסף על דרכים שונות למציאת גשרים חדשים."
+msgstr "לחצו על \"עזרה\" לקבלת מידע נוסף על דרכים שונות למציאת גשרים חדשים."
msgctxt "NetworkPage"
msgid "Address:"
@@ -2677,7 +2678,7 @@ msgstr "סוג:"
msgctxt "NetworkPage"
msgid "You must select the proxy type."
-msgstr "אתה חייב לבחור את סוג הפרוקסי."
+msgstr "עליך לבחור את סוג הפרוקסי."
msgctxt "NetworkPage"
msgid "SOCKS 4"
@@ -2685,7 +2686,7 @@ msgstr "SOCKS 4"
msgctxt "NetworkPage"
msgid "SOCKS 5"
-msgstr ""
+msgstr "SOCKS 5"
msgctxt "NetworkPage"
msgid "HTTP / HTTPS"
@@ -2713,7 +2714,7 @@ msgstr "ישן"
msgctxt "RouterDescriptor"
msgid "Offline"
-msgstr "לא מחובר"
+msgstr "לא מקוון"
msgctxt "RouterDescriptorView"
msgid "Location:"
@@ -2729,11 +2730,11 @@ msgstr "מערכת:"
msgctxt "RouterDescriptorView"
msgid "Bandwidth:"
-msgstr "רוחב-פס:"
+msgstr "רוחב־פס:"
msgctxt "RouterDescriptorView"
msgid "Uptime:"
-msgstr "זמן:"
+msgstr "זמן פעילות:"
msgctxt "RouterDescriptorView"
msgid "Last Updated:"
@@ -2741,7 +2742,7 @@ msgstr "עודכן לאחרונה:"
msgctxt "RouterDescriptorView"
msgid "Copy"
-msgstr "העתק"
+msgstr "העתקה"
msgctxt "RouterInfoDialog"
msgid "Hibernating"
@@ -2749,11 +2750,11 @@ msgstr "ישן"
msgctxt "RouterInfoDialog"
msgid "Online"
-msgstr "מחובר"
+msgstr "מקוון"
msgctxt "RouterInfoDialog"
msgid "Offline"
-msgstr "לא מחובר"
+msgstr "לא מקוון"
msgctxt "RouterInfoDialog"
msgid "Unknown"
@@ -2761,7 +2762,7 @@ msgstr "לא ידוע"
msgctxt "RouterInfoDialog"
msgid "Relay Details"
-msgstr "פרטי חיבור"
+msgstr "פרטי ממסר"
msgctxt "RouterInfoDialog"
msgid "Summary"
@@ -2789,7 +2790,7 @@ msgstr "מערכת:"
msgctxt "RouterInfoDialog"
msgid "Bandwidth:"
-msgstr "רוחב-פס:"
+msgstr "רוחב־פס:"
msgctxt "RouterInfoDialog"
msgid "Uptime:"
@@ -2805,11 +2806,11 @@ msgstr "עודכן לאחרונה:"
msgctxt "RouterInfoDialog"
msgid "Descriptor"
-msgstr "תיאור"
+msgstr "מתאר"
msgctxt "RouterListItem"
msgid "Offline"
-msgstr "לא מחובר"
+msgstr "לא מקוון"
msgctxt "RouterListItem"
msgid "Hibernating"
@@ -2817,23 +2818,23 @@ msgstr "ישן"
msgctxt "RouterListItem"
msgid "%1 KB/s"
-msgstr "%1 KB/s"
+msgstr "%1 ק״ב/ש"
msgctxt "RouterListWidget"
msgid "Relay"
-msgstr "מימסר"
+msgstr "ממסור"
msgctxt "RouterListWidget"
msgid "Zoom to Relay"
-msgstr "קרב למימסר"
+msgstr "התקרבות אל ממסר"
msgctxt "RouterListWidget"
msgid "%1 relays online"
-msgstr "%1 ממסר מחובר"
+msgstr "%1 ממסרים ממקוונים"
msgctxt "RouterListWidget"
msgid "Copy"
-msgstr "העתק"
+msgstr "העתקה"
msgctxt "RouterListWidget"
msgid "Nickname"
@@ -2845,27 +2846,27 @@ msgstr "טביעת אצבע"
msgctxt "ServerPage"
msgid "Bridge Support Unavailable"
-msgstr "תמיכה בגשרים לא זמינה"
+msgstr "תמיכת גשרים לא זמינה"
msgctxt "ServerPage"
msgid ""
"You have configured Tor to act as a bridge relay for censored users, but "
"your version of Tor does not support bridges."
-msgstr "הגדרת את Tor לשמש בגשר למשתמשים מצונזרים, אבל גירסת Tor שלך לא תומכת בגשרים."
+msgstr "הגדרת Tor לשמש כגשר ממסר עבור משתמשים מצונזרים, ברם גרסת היישום Tor שברשותך לא תומכת בגשרים."
msgctxt "ServerPage"
msgid ""
"Please upgrade your Tor software or configure Tor to act as a normal Tor "
"relay."
-msgstr "אנא עדכן את Tor או הגדרת את Tor לשמש כמימסר Tor רגיל."
+msgstr "נא לעדכן את Tor או להגדיר את Tor לשמש כממסר Tor רגיל."
msgctxt "ServerPage"
msgid "Your bridge relay is not running."
-msgstr "הגשר שלך לא רץ."
+msgstr "גשר ממסרך אינו מורץ כעת."
msgctxt "ServerPage"
msgid "You must specify at least a relay nickname and port."
-msgstr "עליך לציין לפחות כינוי ופורט מימסר."
+msgstr "עליך לציין לפחות כינוי ויציאת ממסור."
msgctxt "ServerPage"
msgid "Run as a client only"
@@ -2873,31 +2874,31 @@ msgstr "הפעל כלקוח בלבד"
msgctxt "ServerPage"
msgid "Relay Port:"
-msgstr "פורט מימסר:"
+msgstr "יציאת ממסר:"
msgctxt "ServerPage"
msgid "Enable to mirror the relay directory"
-msgstr "Enable to mirror the relay directory"
+msgstr "אפשור הכפלת מדור הממסר"
msgctxt "ServerPage"
msgid "Attempt to automatically configure port forwarding"
-msgstr "נסה להגדר אוטומטית "
+msgstr "נסה להגדיר port forwarding באופן אוטומטי"
msgctxt "ServerPage"
msgid "Test"
-msgstr "ניסיון"
+msgstr "בדיקה"
msgctxt "ServerPage"
msgid "Show help topic on port forwarding"
-msgstr "הצג נושאי עזרה אודות port forwarding"
+msgstr "הצגת נושאי עזרה אודות port forwarding"
msgctxt "ServerPage"
msgid "Directory Port:"
-msgstr "פורט ספרייה:"
+msgstr "יציאת מדור:"
msgctxt "ServerPage"
msgid "Directory Port Number"
-msgstr "מספר פורט ספרייה"
+msgstr "מספר יציאת מדור"
msgctxt "ServerPage"
msgid "Contact Info:"
@@ -2905,11 +2906,11 @@ msgstr "מידע התקשרות:"
msgctxt "ServerPage"
msgid "Name of your relay"
-msgstr "השם של המימשר שלך"
+msgstr "שם ממסרך"
msgctxt "ServerPage"
msgid "Port on which users and other relays can communicate with your relay"
-msgstr "הפורט שבו משתמשים ומימסרים נוספים יוכלו לתקשר עם המימסר שלך"
+msgstr "יציאה שבאמצעותה משתמשים וממסרים אחרים יוכלו לתקשר עם ממסרך"
msgctxt "ServerPage"
msgid "Nickname:"
@@ -2923,7 +2924,7 @@ msgctxt "ServerPage"
msgid ""
"For Internet connections with fast download speed but slow upload, please "
"list your upload speed here."
-msgstr "לחיבורי אינטרנט עם קצב הורדה מהיר אבל קצב העלאה איטי, אנא הכנס את קצב ההעלאה שלך כאן."
+msgstr "לחיבורי אינטרנט עם קצב הורדה מהיר אבל קצב העלאה איטי, נא למנות את קצב ההעלאה שלך כאן."
msgctxt "ServerPage"
msgid "Cable/DSL 256 Kbps"
@@ -2939,11 +2940,11 @@ msgstr "כבלים/DSL 768 Kbps"
msgctxt "ServerPage"
msgid "T1/Cable/DSL 1.5 Mbps"
-msgstr "T1/כבלים/DSL 1.5 Mbps"
+msgstr "T1/כבלים/DSL 1.5 Mbps"
msgctxt "ServerPage"
msgid "> 1.5 Mbps"
-msgstr "יותר מ 1.5 Mbps"
+msgstr "מעל 1.5 Mbps"
msgctxt "ServerPage"
msgid "Custom"
@@ -2951,11 +2952,11 @@ msgstr "נתון אישית"
msgctxt "ServerPage"
msgid "Select the entry that most closely resembles your Internet connection"
-msgstr "בחר את הנתון הדומה ביותר לחיבור האינטרנט שלך"
+msgstr "בחירת הרשומה הדומה ביותר לחיבור האינטרנט שלך"
msgctxt "ServerPage"
msgid "Show help topic on bandwidth rate limits"
-msgstr "הצג עזרה בנוגע להגבלת רוחב פס"
+msgstr "הצגת עזרה בנוגע להגבלות שיעור רוחב פס"
msgctxt "ServerPage"
msgid "Average Rate"
@@ -2963,25 +2964,25 @@ msgstr "קצב ממוצע"
msgctxt "ServerPage"
msgid "Long-term average bandwidth limit"
-msgstr "הגבלת רוחב-פס ממוצע לטווח ארוך"
+msgstr "הגבלת רוחב פס ממוצע לטווח ארוך"
msgctxt "ServerPage"
msgid "KB/s"
-msgstr "%1 KB/s"
+msgstr "ק״ב/ש"
msgctxt "ServerPage"
msgid "Maximum Rate"
-msgstr "קצב מירבי"
+msgstr "קצב מרבי"
msgctxt "ServerPage"
msgid "Peak bandwidth rate limit"
-msgstr "הגבלת רוחב פס מירבי"
+msgstr "הגבלת שיעור רוחב פס מרבי"
msgctxt "ServerPage"
msgid ""
"Your maximum bandwidth rate must be greater than or equal to your average "
"bandwidth rate. Both values must be at least 20 KB/s."
-msgstr "רוחב הפס המירבי חייב להיות גדול או שווה לרוחב הפס הממוצע. על שני הערכים להיוצ לפחות 20 KB/s."
+msgstr "רוחב הפס המרבי חייב להיות גדול יותר מאשר או שווה לרוחב הפס הממוצע. על שני הערכים להיות לפחות 20 ק״ב/ש."
msgctxt "ServerPage"
msgid "Bandwidth Limits"
@@ -2989,7 +2990,7 @@ msgstr "הגבלות רוחב פס"
msgctxt "ServerPage"
msgid "Ports 6660 - 6669 and 6697"
-msgstr "פורטים 6660-6669 ו 6697"
+msgstr "יציאות 6660 - 6669 וגם 6697"
msgctxt "ServerPage"
msgid "Internet Relay Chat (IRC)"
@@ -2997,23 +2998,23 @@ msgstr "Internet Relay Chat (IRC)"
msgctxt "ServerPage"
msgid "Ports 110, 143, 993 and 995"
-msgstr "פורטים 110, 143, 993 ו 995"
+msgstr "יציאות 110, 143, 993 וגם 995"
msgctxt "ServerPage"
msgid "Retrieve Mail (POP, IMAP)"
-msgstr "קבלת דוא\"ל (POP, IMAP)"
+msgstr "קבלת דואר (POP, IMAP)"
msgctxt "ServerPage"
msgid "Ports unspecified by other checkboxes"
-msgstr "פורטים שלא נתונים על ידי תיבות בחירה אחרות"
+msgstr "יציאות שלא נתונות על ידי תיבות בחירה אחרות"
msgctxt "ServerPage"
msgid "Misc Other Services"
-msgstr "שירותים נוספים"
+msgstr "שירותים שונים נוספים"
msgctxt "ServerPage"
msgid "Ports 706, 1863, 5050, 5190, 5222, 5223, 8300 and 8888"
-msgstr "פורטים 706, 1863, 5050, 5190, 5222, 8300 ו 8888 {706, 1863, 5050, 5190, 5222, 5223, 8300 ?}"
+msgstr "יציאות 706, 1863, 5050, 5190, 5222, 5223, 8300 וגם 8888"
msgctxt "ServerPage"
msgid "Instant Messaging (IM)"
@@ -3021,15 +3022,15 @@ msgstr "הודעות מיידיות"
msgctxt "ServerPage"
msgid "Port 443"
-msgstr "פורט 443"
+msgstr "יציאה 443"
msgctxt "ServerPage"
msgid "Secure Websites (SSL)"
-msgstr "אתר מאובטח (SSL)"
+msgstr "אתרים מאובטחים (SSL)"
msgctxt "ServerPage"
msgid "Port 80"
-msgstr "פורט 80"
+msgstr "יציאה 80"
msgctxt "ServerPage"
msgid "Websites"
@@ -3037,18 +3038,18 @@ msgstr "אתרי רשת"
msgctxt "ServerPage"
msgid "Show help topic on exit policies"
-msgstr "הצג עזרה בנוגע למדיניות יציאה"
+msgstr "הצגת עזרה בנוגע למדיניות יציאה"
msgctxt "ServerPage"
msgid ""
"What Internet resources should users be able to access from your relay?"
-msgstr "לאיזה תכנים באינטרנט משתמשים יוכלו לגשת דרך הממסר שלך?"
+msgstr "לאילו תכנים באינטרנט משתמשים יוכלו לגשת דרך ממסרך?"
msgctxt "ServerPage"
msgid ""
"Tor will still block some outgoing mail and file sharing applications by "
"default to reduce spam and other abuse."
-msgstr "Tor עדיין יחסום יציאה של דוא\"ל ושיתוף קבצים על מנת למנוע ספאם ופשיעה אחרת."
+msgstr "Tor עדיין יחסום יציאה של דוא״ל ושיתוף קבצים על מנת לצמצם ספאם ופשיעה אחרת."
msgctxt "ServerPage"
msgid "Exit Policies"
@@ -3056,16 +3057,16 @@ msgstr "מדיניות יציאה"
msgctxt "ServerPage"
msgid "Let others access your bridge by giving them this line:"
-msgstr "אפשר לאחרים לגשת לגשר שלך על ידי העברת השורה הבאה:"
+msgstr "אפשר לאחרים לגשת לגשר שלך על ידי נתינת השורה הבאה:"
msgctxt "ServerPage"
msgid ""
"This is the identity of your bridge relay that you can give to other people"
-msgstr "זוהי הזהות של הגשר שלך שניתן להעביר לאחרים"
+msgstr "זוהי הזהות של גשר ממסרך שביכולתך להעניק לאנשים אחרים"
msgctxt "ServerPage"
msgid "Copy your bridge relay's identity to the clipboard"
-msgstr "העתק את הזהות של הגשר שלך ללוח-העריכה"
+msgstr "העתקת הזהות של גשר ממסרך אל לוח־הגזירה"
msgctxt "ServerPage"
msgid "No Recent Usage"
@@ -3073,27 +3074,27 @@ msgstr "אין שימוש לאחרונה"
msgctxt "ServerPage"
msgid "No clients have used your relay recently."
-msgstr "אין משתמשים שנעזרו בממסר שלך לאחרונה."
+msgstr "אין משתמשים שהשתמשו בממסרך לאחרונה."
msgctxt "ServerPage"
msgid ""
"Leave your relay running so clients have a better chance of finding and "
"using it."
-msgstr "השאר את הממסר שלך פועל, כך שמשתמשים יוכלו למצוא ולהשתמש בו ביותר קלות."
+msgstr "השאירו את הממסר פועל, כך שללקוחות יהיו סיכויים טובים יותר למצוא אותו ולהשתמש בו."
msgctxt "ServerPage"
msgid "Bridge History"
-msgstr "היסטוריית יומן הודעות"
+msgstr "היסטוריית גשר"
msgctxt "ServerPage"
msgid "Vidalia was unable to retrieve your bridge's usage history."
-msgstr "Vidalia לא הצליח לשמור את השינויים בהגדרות 1%."
+msgstr "Vidalia לא הצליח לאחזר את היסטורית השימוש של הגשר שלך."
msgctxt "ServerPage"
msgid ""
"Tor returned an improperly formatted response when Vidalia requested your "
"bridge's usage history."
-msgstr "Tor החזיר תשובה שאינה מאורגנת כאשר Vidalia ביקשה את היסטורית השימוש בגשר."
+msgstr "Tor החזיר תשובה שאינה מעוצבת כראוי כאשר Vidalia ביקש את היסטורית השימוש של הגשר שלך."
msgctxt "ServerPage"
msgid "The returned response was: %1"
@@ -3101,11 +3102,11 @@ msgstr "התשובה המחוזרת היתה: %1"
msgctxt "ServerPage"
msgid "Help censored users reach the Tor network"
-msgstr "עזור למשתמשים מצונזרים לגשת לרשת Tor (גרסה 0.2.0.8-alpha ומעלה)"
+msgstr "סיוע למשתמשים מצונזרים לגשת אל רשת Tor (גרסה 0.2.0.8-alpha ומעלה)"
msgctxt "ServerPage"
msgid "<a href=\"#bridgeUsage\">Who has used my bridge?</a>"
-msgstr "<a href=\"bridges.finding\">מי השתמש בגשר שלי?</a>"
+msgstr "<a href=\"#bridgeUsage\">מי עשה שימוש בגשר שלי?</a>"
msgctxt "ServerPage"
msgid "<a href=\"#bridgeHelp\">What's this?</a>"
@@ -3113,7 +3114,7 @@ msgstr "<a href=\"#bridgeHelp\">מה זה?</a>"
msgctxt "ServerPage"
msgid "Automatically distribute my bridge address"
-msgstr ""
+msgstr "הפצה אוטומטית של כתובת הגשר שלי"
msgctxt "ServerPage"
msgid "Relay traffic for the Tor network (exit relay)"
@@ -3125,13 +3126,13 @@ msgstr ""
msgctxt "ServerPage"
msgid "Mirror the Relay Directory"
-msgstr "השתמש במראה עבור תיקיית הממסר"
+msgstr "הכפלת מדור הממסר"
msgctxt "ServerPage"
msgid ""
"Email address at which you may be reached if there is a\n"
"problem with your relay. You might also include your PGP or GPG fingerprint."
-msgstr "כתובת דוא\"ל בה אתה זמין למקרה בו יהיה צורך ליצור איתך קשר לגבי הממסר. אתה יכול גם להכליל את טביעת האצבע של מפתח PGP או GPG שלך."
+msgstr "כתובת דוא״ל בה ניתן להשיגך למקרה בו יהיה הצורך ליצור עימך קשר לגבי בעיות\nעם ממסרך. ביכולתך גם להכליל את טביעת האצבע של מפתח PGP או GPG שלך."
msgctxt "ServicePage"
msgid "Error while trying to unpublish all services"
@@ -3141,7 +3142,7 @@ msgctxt "ServicePage"
msgid ""
"Please configure at least a service directory and a virtual port for each "
"service you want to save. Remove the other ones."
-msgstr "אנא הגדר לפחות תיקיית שירות ופורט ווירטואלי עבור כל שירות שאתה מעוניין שישמר. מחק את האחרים."
+msgstr "נא להגדיר לפחות מדור שירות ויציאה ווירטואלית עבור כל שירות שברצונך שישמר. הסירו את האחרים."
msgctxt "ServicePage"
msgid "Error"
@@ -3149,23 +3150,23 @@ msgstr "שגיאה"
msgctxt "ServicePage"
msgid "Please select a Service."
-msgstr "אנא בחר שירות."
+msgstr "נא לבחור שירות."
msgctxt "ServicePage"
msgid "Select Service Directory"
-msgstr "בחר תיקיית שירות"
+msgstr "בחירת מדור שירות"
msgctxt "ServicePage"
msgid "Virtual Port may only contain valid port numbers [1..65535]."
-msgstr "פורט ווירטואלי יכול להכיל רק מספרי פורט תקינים [1..65535]"
+msgstr "יציאה ווירטואלית יכולה להכיל רק מספרי יציאה תקינים [1..65535]"
msgctxt "ServicePage"
msgid "Target may only contain address:port, address, or port."
-msgstr "יעד יכול להכיל address:port, address או port בלבד."
+msgstr "יעד יכול להכיל יציאה:כתובת, כתובת או יציאה בלבד."
msgctxt "ServicePage"
msgid "Directory already in use by another service."
-msgstr "התיקייה כבר נמצאת בשימוש על ידי שירות אחר."
+msgstr "המדור כבר מצוי בשימוש על ידי שירות אחר."
msgctxt "ServicePage"
msgid "Form"
@@ -3181,7 +3182,7 @@ msgstr "כתובת בצל"
msgctxt "ServicePage"
msgid "Virtual Port"
-msgstr "פורט ווירטואלי"
+msgstr "יציאה ווירטואלית"
msgctxt "ServicePage"
msgid "Target"
@@ -3189,7 +3190,7 @@ msgstr "יעד"
msgctxt "ServicePage"
msgid "Directory Path"
-msgstr "נתיב לתיקייה"
+msgstr "נתיב מדור"
msgctxt "ServicePage"
msgid "Enabled"
@@ -3197,19 +3198,19 @@ msgstr "מופעל"
msgctxt "ServicePage"
msgid "Add new service to list"
-msgstr "הוסף שירות חדש לרשימה"
+msgstr "הוספת שירות חדש אל הרשימה"
msgctxt "ServicePage"
msgid "Remove selected service from list"
-msgstr "הסר את השירות הנבחר מהרשימה"
+msgstr "הסרת השירות הנבחר מן הרשימה"
msgctxt "ServicePage"
msgid "Copy onion address of selected service to clipboard"
-msgstr "העתק כתובת בצל של השירות הנבחר אל לוח הגזירים"
+msgstr "העתקת כתובת בצל של השירות הנבחר אל לוח־הגזירה"
msgctxt "ServicePage"
msgid "Browse in local file system and choose directory for selected service"
-msgstr "חפש במערכת הקבצים המקומית ובחר תיקייה עבור השירות הנבחר"
+msgstr "עיון במערכת הקבצים המקומית ובחירת מדור עבור השירות הנבחר"
msgctxt "ServicePage"
msgid "Created by Tor"
@@ -3217,26 +3218,26 @@ msgstr "נוצר על ידי Tor"
msgctxt "StatusEventWidget"
msgid "Copy to Clipboard"
-msgstr ""
+msgstr "העתקה אל לוח־גזירה"
msgctxt "StatusEventWidget"
msgid "The Tor Software is Running"
-msgstr "Tor רץ כעת"
+msgstr "היישום Tor מורץ כעת"
msgctxt "StatusEventWidget"
msgid "You are currently running version \"%1\" of the Tor software."
-msgstr "אתה מריץ את גרסאת \"%1\" של Tor כעת."
+msgstr "הינך עושה כעת שימוש בגריסה \"%1\" של Tor."
msgctxt "StatusEventWidget"
msgid "The Tor Software is not Running"
-msgstr "\"tor\" לא רץ כעת"
+msgstr "היישום Tor אינו מורץ כעת"
msgctxt "StatusEventWidget"
msgid ""
"Click \"Start Tor\" in the Vidalia Control Panel to restart the Tor "
"software. If Tor exited unexpectedly, select the \"Advanced\" tab above for "
"details about any errors encountered."
-msgstr ""
+msgstr "לחצו על \"הפעלת Tor\" בלוח הבקרה של Vidalia כדי לאתחל את התוכנה Tor. במידה והתוכנה Tor מסתיימת באופן לא צפוי, בחרו בלשונית \"מתקדם\" למעלה עבור פרטים אודות כל שגיאה שהתרחשה."
msgctxt "StatusEventWidget"
msgid ""
@@ -3244,7 +3245,7 @@ msgid ""
"longer recommended. Please upgrade to the most recent version of the "
"software, which may contain important security, reliability and performance "
"fixes."
-msgstr ""
+msgstr "ברשותך קיימת גרסה \"%1\" של התוכנה Tor, שאיננה מומלצת עוד. נא לשדרג אל הגרסה האחרונה ביותר של התוכנה, שעשויה להכיל תיקוני אבטחה, אמינות וגם ביצועים חשובים."
msgctxt "StatusEventWidget"
msgid ""
@@ -3252,21 +3253,21 @@ msgid ""
"longer work with the current Tor network. Please upgrade to the most recent "
"version of the software, which may contain important security, reliability "
"and performance fixes."
-msgstr ""
+msgstr "ברשותך קיימת גרסה \"%1\" של התוכנה Tor, שייתכן ולא תעבוד עם רשת Tor הנוכחית. נא לשדרג אל הגרסה האחרונה ביותר של התוכנה, שעשויה להכיל תיקוני אבטחה, אמינות וגם ביצועים חשובים."
msgctxt "StatusEventWidget"
msgid "Your Tor Software is Out-of-date"
-msgstr "Tor פג תוקף"
+msgstr "היישום Tor שמצוי ברשותך אינו מעודכן"
msgctxt "StatusEventWidget"
msgid "Connected to the Tor Network"
-msgstr "התחבר אל רשת Tor"
+msgstr "מחובר אל רשת Tor"
msgctxt "StatusEventWidget"
msgid ""
"We were able to successfully establish a connection to the Tor network. You "
"can now configure your applications to use the Internet anonymously."
-msgstr ""
+msgstr "ביססנו חיבור אל רשת Tor בהצלחה. ביכולתך להגדיר עתה את יישומיך לעשות שימוש במרשתת באופן אלמוני."
msgctxt "StatusEventWidget"
msgid "Tor Software Error"
@@ -3276,7 +3277,7 @@ msgctxt "StatusEventWidget"
msgid ""
"The Tor software encountered an internal bug. Please report the following "
"error message to the Tor developers at bugs.torproject.org: \"%1\""
-msgstr ""
+msgstr "היישום Tor חווה תקלה פנימית. נא לדווח על הודעת השגיאה הבאה אל המפתחים של Tor אצל bugs.torproject.org: \"%1\""
msgctxt "StatusEventWidget"
msgid ""
@@ -3284,7 +3285,7 @@ msgid ""
"the past compared to the source \"%2\". If your clock is not correct, Tor "
"will not be able to function. Please verify your computer displays the "
"correct time."
-msgstr ""
+msgstr "Tor קבע שייתכן ושעון מחשבך מוגדר אל %1 שניות אל העבר בהשוואה אל המקור \"%2\". במידה ושעונך אינו מציג את השעה הנכונה, לא תהיה באפשרותו של Tor לתפקד. נא לאמת שמחשבך מציג את השעה הנכונה."
msgctxt "StatusEventWidget"
msgid ""
@@ -3292,11 +3293,11 @@ msgid ""
"the future compared to the source \"%2\". If your clock is not correct, Tor "
"will not be able to function. Please verify your computer displays the "
"correct time."
-msgstr ""
+msgstr "Tor קבע שייתכן ושעון מחשבך מוגדר אל %1 שניות אל העתיד בהשוואה אל המקור \"%2\". במידה ושעונך אינו מציג את השעה הנכונה, לא תהיה באפשרותו של Tor לתפקד. נא לאמת שמחשבך מציג את השעה הנכונה."
msgctxt "StatusEventWidget"
msgid "Your Computer's Clock is Potentially Incorrect"
-msgstr "השעה של המחשב שלך עלולה להיות שגיאה"
+msgstr "ייתכן שהשעה של מחשבך איננה מדויקת"
msgctxt "StatusEventWidget"
msgid ""
@@ -3304,18 +3305,18 @@ msgid ""
"unencrypted connection through Tor to port %1. Sending unencrypted "
"information over the Tor network is dangerous and not recommended. For your "
"protection, Tor has automatically closed this connection."
-msgstr ""
+msgstr "ייתכן שיישום מן היישומים במחשבך ניסה ליצור חיבור שאינו מוצפן דרך Tor אל יציאה %1. שליחת מידע לא מוצפן דרך רשת Tor הינה מסוכנת ואינה מומלצת. להגנתך, Tor סגר את חיבור זה אוטומטית."
msgctxt "StatusEventWidget"
msgid ""
"One of the applications on your computer may have attempted to make an "
"unencrypted connection through Tor to port %1. Sending unencrypted "
"information over the Tor network is dangerous and not recommended."
-msgstr ""
+msgstr "ייתכן שיישום מן היישומים במחשבך ניסה ליצור חיבור שאינו מוצפן דרך Tor אל יציאה %1. שליחת מידע לא מוצפן דרך רשת Tor הינה מסוכנת ואינה מומלצת."
msgctxt "StatusEventWidget"
msgid "Potentially Dangerous Connection!"
-msgstr "חיבור העלול להיות מסוכן!."
+msgstr "חיבור מסוכן פוטנציאלית!"
msgctxt "StatusEventWidget"
msgid ""
@@ -3323,81 +3324,81 @@ msgid ""
"using a protocol that may leak information about your destination. Please "
"ensure you configure your applications to use only SOCKS4a or SOCKS5 with "
"remote hostname resolution."
-msgstr ""
+msgstr "יישום מן יישומך ניסה לבסס חיבור דרך Tor אל \"%1\" באמצעות פרוטוקול שעלול להדליף מידע אודות יעדך. נא לוודא שהגדרת את יישומייך לעשות שימוש רק ב־SOCKS4a או ב־SOCKS5 יחד עם שם מארח מופרד מרוחק."
msgctxt "StatusEventWidget"
msgid "Unknown SOCKS Protocol"
-msgstr "SOCKS Protocol לא ידועים"
+msgstr "פרוטוקול SOCKS לא מוכר"
msgctxt "StatusEventWidget"
msgid ""
"One of your applications tried to establish a connection through Tor using a"
" protocol that Tor does not understand. Please ensure you configure your "
"applications to use only SOCKS4a or SOCKS5 with remote hostname resolution."
-msgstr ""
+msgstr "יישום מן יישומך מנסה לבסס חיבור דרך Tor באמצעות פרוטוקול אותו Tor לא מבין. נא לוודא שהגדרת את יישומייך לעשות שימוש רק ב־SOCKS4a או ב־SOCKS5 יחד עם שם מארח מופרד מרוחק."
msgctxt "StatusEventWidget"
msgid "Invalid Destination Hostname"
-msgstr "כתובת שרת לא תקפה"
+msgstr "יעד שם מארח שגוי"
msgctxt "StatusEventWidget"
msgid ""
"One of your applications tried to establish a connection through Tor to "
"\"%1\", which Tor does not recognize as a valid hostname. Please check your "
"application's configuration."
-msgstr ""
+msgstr "יישום מן יישומך ניסה לבסס חיבור דרך Tor אל \"%1\", אותו Tor לא מזהה כשם מארח תקף. נא לבדוק את התצורה של יישומך."
msgctxt "StatusEventWidget"
msgid "External IP Address Changed"
-msgstr "כתובת ה-IP החיצונית שונתה"
+msgstr "כתובת IP חיצונית שונתה"
msgctxt "StatusEventWidget"
msgid ""
"Tor has determined your relay's public IP address is currently %1%2. If that"
" is not correct, please consider setting the 'Address' option in your "
"relay's configuration."
-msgstr ""
+msgstr "Tor קבע שכתובת ה־IP הפומבית של ממסרך הינה %1%2. במידה ואין זה נכון, נא שקלו להגדיר את האפשרות 'כתובת' בתצורת ממסרך."
msgctxt "StatusEventWidget"
msgid "DNS Hijacking Detected"
-msgstr "נמצא DNS Hijacking"
+msgstr "חטיפת DNS אותרה"
msgctxt "StatusEventWidget"
msgid ""
"Tor detected that your DNS provider is providing false responses for domains"
" that do not exist. Some ISPs and other DNS providers, such as OpenDNS, are "
"known to do this in order to display their own search or advertising pages."
-msgstr ""
+msgstr "Tor איתר שספקית ה־DNS מספקת תגובה מזויפת עבור מתחמים (domains) שאינם קיימים. קיימות ספקיות שירותי מרשתת וספקיות DNS אחרות, כגון OpenDNS, שידוע שהן עושות זאת על מנת להציג את עמודי החיפוש או הפרסומות שלהן."
msgctxt "StatusEventWidget"
msgid ""
"Tor detected that your DNS provider is providing false responses for well "
"known domains. Since clients rely on Tor network relays to provide accurate "
"DNS repsonses, your relay will not be configured as an exit relay."
-msgstr ""
+msgstr "Tor איתר שספקית ה־DNS מספקת תגובה מזויפת עבור מתחמים (domains) הידועים היטב. מאחר ולקוחות תלויים על ממסרי רשת Tor כדי להעניק תגובות DNS מדויקות, ממסרך לא יוגדר כממסר יציאה."
msgctxt "StatusEventWidget"
msgid "Checking Server Port Reachability"
-msgstr ""
+msgstr "בוחן כעת נגישות יציאת שרת"
msgctxt "StatusEventWidget"
msgid ""
"Tor is trying to determine if your relay's server port is reachable from the"
" Tor network by connecting to itself at %1:%2. This test could take several "
"minutes."
-msgstr ""
+msgstr "Tor מנסה לקבוע אם יציאת השרת של ממסרך הינה נגישה מן רשת Tor באמצעות התחברות עצמית בשעה %1:%2. בדיקה זו עשויה לקחת מספר דקות."
msgctxt "StatusEventWidget"
msgid "Server Port Reachability Test Successful!"
-msgstr ""
+msgstr "בדיקת נגישות יציאת שרת צלחה!"
msgctxt "StatusEventWidget"
msgid "Your relay's server port is reachable from the Tor network!"
-msgstr ""
+msgstr "יציאת שרת של ממסרך הינה נגישה מן רשת Tor!"
msgctxt "StatusEventWidget"
msgid "Server Port Reachability Test Failed"
-msgstr ""
+msgstr "בדיקת נגישות יציאת שרת כשלה"
msgctxt "StatusEventWidget"
msgid ""
@@ -3405,30 +3406,30 @@ msgid ""
"happen if you are behind a router or firewall that requires you to set up "
"port forwarding. If %1:%2 is not your correct IP address and server port, "
"please check your relay's configuration."
-msgstr ""
+msgstr "יציאת השרת של ממסרך אינה נגישה על ידי לקוחות Tor אחרים. דבר זה יכול להתרחש אם הינך מאחרי נתב רשת או חומת אש שמצריכים ממך להגדיר port forwarding. אם %1:%2 אינו כתובת IP הנוכחית שלך וגם יציאת שרת, נא לבדוק את תצורת ממסרך."
msgctxt "StatusEventWidget"
msgid "Checking Directory Port Reachability"
-msgstr ""
+msgstr "בודק כעת נגישות יציאה מדור"
msgctxt "StatusEventWidget"
msgid ""
"Tor is trying to determine if your relay's directory port is reachable from "
"the Tor network by connecting to itself at %1:%2. This test could take "
"several minutes."
-msgstr ""
+msgstr "Tor מנסה לקבוע אם יציאת המדור של ממסרך הינה נגישה מן רשת Tor באמצעות התחברות עצמית בשעה %1:%2. בדיקה זו עשויה לקחת מספר דקות."
msgctxt "StatusEventWidget"
msgid "Directory Port Reachability Test Successful!"
-msgstr ""
+msgstr "בדיקת נגישות יציאת מדור צלחה"
msgctxt "StatusEventWidget"
msgid "Your relay's directory port is reachable from the Tor network!"
-msgstr ""
+msgstr "יציאת המדור של ממסרך הינה נגישה מן רשת Tor!"
msgctxt "StatusEventWidget"
msgid "Directory Port Reachability Test Failed"
-msgstr ""
+msgstr "בדיקת נגישות יציאת מדור נכשלה"
msgctxt "StatusEventWidget"
msgid ""
@@ -3436,21 +3437,21 @@ msgid ""
"happen if you are behind a router or firewall that requires you to set up "
"port forwarding. If %1:%2 is not your correct IP address and directory port,"
" please check your relay's configuration."
-msgstr ""
+msgstr "יציאת המדור של ממסרך אינה נגישה על ידי לקוחות Tor אחרים. דבר זה יכול להתרחש אם הינך מאחרי נתב רשת או חומת אש שמצריכים ממך להגדיר port forwarding. אם %1:%2 אינו כתובת IP הנוכחית שלך וגם יציאת מדור, נא לבדוק את תצורת ממסרך."
msgctxt "StatusEventWidget"
msgid "Relay Descriptor Rejected"
-msgstr ""
+msgstr "מילת מפתח ממסר נדחתה"
msgctxt "StatusEventWidget"
msgid ""
"Your relay's descriptor, which enables clients to connect to your relay, was"
" rejected by the directory server at %1:%2. The reason given was: %3"
-msgstr ""
+msgstr "מילת המפתח של ממסרך, שמאפשר ללקוחות להתחבר אל ממסרך, נדחה על ידי מדור השרת בשעה %1:%2. הסיבה שניתנה היתה: %3"
msgctxt "StatusEventWidget"
msgid "Your Relay is Online"
-msgstr ""
+msgstr "ממסרך הינו מקוון"
msgctxt "StatusEventWidget"
msgid ""
@@ -3458,7 +3459,7 @@ msgid ""
"see an increase in network traffic shown by the Bandwidth Graph within a few"
" hours as more clients learn about your relay. Thank you for contributing to"
" the Tor network!"
-msgstr ""
+msgstr "ממסרך מקוון עתה והינו זמין לשימוש עבור לקוחות Tor. הינך צפוי/ה לראות בתוך מספר שעות עלייה בתעבורת רשת התקשורת המוצגת בגרף רוחב הפס כשיותר לקוחות ילמדו אודות ממסרך. רב תודות לך עבור תרומתך למען רשת Tor!"
msgctxt "Stream"
msgid "New"
@@ -3466,15 +3467,15 @@ msgstr "חדש"
msgctxt "Stream"
msgid "Resolving"
-msgstr "מתרגם"
+msgstr "מתרגם כעת"
msgctxt "Stream"
msgid "Connecting"
-msgstr "מתחבר"
+msgstr "מתחבר כעת"
msgctxt "Stream"
msgid "Open"
-msgstr "פתוח"
+msgstr "פתיחה"
msgctxt "Stream"
msgid "Failed"
@@ -3486,7 +3487,7 @@ msgstr "סגור"
msgctxt "Stream"
msgid "Retrying"
-msgstr "מנסה מחדש"
+msgstr "מנסה מחדש כעת"
msgctxt "Stream"
msgid "Remapped"
@@ -3498,49 +3499,49 @@ msgstr "לא ידוע"
msgctxt "TorProcess"
msgid "Process %1 failed to stop. [%2]"
-msgstr "תהליך %1 לא הצליח לעצור. (%2)"
+msgstr "תהליך %1 נכשל לעצור. (%2)"
msgctxt "TorService"
msgid "The Tor service is not installed."
-msgstr "שירות Tor לא מותקן."
+msgstr "השירות Tor אינו מותקן."
msgctxt "TorService"
msgid "Unable to start the Tor service."
-msgstr "התחלת שירות Tor נכשלה."
+msgstr "לא ניתן להפעייל את השירות Tor."
msgctxt "TorSettings"
msgid "Failed to hash the control password."
-msgstr "ערבול סיסמת שליטה נכשל."
+msgstr "ערבול סיסמת בקרה נכשל."
msgctxt "TorrcDialog"
msgid "Editing torrc"
-msgstr "ערוך torrc"
+msgstr "עריכת torrc"
msgctxt "TorrcDialog"
msgid ""
"Save settings. If unchecked it will only apply settings to the current Tor "
"instance."
-msgstr ""
+msgstr "שמירת הגדרות. במידה ואפשרות זו איננה מסומנת, זו תוחל רק על תהליך Tor הנוכחי בלבד."
msgctxt "TorrcDialog"
msgid "Cut"
-msgstr "גזור"
+msgstr "גזירה"
msgctxt "TorrcDialog"
msgid "Copy"
-msgstr "העתק"
+msgstr "העתקה"
msgctxt "TorrcDialog"
msgid "Paste"
-msgstr "הדבק"
+msgstr "הדבקה"
msgctxt "TorrcDialog"
msgid "Undo"
-msgstr "בטל"
+msgstr "ביטול"
msgctxt "TorrcDialog"
msgid "Redo"
-msgstr ""
+msgstr "ביצוע־חוזר"
msgctxt "TorrcDialog"
msgid "Select All"
@@ -3556,7 +3557,7 @@ msgstr "החל על הנבחרים בלבד"
msgctxt "TorrcDialog"
msgid "Error connecting to Tor"
-msgstr "שגיאת חיבור אל Tor"
+msgstr "שגיאה בעת התחברות אל Tor"
msgctxt "TorrcDialog"
msgid "Selection is empty. Please select some text, or check \"Apply all\""
@@ -3572,7 +3573,7 @@ msgstr "שגיאה"
msgctxt "TorrcDialog"
msgid "An error ocurred while opening torrc file"
-msgstr "שגיאה מסויימת התרחשה בעת פתיחת קובץ torrc"
+msgstr "ארעה שגיאה מסוימת בעת פתיחת קובץ torrc"
msgctxt "UPNPControl"
msgid "Success"
@@ -3580,27 +3581,27 @@ msgstr "הצלחה"
msgctxt "UPNPControl"
msgid "No UPnP-enabled devices found"
-msgstr "לא נמצא UPnP-enabled devices"
+msgstr "לא נמצאו התקנים מאופשרים UPnP"
msgctxt "UPNPControl"
msgid "No valid UPnP-enabled Internet gateway devices found"
-msgstr "לא נמצא חיבור אינטרנט שתומך ב-UPnP"
+msgstr "לא נמצא תקן חיבור אינטרנט שתומך בשיטת UPnP"
msgctxt "UPNPControl"
msgid "WSAStartup failed"
-msgstr "WSAStartup נכשל"
+msgstr "WSAStartup נכשל"
msgctxt "UPNPControl"
msgid "Failed to add a port mapping"
-msgstr "נכשל בהוספה של port mapping"
+msgstr "הוספת port mapping נכשלה"
msgctxt "UPNPControl"
msgid "Failed to retrieve a port mapping"
-msgstr "נכשל בהשגת port mapping"
+msgstr "אחזרת port mapping נכשלה"
msgctxt "UPNPControl"
msgid "Failed to remove a port mapping"
-msgstr "נכשל בהסרת port mapping"
+msgstr "הסרת port mapping נכשלה"
msgctxt "UPNPControl"
msgid "Unknown error"
@@ -3608,15 +3609,15 @@ msgstr "שגיאה לא ידועה"
msgctxt "UPNPTestDialog"
msgid "Discovering UPnP-enabled devices"
-msgstr "מחפש UPnP-enabled devices"
+msgstr "מחפש כעת התקנים מאופשרים UPnP"
msgctxt "UPNPTestDialog"
msgid "Updating directory port mapping"
-msgstr "מעדכן תיקיות port mapping"
+msgstr "מעדכן כעת מדור port mapping"
msgctxt "UPNPTestDialog"
msgid "Updating relay port mapping"
-msgstr "מעדכן port mapping של הממסר"
+msgstr "מעדכן כעת ממסר port mapping"
msgctxt "UPNPTestDialog"
msgid "Test completed successfully!"
@@ -3624,39 +3625,39 @@ msgstr "הבדיקה הושלמה בהצלחה!"
msgctxt "UPNPTestDialog"
msgid "Testing UPnP Support"
-msgstr "בודק תמיכה ב-UPnP"
+msgstr "בודק כעת תמיכת UPnP"
msgctxt "UPNPTestDialog"
msgid "Testing Universal Plug & Play Support"
-msgstr "בודק תמיכת Plug & Play אוניברסאלית."
+msgstr "בודק כעת תמיכת Plug & Play אוניברסאלית."
msgctxt "UpdateProcess"
msgid ""
"Vidalia was unable to check for available software updates because it could "
"not find '%1'."
-msgstr "Vidalia לא היתה מסוגלת לחפש עדכוני תוכנה כיוון שלא נמצא '%1'."
+msgstr "Vidalia לא מסוגל היה לחפש עדכוני תוכנה מכיוון שלא ניתן היה למצוא את '%1'."
msgctxt "UpdateProcess"
msgid ""
"Vidalia was unable to check for available software updates because Tor's "
"update process exited unexpectedly."
-msgstr "Vidalia לא היתה מסוגלת לחפש עדכוני תוכנה כיוון ש-Tor נסגר בפתאומיות."
+msgstr "Vidalia לא מסוגל היה לחפש עדכוני תוכנה מכיוון שהיישום Tor נסגר בפתאומיות."
msgctxt "UpdateProgressDialog"
msgid "Checking for available updates..."
-msgstr "מחפש עדכונים זמינים..."
+msgstr "מחפש כעת עבור עדכונים זמינים..."
msgctxt "UpdateProgressDialog"
msgid "Hide"
-msgstr "הסתר"
+msgstr "הסתרה"
msgctxt "UpdateProgressDialog"
msgid "Downloading updates..."
-msgstr "מוריד עדכונים..."
+msgstr "מוריד עדכונים כעת..."
msgctxt "UpdateProgressDialog"
msgid "Installing updated software..."
-msgstr "מתקין עדכונים..."
+msgstr "מתקין עדכונים כעת..."
msgctxt "UpdateProgressDialog"
msgid "Done! Your software is now up to date."
@@ -3672,7 +3673,7 @@ msgstr "עדכוני תוכנה"
msgctxt "UpdateProgressDialog"
msgid "Checking for updates..."
-msgstr "מחפש עדכונים..."
+msgstr "בודק עדכונים כעת..."
msgctxt "UpdateProgressDialog"
msgid "Cancel"
@@ -3680,7 +3681,7 @@ msgstr "ביטול"
msgctxt "UpdatesAvailableDialog"
msgid "Software Updates Available"
-msgstr "עידכון Tor זמין"
+msgstr "קיים עדכון זמין עבור Tor"
msgctxt "UpdatesAvailableDialog"
msgid "Remind Me Later"
@@ -3692,7 +3693,7 @@ msgstr "התקן"
msgctxt "UpdatesAvailableDialog"
msgid "The following updated software packages are ready for installation:"
-msgstr "חבילות התוכנה הבאות מוכנות להתקנה:"
+msgstr "חבילות התוכנה העדכניות הבאות מוכנות להתקנה:"
msgctxt "UpdatesAvailableDialog"
msgid "Package"
@@ -3724,15 +3725,15 @@ msgstr "עזרה"
msgctxt "VMessageBox"
msgid "Retry"
-msgstr "נסה שנית"
+msgstr "ניסיון חוזר"
msgctxt "VMessageBox"
msgid "Show Log"
-msgstr "הצג יומן"
+msgstr "הצגת יומן"
msgctxt "VMessageBox"
msgid "Show Settings"
-msgstr "הצג הגדרות"
+msgstr "הצגת הגדרות"
msgctxt "VMessageBox"
msgid "Continue"
@@ -3744,7 +3745,7 @@ msgstr "יציאה"
msgctxt "VMessageBox"
msgid "Browse"
-msgstr "חפש"
+msgstr "עיון"
msgctxt "Vidalia"
msgid "Invalid Argument"
@@ -3752,70 +3753,70 @@ msgstr "ארגומנט שגוי"
msgctxt "Vidalia"
msgid "Vidalia is already running"
-msgstr "Vidalia כבר פעיל"
+msgstr "Vidalia כבר מורץ"
msgctxt "Vidalia"
msgid "Displays this usage message and exits."
-msgstr "מציג הודעת שימוש זו ויוצא."
+msgstr "הצגת הודעת שימוש זו ויציאה."
msgctxt "Vidalia"
msgid "Resets ALL stored Vidalia settings."
-msgstr "מאפס את כל ההגדרות השמורות של Vidalia."
+msgstr "איפוס מוחלט של כל ההגדרות המאוחסנות של Vidalia."
msgctxt "Vidalia"
msgid "Sets the directory Vidalia uses for data files."
-msgstr "קובע את הספריה ש-Vidalia משתמשת לשמירת קבצי מידע."
+msgstr "הגדרת הספרייה שבשימוש על ידי Vidalia לקבצי מידע."
msgctxt "Vidalia"
msgid "Sets the name and location of Vidalia's pidfile."
-msgstr "קובע את השם ומיקום קובץ ה-PID של Vidalia."
+msgstr "הגדרת השם ומיקום קובץ ה־PID של Vidalia."
msgctxt "Vidalia"
msgid "Sets the name and location of Vidalia's logfile."
-msgstr "קובע את השם והמיקום של קובת היומן של Vidalia."
+msgstr "הגדרת השם ומיקום קובץ היומן של Vidalia."
msgctxt "Vidalia"
msgid "Sets the verbosity of Vidalia's logging."
-msgstr "קובע את הגיבוב של היומן."
+msgstr "הגדרת הגיבוב של היומן אצל Vidalia."
msgctxt "Vidalia"
msgid "Sets Vidalia's interface style."
-msgstr "קובע את סגנון הממשק של Vidalia."
+msgstr "הגדרת סגנון הממשק של Vidalia."
msgctxt "Vidalia"
msgid "Sets Vidalia's language."
-msgstr "קובע את השפה של Vidalia."
+msgstr "הגדרת השפה של Vidalia."
msgctxt "Vidalia"
msgid "Vidalia Usage Information"
-msgstr "מידע שימוש ל-Vidalia"
+msgstr "מידע שימוש עבור Vidalia"
msgctxt "Vidalia"
msgid "Unable to open log file '%1': %2"
-msgstr "כשלון בפתחיחת קובץ יומן '%1': %2"
+msgstr "לא ניתן לפתוח קובץ יומן '%1': %2"
msgctxt "Vidalia"
msgid "Value required for parameter :"
-msgstr "נחוץ ערך עבור הפרמטר:"
+msgstr "נדרש ערך עבור פרמטר :"
msgctxt "Vidalia"
msgid "Invalid language code specified:"
-msgstr "קוד שפה לא תקין:"
+msgstr "צוין קוד שפה שגו:"
msgctxt "Vidalia"
msgid "Invalid GUI style specified:"
-msgstr "סגנון ממשק לא תקין:"
+msgstr "צוין סגנון ממשק שגוי:"
msgctxt "Vidalia"
msgid "Invalid log level specified:"
-msgstr "רמת ארכיון שגוייה צויינה:"
+msgstr "צוינה רמת יומן שגויה:"
msgctxt "Vidalia"
msgid ""
"Another Vidalia process is possibly already running. If there really is not another Vidalia process running, you can choose to continue anyway.\n"
"\n"
"Would you like to continue starting Vidalia?"
-msgstr "תהליך אחר של Vidalia פעיל. אם אין תהליך פעיל אחר של Vidalia,אתה יכול לבחור להמשיך בכל מקרה.\n\nהאם ברצונך להמשיך להפעיל את Vidalia?"
+msgstr "תהליך אחר של Vidalia כבר מורץ. אם אין תהליך פעיל אחר של Vidalia, ביכולתך לבחור להמשיך בכל מקרה.\n\nהאם ברצונך להמשיך להפעיל את Vidalia?"
msgctxt "stringutil.h"
msgid "%1 secs"
@@ -3823,19 +3824,19 @@ msgstr "%1 שניות"
msgctxt "stringutil.h"
msgid "%1 B/s"
-msgstr "%1 B/s"
+msgstr "%1 ביתים/ש"
msgctxt "stringutil.h"
msgid "%1 KB/s"
-msgstr "%1 KB/s"
+msgstr "%1 ק״ב/ש"
msgctxt "stringutil.h"
msgid "%1 MB/s"
-msgstr "%1 MB/s"
+msgstr "%1 מ״ב/ש"
msgctxt "stringutil.h"
msgid "%1 GB/s"
-msgstr "%1 GB/s"
+msgstr "%1 ג״ב/ש"
msgctxt "stringutil.h"
msgid "%1 days"
1
0

r25726: {website} add the new samwhited mirror and update the mirrors table. (in website/trunk: . include)
by Andrew Lewman 22 Jul '12
by Andrew Lewman 22 Jul '12
22 Jul '12
Author: phobos
Date: 2012-07-22 10:38:24 +0000 (Sun, 22 Jul 2012)
New Revision: 25726
Modified:
website/trunk/include/mirrors-table.wmi
website/trunk/update-mirrors.pl
Log:
add the new samwhited mirror and update the mirrors table.
Modified: website/trunk/include/mirrors-table.wmi
===================================================================
--- website/trunk/include/mirrors-table.wmi 2012-07-20 17:26:56 UTC (rev 25725)
+++ website/trunk/include/mirrors-table.wmi 2012-07-22 10:38:24 UTC (rev 25726)
@@ -1,23 +1,6 @@
<tr>
- <td>DE</td>
-
- <td></td>
-
- <td>Up to date</td>
-
- <td> - </td>
- <td><a href="http://torproject.lightning-bolt.net/dist/">http</a></td>
- <td><a href="http://torproject.lightning-bolt.net/">http</a></td>
- <td> - </td>
- <td> - </td>
- <td> - </td>
- <td> - </td>
-</tr>
-
-<tr>
-
<td>TN</td>
<td></td>
@@ -103,6 +86,23 @@
<tr>
+ <td>DK</td>
+
+ <td>Zentrum der Gesundheit</td>
+
+ <td>Up to date</td>
+
+ <td> - </td>
+ <td><a href="http://tor.idnr.ws/dist/">http</a></td>
+ <td><a href="http://tor.idnr.ws/">http</a></td>
+ <td> - </td>
+ <td> - </td>
+ <td> - </td>
+ <td> - </td>
+</tr>
+
+<tr>
+
<td>EE</td>
<td>CyberSIDE</td>
@@ -341,6 +341,23 @@
<tr>
+ <td>US</td>
+
+ <td></td>
+
+ <td>Up to date</td>
+
+ <td> - </td>
+ <td><a href="http://tor.mirrors.samwhited.com/dist/">http</a></td>
+ <td><a href="http://tor.mirrors.samwhited.com/">http</a></td>
+ <td><a href="https://tor.mirrors.samwhited.com/dist/">https</a></td>
+ <td><a href="https://tor.mirrors.samwhited.com/">https</a></td>
+ <td> - </td>
+ <td><a href="rsync://tor.mirrors.samwhited.com">rsync</a></td>
+</tr>
+
+<tr>
+
<td>DE</td>
<td>factor.cc</td>
@@ -647,15 +664,15 @@
<tr>
- <td>DK</td>
+ <td>DE</td>
- <td>Zentrum der Gesundheit</td>
+ <td></td>
<td>Up to date</td>
<td> - </td>
- <td><a href="http://tor.idnr.ws/dist/">http</a></td>
- <td><a href="http://tor.idnr.ws/">http</a></td>
+ <td><a href="http://torproject.lightning-bolt.net/dist/">http</a></td>
+ <td><a href="http://torproject.lightning-bolt.net/">http</a></td>
<td> - </td>
<td> - </td>
<td> - </td>
@@ -666,23 +683,6 @@
<td>DE</td>
- <td>crazyhaze.de</td>
-
- <td>Up to date</td>
-
- <td> - </td>
- <td><a href="http://tor.crazyhaze.de/dist/">http</a></td>
- <td><a href="http://tor.crazyhaze.de/">http</a></td>
- <td><a href="https://tor.crazyhaze.de/dist/">https</a></td>
- <td><a href="https://tor.crazyhaze.de/">https</a></td>
- <td> - </td>
- <td> - </td>
-</tr>
-
-<tr>
-
- <td>DE</td>
-
<td>torservers</td>
<td>Out of date</td>
@@ -766,6 +766,23 @@
<tr>
+ <td>DE</td>
+
+ <td>crazyhaze.de</td>
+
+ <td>Unknown</td>
+
+ <td> - </td>
+ <td><a href="http://tor.crazyhaze.de/dist/">http</a></td>
+ <td><a href="http://tor.crazyhaze.de/">http</a></td>
+ <td><a href="https://tor.crazyhaze.de/dist/">https</a></td>
+ <td><a href="https://tor.crazyhaze.de/">https</a></td>
+ <td> - </td>
+ <td> - </td>
+</tr>
+
+<tr>
+
<td>NL</td>
<td></td>
Modified: website/trunk/update-mirrors.pl
===================================================================
--- website/trunk/update-mirrors.pl 2012-07-20 17:26:56 UTC (rev 25725)
+++ website/trunk/update-mirrors.pl 2012-07-22 10:38:24 UTC (rev 25726)
@@ -980,7 +980,25 @@
httpsDistMirror => "",
rsyncDistMirror => "",
hiddenServiceMirror => "",
- }
+ },
+ mirror067 => {
+ adminContact => "",
+ orgName => "",
+ isoCC => "US",
+ subRegion => "",
+ region => "US",
+ ipv4 => "True",
+ ipv6 => "False",
+ loadBalanced => "No",
+ httpWebsiteMirror => "http://tor.mirrors.samwhited.com/",
+ httpsWebsiteMirror => "https://tor.mirrors.samwhited.com/",
+ rsyncWebsiteMirror => "rsync://tor.mirrors.samwhited.com",
+ ftpWebsiteMirror => "",
+ httpDistMirror => "http://tor.mirrors.samwhited.com/dist/",
+ httpsDistMirror => "https://tor.mirrors.samwhited.com/dist/",
+ rsyncDistMirror => "rsync://tor.mirrors.samwhited.com/dist",
+ hiddenServiceMirror => "",
+ }
);
my $count = values %m;
1
0
commit 43db1dea2487ed7517c8be3f44a315fdeac731a8
Author: Damian Johnson <atagar(a)torproject.org>
Date: Sat Jul 21 19:55:51 2012 -0700
Sorting tor versions lexically
According to the version spec we should "compare them lexically as ASCII byte
strings". This seems a little weird since it means a reverse alphabetical order
(ie 'Z' comes before 'A') but oh well.
---
stem/version.py | 14 +++++++++++---
test/unit/version.py | 4 ++--
2 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/stem/version.py b/stem/version.py
index bc377af..087efa9 100644
--- a/stem/version.py
+++ b/stem/version.py
@@ -159,9 +159,17 @@ class Version(object):
if my_version > other_version: return 1
elif my_version < other_version: return -1
- # not including tags in comparisons because the spec declares them to be
- # 'purely informational'
- return 0
+ # According to the version spec...
+ #
+ # If we *do* encounter two versions that differ only by status tag, we
+ # compare them lexically as ASCII byte strings.
+
+ my_status = self.status if self.status else ""
+ other_status = other.status if other.status else ""
+
+ if my_status > other_status: return 1
+ elif my_status < other_status: return -1
+ else: return 0
class VersionRequirements(object):
"""
diff --git a/test/unit/version.py b/test/unit/version.py
index 618b483..cfda02c 100644
--- a/test/unit/version.py
+++ b/test/unit/version.py
@@ -82,7 +82,7 @@ class TestVersion(unittest.TestCase):
self.assert_version_is_greater("0.2.2.3-tag", "0.1.2.3-tag")
self.assert_version_is_greater("0.1.3.3-tag", "0.1.2.3-tag")
self.assert_version_is_greater("0.1.2.4-tag", "0.1.2.3-tag")
- self.assert_version_is_equal("0.1.2.3-ugg", "0.1.2.3-tag")
+ self.assert_version_is_greater("0.1.2.3-ugg", "0.1.2.3-tag")
self.assert_version_is_equal("0.1.2.3-tag", "0.1.2.3-tag")
# checks that a missing patch level equals zero
@@ -90,7 +90,7 @@ class TestVersion(unittest.TestCase):
self.assert_version_is_equal("0.1.2-tag", "0.1.2.0-tag")
# checks for missing patch or status
- self.assert_version_is_equal("0.1.2.3-tag", "0.1.2.3")
+ self.assert_version_is_greater("0.1.2.3-tag", "0.1.2.3")
self.assert_version_is_greater("0.1.2.3-tag", "0.1.2-tag")
self.assert_version_is_greater("0.1.2.3-tag", "0.1.2")
1
0