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
September 2012
- 18 participants
- 792 discussions

[ooni-probe/master] Changed the ooni/lib structure to use gitsubmodules so that OONI users do not
by isis@torproject.org 13 Sep '12
by isis@torproject.org 13 Sep '12
13 Sep '12
commit 78f768540a0912619b566e1f75e518edcb29b7ff
Author: Isis Lovecruft <isis(a)patternsinthevoid.net>
Date: Mon Aug 27 04:50:54 2012 +0000
Changed the ooni/lib structure to use gitsubmodules so that OONI users do not
accidentally git-clone broken or incompatible upstreams. Each submodule has
it's own .git with both hellais' and my forks configured, though each
submodule is also configured with a special HEAD state so that unneeded files
are not downloaded from upstream (this seems better than git-/hg- cloning an
unknown version of a repo and copying out the files we do want).
I still need to update the ooni-probe imports to reflect the slight directory
structure change. Also, I rm'd the Makefile. Now, new OONI users should do a
"git submodule init && git submodule update"...I'll probably write a script
for it. I will add documentation for what to do with committed changes in
submodule directories, so that OONI devs can make sure that users get the
right versions.
---
.gitmodules | 9 ++
ooni/lib/Makefile | 30 ----
ooni/lib/txscapy | 1 +
ooni/lib/txscapy.py | 363 -------------------------------------------------
ooni/lib/txtorcon | 1 +
ooni/lib/txtraceroute | 1 +
6 files changed, 12 insertions(+), 393 deletions(-)
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..07a4c56
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,9 @@
+[submodule "ooni/lib/txscapy"]
+ path = ooni/lib/txscapy
+ url = git://github.com/hellais/txscapy.git
+[submodule "ooni/lib/txtraceroute"]
+ path = ooni/lib/txtraceroute
+ url = git://github.com/hellais/txtraceroute.git
+[submodule "ooni/lib/txtorcon"]
+ path = ooni/lib/txtorcon
+ url = git://github.com/meejah/txtorcon.git
diff --git a/ooni/lib/Makefile b/ooni/lib/Makefile
deleted file mode 100644
index 3b0c922..0000000
--- a/ooni/lib/Makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-all: txtorcon txtraceroute
-
-txtraceroute:
- echo "Processing dependency txtraceroute..."
- git clone https://github.com/hellais/txtraceroute.git txtraceroute.git
- mv txtraceroute.git/txtraceroute.py txtraceroute.py
- rm -rf txtraceroute.git
-
-txtorcon:
- echo "Processing dependency txtorcon..."
- git clone https://github.com/meejah/txtorcon.git txtorcon.git
- mv txtorcon.git/txtorcon txtorcon
- rm -rf txtorcon.git
-
-clean:
- rm -rf txtorcon
- rm -rf txtraceroute.py
-
-#txscapy:
-# echo "Processing dependency txscapy"
-# git clone https://github.com/hellais/txscapy.git txscapy.git
-# mv txscapy.git/txscapy.py txscapy.py
-# rm -rf txscapy.git
-
-#rfc3339:
-# echo "Processing RFC3339 dependency"
-# hg clone https://bitbucket.org/henry/rfc3339 rfc3339
-# mv rfc3339/rfc3339.py rfc3339.py
-# rm -rf rfc3339
-
diff --git a/ooni/lib/txscapy b/ooni/lib/txscapy
new file mode 160000
index 0000000..19fb281
--- /dev/null
+++ b/ooni/lib/txscapy
@@ -0,0 +1 @@
+Subproject commit 19fb28150c0b31f16a1ae2bc0aadeb6fd3c259bf
diff --git a/ooni/lib/txscapy.py b/ooni/lib/txscapy.py
deleted file mode 100644
index 8996f75..0000000
--- a/ooni/lib/txscapy.py
+++ /dev/null
@@ -1,363 +0,0 @@
-# -*- coding:utf8 -*-
-"""
- txscapy
- ******
- (c) 2012 Arturo Filastò
- a twisted wrapper for scapys send and receive functions.
-
- This software has been written to be part of OONI, the Open Observatory of
- Network Interference. More information on that here: http://ooni.nu/
-
-"""
-
-import struct
-import socket
-import os
-import sys
-import time
-
-from twisted.internet import protocol, base, fdesc, error, defer
-from twisted.internet import reactor, threads
-from twisted.python import log
-from zope.interface import implements
-
-from scapy.all import Gen
-from scapy.all import SetGen
-
-LINUX=sys.platform.startswith("linux")
-OPENBSD=sys.platform.startswith("openbsd")
-FREEBSD=sys.platform.startswith("freebsd")
-NETBSD=sys.platform.startswith("netbsd")
-DARWIN=sys.platform.startswith("darwin")
-SOLARIS=sys.platform.startswith("sunos")
-WINDOWS=sys.platform.startswith("win32")
-
-from scapy.all import RawPcapWriter, MTU, BasePacketList, conf
-class PcapWriter(RawPcapWriter):
- def __init__(self, filename, linktype=None, gz=False, endianness="",
- append=False, sync=False):
- RawPcapWriter.__init__(self, filename, linktype=None, gz=False,
- endianness="", append=False, sync=False)
- fdesc.setNonBlocking(self.f)
-
- def _write_header(self, pkt):
- if self.linktype == None:
- if type(pkt) is list or type(pkt) is tuple or isinstance(pkt, BasePacketList):
- pkt = pkt[0]
- try:
- self.linktype = conf.l2types[pkt.__class__]
- except KeyError:
- self.linktype = 1
- RawPcapWriter._write_header(self, pkt)
-
- def _write_packet(self, packet):
- sec = int(packet.time)
- usec = int(round((packet.time-sec)*1000000))
- s = str(packet)
- caplen = len(s)
- RawPcapWriter._write_packet(self, s, sec, usec, caplen, caplen)
-
-class ScapySocket(object):
- MTU = 1500
- def __init__(self, filter=None, iface=None, nofilter=None):
- from scapy.all import conf
- self.ssocket = conf.L3socket(filter=filter, iface=iface, nofilter=nofilter)
-
- def fileno(self):
- return self.ssocket.ins.fileno()
-
- def send(self, data):
- return self.ssocket.send(data)
-
- def recv(self):
- if FREEBSD or DARWIN:
- return self.ssocket.nonblock_recv()
- else:
- return self.ssocket.recv(self.MTU)
-
-class Scapy(object):
- """
- A twisted based wrapper for scapy send and receive functionality.
-
- It sends packets inside of a threadpool and receives packets using the
- libdnet receive non blocking file descriptor.
- """
- min = 2
- max = 6
- debug = True
- write_only_answers = False
- pcapwriter = None
- recv = False
- timeout = None
-
- def __init__(self, pkts=None, maxPacketSize=8192, reactor=None, filter=None,
- iface=None, nofilter=None, pcapfile=None, timeout=None, *args, **kw):
-
- self.timeout = timeout
- self.last_answer = None
- if self.debug:
- log.startLogging(sys.stdout)
-
- self.maxPacketSize = maxPacketSize
- if not reactor:
- from twisted.internet import reactor
-
- self._reactor = reactor
-
- if pkts:
- self._buildPacketQueues(pkts)
- self._buildSocket()
-
- self.cthreads = 0
- self.mthreads = 80
-
- self.running = False
- self.done = False
- self.finished = False
-
- import thread
- from twisted.python import threadpool
- self.threadID = thread.get_ident
- self.threadpool = threadpool.ThreadPool(self.min, self.max)
- self.startID = self._reactor.callWhenRunning(self._start)
-
- self.deferred = defer.Deferred()
-
- if pcapfile:
- self.pcapwriter = PcapWriter(pcapfile)
-
- def _buildSocket(self, filter=None, iface=None, nofilter=None):
- self.socket = ScapySocket(filter, iface, nofilter)
- if self.recv:
- self._reactor.addReader(self)
-
- def _buildPacketQueues(self, pkts):
- """
- Converts the list of packets to a Scapy generator and sets up all the
- necessary attributes for understanding if all the needed responses have
- been received.
- """
- if not isinstance(pkts, Gen):
- self.pkts = SetGen(pkts)
-
- self.outqueue = [p for p in pkts]
-
- self.total_count = len(self.outqueue)
- self.answer_count = 0
- self.out_count = 0
-
- self.hsent = {}
- for p in self.outqueue:
- h = p.hashret()
- if h in self.hsent:
- self.hsent[h].append(p)
- else:
- self.hsent[h] = [p]
-
-
- def gotAnswer(self, answer, question):
- """
- Got a packet that has been identified as an answer to one of the sent
- out packets.
-
- If the answer count matches the sent count the finish callback is
- fired.
-
- @param answer: the packet received on the wire.
-
- @param question: the sent packet that matches that response.
-
- """
-
- if self.pcapwriter and self.write_only_answers:
- self.pcapwriter.write(question)
- self.pcapwriter.write(answer)
- self.answer_count += 1
- self.last_answer = time.time()
-
- if self.answer_count >= self.total_count:
- print "Got all the answers I need"
- self.deferred.callback(None)
-
-
- def processAnswer(self, pkt, hlst):
- """
- Checks if the potential answer is in fact an answer to one of the
- matched sent packets. Uses the scapy .answers() function to verify
- this.
-
- @param pkt: The packet to be tested if is the answer to a sent packet.
-
- @param hlst: a list of packets that match the hash for an answer to
- pkt.
- """
- for i in range(len(hlst)):
- if pkt.answers(hlst[i]):
- self.gotAnswer(pkt, hlst[i])
-
- def fileno(self):
- """
- Returns a fileno for use by twisteds Reader.
- """
- return self.socket.fileno()
-
- def processPacket(self, pkt):
- """
- Override this method to process your packets.
-
- @param pkt: the packet that has been received.
- """
- #pkt.show()
-
-
- def doRead(self):
- """
- There is something to be read on the wire. Do all the processing on the
- received packet.
- """
- if self.timeout and (time.time() - self.last_answer) > self.timeout and\
- not self.outqueue:
- print "Timing out.."
- self.deferred.callback(None)
-
- pkt = self.socket.recv()
- if self.pcapwriter and not self.write_only_answers:
- self.pcapwriter.write(pkt)
- self.processPacket(pkt)
-
- h = pkt.hashret()
- if h in self.hsent:
- hlst = self.hsent[h]
- self.processAnswer(pkt, hlst)
-
- def logPrefix(self):
- """
- The prefix to be prepended in logging.
- """
- return "txScapy"
-
- def _start(self):
- """
- Start the twisted thread pool.
- """
- self.startID = None
- return self.start()
-
- def start(self):
- """
- Actually start the thread pool.
- """
- if not self.running:
- self.threadpool.start()
- self.shutdownID = self._reactor.addSystemEventTrigger(
- 'during', 'shutdown', self.finalClose)
- self.running = True
-
- def sendPkt(self, pkt):
- """
- Send a packet to the wire.
-
- @param pkt: The packet to be sent.
- """
- self.socket.send(pkt)
-
- def sr(self, pkts, filter=None, iface=None, nofilter=0, timeout=None, *args, **kw):
- """
- Wraps the scapy sr function.
-
- @param nofilter: put 1 to avoid use of bpf filters
-
- @param retry: if positive, how many times to resend unanswered packets
- if negative, how many times to retry when no more packets are
- answered (XXX to be implemented)
-
- @param timeout: how much time to wait after the last packet has
- been sent (XXX to be implemented)
-
- @param multi: whether to accept multiple answers for the same
- stimulus (XXX to be implemented)
-
- @param filter: provide a BPF filter
- @param iface: listen answers only on the given interface
- """
- self.timeout = timeout
- self.recv = True
- self._sendrcv(pkts, filter=filter, iface=iface, nofilter=nofilter)
-
- def send(self, pkts, filter=None, iface=None, nofilter=0, *args, **kw):
- """
- Wraps the scapy send function. Its the same as send and receive, except
- it does not receive. Who would have ever guessed? ;)
-
- @param nofilter: put 1 to avoid use of bpf filters
-
- @param retry: if positive, how many times to resend unanswered packets
- if negative, how many times to retry when no more packets are
- answered (XXX to be implemented)
-
- @param timeout: how much time to wait after the last packet has
- been sent (XXX to be implemented)
-
- @param multi: whether to accept multiple answers for the same
- stimulus (XXX to be implemented)
-
- @param filter: provide a BPF filter
- @param iface: listen answers only on the given interface
- """
- self.recv = False
- self._sendrcv(pkts, filter=filter, iface=iface, nofilter=nofilter)
-
- def _sendrcv(self, pkts, filter=None, iface=None, nofilter=0):
- self._buildSocket(filter, iface, nofilter)
- self._buildPacketQueues(pkts)
- if not self.last_answer:
- self.last_answer = time.time()
-
- def sent(cb):
- if self.cthreads < self.mthreads and not self.done:
- pkt = None
- try:
- pkt = self.outqueue.pop()
- except:
- self.done = True
- if not self.recv:
- self.deferred.callback(None)
- return
- d = threads.deferToThreadPool(reactor, self.threadpool,
- self.sendPkt, pkt)
- d.addCallback(sent)
- return d
-
- for x in range(self.mthreads):
- try:
- pkt = self.outqueue.pop()
- except:
- self.done = True
- return
- if self.cthreads >= self.mthreads and self.done:
- return
- d = threads.deferToThreadPool(reactor, self.threadpool,
- self.sendPkt, pkt)
- d.addCallback(sent)
- return d
-
- def connectionLost(self, why):
- pass
-
- def finalClose(self):
- """
- Clean all the thread related stuff up.
- """
- self.shutdownID = None
- self.threadpool.stop()
- self.running = False
-
-def txsr(*args, **kw):
- tr = Scapy(*args, **kw)
- tr.sr(*args, **kw)
- return tr.deferred
-
-def txsend(*arg, **kw):
- tr = Scapy(*arg, **kw)
- tr.send(*arg, **kw)
- return tr.deferred
diff --git a/ooni/lib/txtorcon b/ooni/lib/txtorcon
new file mode 160000
index 0000000..ac791b4
--- /dev/null
+++ b/ooni/lib/txtorcon
@@ -0,0 +1 @@
+Subproject commit ac791b4ddfc29a2dd29a7044f34c3394df38653d
diff --git a/ooni/lib/txtraceroute b/ooni/lib/txtraceroute
new file mode 160000
index 0000000..067a260
--- /dev/null
+++ b/ooni/lib/txtraceroute
@@ -0,0 +1 @@
+Subproject commit 067a2609390e77bf9187275638cf8786efef7e13
1
0
commit 14ade9b22b2d91dc3c85a7d246c76cc6bc935d22
Author: Arturo Filastò <hellais(a)torproject.org>
Date: Thu Aug 2 17:42:43 2012 +0200
* Fix some bugs in Daphn3
* Add more details to Test interface
* Remove dead code in Reporting system
* Make some changes to bridget
---
ooni/ooniprobe.py | 2 +-
ooni/plugoo/reports.py | 13 ++++++-------
2 files changed, 7 insertions(+), 8 deletions(-)
diff --git a/ooni/ooniprobe.py b/ooni/ooniprobe.py
index 3b48339..7e9eecc 100755
--- a/ooni/ooniprobe.py
+++ b/ooni/ooniprobe.py
@@ -84,7 +84,7 @@ def runTest(test, options, global_options, reactor=reactor):
return
if test.ended:
- print "Ending prematurely"
+ print "Ending because it's ended"
return
wgen = work.WorkGenerator(test,
diff --git a/ooni/plugoo/reports.py b/ooni/plugoo/reports.py
index eb2cf4f..a6b0ac9 100644
--- a/ooni/plugoo/reports.py
+++ b/ooni/plugoo/reports.py
@@ -4,7 +4,11 @@ import os
import yaml
import itertools
+<<<<<<< HEAD
import log
+=======
+from ooni.utils import log, date, net
+>>>>>>> * Fix some bugs in Daphn3
class Report:
"""This is the ooni-probe reporting mechanism. It allows
@@ -81,13 +85,8 @@ class Report:
"""
This reports to a file in YAML format
"""
- if not file:
- file = self.file
- try:
- with open(file, mode) as f:
- f.write(data)
- except Exception, e:
- raise e
+ with open(self.file, 'a+') as f:
+ f.write(data)
def send_report(self, data, type):
"""
1
0

[ooni-probe/master] Updating the ooni/lib structure and git submodules for imports, and I'm trying
by isis@torproject.org 13 Sep '12
by isis@torproject.org 13 Sep '12
13 Sep '12
commit 174cef2f7f9bfb395fe4753280a881ca5950b504
Author: Isis Lovecruft <isis(a)torproject.org>
Date: Tue Aug 28 12:02:44 2012 +0000
Updating the ooni/lib structure and git submodules for imports, and I'm trying
to keep the syntax the same. Updated the README with info on dev interaction
with and user cloning of submodules.
---
README.md | 22 ++++++++++++++--------
ooni/lib/__init__.py | 41 ++++++++++++++++++++++++++++++++++++-----
ooni/lib/txtorcon | 2 +-
3 files changed, 51 insertions(+), 14 deletions(-)
diff --git a/README.md b/README.md
index b39cb2b..7d6e37a 100644
--- a/README.md
+++ b/README.md
@@ -6,27 +6,33 @@
OONI, the Open Observatory of Network Interference, is a global observation
network which aims is to collect high quality data using open methodologies,
using Free and Open Source Software (FL/OSS) to share observations and data
-about the various types, methods, and amounts of network tampering in the world.
+about the various types, methods, and amounts of network tampering in the
+world.
# Let's get started with this already!
-To run OONI-probe without having to install it you must tell python that it can
-import modules from the root of ooni-probe.
+To run OONI-probe without having to install it you must tell python that it
+can import modules from the root of ooni-probe, as well as initialize the
+included submodules.
-You must therefore run from the root of the repo:
+From the root directory of the repo (.../ooni-probe/), initialize the submodules by doing:
- export PYTHONPATH=$PYTHONPATH:`pwd`
+ $ git submodule init && git submodule update
+
+Next, you will need to tell Python that OONI is part of its path:
+
+ $ export PYTHONPATH=$PYTHONPATH:`pwd`
Then to see what tests are available:
- cd ooni
- python ooniprobe.py
+ $ cd ooni
+ $ python ooniprobe.py
If you see some errors see INSTALL to install the missing dependencies.
To list the help for a specific test:
- python ooniprobe.py httpt --help
+ $ python ooniprobe.py httpt --help
# More details
diff --git a/ooni/lib/__init__.py b/ooni/lib/__init__.py
index fac7035..0fd36c5 100644
--- a/ooni/lib/__init__.py
+++ b/ooni/lib/__init__.py
@@ -1,9 +1,40 @@
+import pkgutil
import sys
-import os
+from os import listdir, path
-pwd = os.path.dirname(__file__)
-#child_path = os.path.normpath(os.path.join(pwd, '..'))
-#sys.path.append(child_path)
-sys.path.append(pwd)
+__all__ = ['txtorcon', 'txscapy', 'txtraceroute']
+__sub_modules__ = [ ]
+def callback(arg, directory, files):
+ for file in listdir(directory):
+ fullpath = path.abspath(file)
+ if path.isdir(fullpath) and not path.islink(fullpath):
+ __sub_modules__.append(fullpath)
+ sys.path.append(fullpath)
+
+path.walk(".", callback, None)
+
+def load_submodules(init, list):
+ for subdir in list:
+ contents=[x for x in pkgutil.iter_modules(path=subdir,
+ prefix='ooni.lib.')]
+ for loader, module_name, ispkg in contents:
+ init_dot_module = init + "." + module_name
+ if init_dot_module in sys.modules:
+ module = sys.modules[module_name]
+ else:
+ if module_name in __all__:
+ grep = loader.find_module(module_name)
+ module = grep.load_module(module_name)
+ else:
+ module = None
+
+ if module is not None:
+ globals()[module_name] = module
+
+load_submodules(__name__, __sub_modules__)
+
+print "system paths are: %s" % sys.path
+print "globals are: %s" % globals()
+print "system modules are: %s" % sys.modules
diff --git a/ooni/lib/txtorcon b/ooni/lib/txtorcon
index ac791b4..def1551 160000
--- a/ooni/lib/txtorcon
+++ b/ooni/lib/txtorcon
@@ -1 +1 @@
-Subproject commit ac791b4ddfc29a2dd29a7044f34c3394df38653d
+Subproject commit def155177f4ba6fd0728922e5b6f3c0066006a94
1
0

[ooni-probe/master] Submodules are working, without modification to any of the old import
by isis@torproject.org 13 Sep '12
by isis@torproject.org 13 Sep '12
13 Sep '12
commit 1dc7a6966d1e4ec69f6bab4667384e583cf65636
Author: Isis Lovecruft <isis(a)torproject.org>
Date: Tue Aug 28 12:58:42 2012 +0000
Submodules are working, without modification to any of the old import
statements. To initialize them, do "$ git submodules init && git submodules
update".
---
TODO | 26 ++++++++++++--------------
1 files changed, 12 insertions(+), 14 deletions(-)
diff --git a/TODO b/TODO
index 8cc5b90..7f532fd 100644
--- a/TODO
+++ b/TODO
@@ -15,20 +15,6 @@ It should respect the design goals of the new ooni-probe model.
* All the parts related to HTTP and Squid (old/ooni/http.py)
effort: low, skill: medium
-* All the captive portal detection tests (old/ooni/http.py
- and old/ooni/dnsooni.py)
-effort: low, skill: low
- - The captiveportal test is a port of the old code, plus
- a couple new methods for testing.
-
-* All the DNS censorship detection tests (old/ooni/dnsooni.py)
-effort: medium, skill: medium
- - The dnstamper test fulfills this requirement, although
- there are several improvements which could be made, namely
- figuring out if there is a pattern to the reverse resolved
- names and parsing them in some manner to determine if that
- server is authorized to serve the requested page.
-
* Misc scripts to detect censorship that are not written in any
version of OONI (old/ooni/plugins/old_stuff_to_convert/)
effort: low-medium, skill: low-medium
@@ -45,3 +31,15 @@ or that we haven't yet figured out how they should work.
* Design and implement the Network Node and the Code Exec node classes
+New things to test
+------------------
+
+Please check that the submodules are working correctly. From ../ooni-probe/,
+do:
+
+$ git submodules init && git submodules update
+
+Make sure that they clone correctly, and run a few ooni tests to make sure
+the import statements haven't broken.
+
+Write unittests for *all of the things*. Can anyone suggest a good framework?
\ No newline at end of file
1
0
commit 62956ebab7779c1b61ce3d6e8ac750552fd1c988
Merge: 9c5d5d4 df76264
Author: Isis Lovecruft <isis(a)torproject.org>
Date: Thu Sep 13 13:01:44 2012 +0000
Merge branch 'bridget-twisted'
ooni/assets/bridgetests.txt | 8 +-
ooni/ooniprobe.py | 14 +-
ooni/plugins/bridget.py | 465 +++++++++++++++++++++++++++++++++++++------
ooni/plugins/domclass.py | 3 +-
ooni/plugoo/tests.py | 17 +-
ooni/utils/log.py | 116 ++++++++---
6 files changed, 522 insertions(+), 101 deletions(-)
diff --cc ooni/plugoo/tests.py
index 4be0b62,a827093..19d42b2
--- a/ooni/plugoo/tests.py
+++ b/ooni/plugoo/tests.py
@@@ -5,11 -5,14 +5,12 @@@ from zope.interface import Interface, A
import logging
import itertools
from twisted.internet import reactor, defer, threads
+ ## XXX why is this imported and not used?
from twisted.python import failure
-from ooni.utils import log
-from ooni.utils import date
-from ooni.plugoo import assets, work
-from ooni.plugoo.reports import Report
-from ooni.plugoo.interface import ITest
+from ooni import log
+from plugoo import assets, work
+from plugoo.reports import Report
class OONITest(object):
1
0
commit c09e7f9a98e7191332f39e6d70d7bb967c5e3e8a
Author: Isis Lovecruft <isis(a)torproject.org>
Date: Mon Sep 3 10:55:51 2012 +0000
BridgeT works again, but...
There seems to be a problem with it attempting to ControlPort to the same port
as one of my local non-slave Tors, even though TorConfig() is still using
random.randint(). I will investigate further after some much-needed
sl33pzorzings.
---
ooni/ooniprobe.log | 1 -
ooni/plugins/bridget.py | 53 +++++++++++++++++++++++++++++++++-------------
ooni/plugins/domclass.py | 3 +-
3 files changed, 40 insertions(+), 17 deletions(-)
diff --git a/ooni/ooniprobe.log b/ooni/ooniprobe.log
deleted file mode 100644
index 700e820..0000000
--- a/ooni/ooniprobe.log
+++ /dev/null
@@ -1 +0,0 @@
-2012-05-31 02:27:28,010 ooniprobe INFO Started ooni-probe
diff --git a/ooni/plugins/bridget.py b/ooni/plugins/bridget.py
index 22ff9a0..5562fb6 100644
--- a/ooni/plugins/bridget.py
+++ b/ooni/plugins/bridget.py
@@ -1,8 +1,17 @@
-"""
-This is a self genrated test created by scaffolding.py.
-you will need to fill it up with all your necessities.
-Safe hacking :).
-"""
+#!/usr/bin/env python
+# -*- encoding: utf-8 -*-
+#
+# +-----------+
+# | BRIDGET |
+# | +----------------------------------------------+
+# +--------| Use a slave Tor process to test making a Tor |
+# | connection to a list of bridges or relays. |
+# +----------------------------------------------+
+#
+# :authors: Arturo Filasto, Isis Lovecruft, Jacob Appelbaum
+# :licence: see included LICENSE
+# :version: 0.1.0-alpha
+
from zope.interface import implements
from twisted.python import usage
from twisted.plugin import IPlugin
@@ -21,34 +30,43 @@ class bridgetTest(OONITest):
implements(IPlugin, ITest)
shortName = "bridget"
- description = "bridget"
+ description = "Use a slave Tor process to test RELAY_EXTEND to bridges/relays"
requirements = None
options = bridgetArgs
blocking = False
def experiment(self, args):
- log.msg("Doing test")
- # What you return here gets handed as input to control
+ log.msg("BridgeT: initiating test ... ")
+
from ooni.lib.txtorcon import TorProtocolFactory, TorConfig, TorState
from ooni.lib.txtorcon import DEFAULT_VALUE, launch_tor
- def updates(prog, tag, summary):
- log.msg("%d%%: %s" % (prog, summary))
- return
+
+ reactor = self.reactor
def setup_failed(args):
log.msg("Setup Failed.")
report.update({'failed': args})
- return report
+ reactor.stop()
+ #return report
def setup_complete(proto):
- log.msg("Setup Complete.")
+ log.msg("Setup Complete: %s" % proto)
+ state = TorState(proto.tor_protocol)
+ state.post_bootstrap.addCallback(state_complete).addErrback(setup_failed)
report.update({'success': args})
- return report
+ #return report
+
+ def bootstrap(c):
+ conf = TorConfig(c)
+ conf.post_bootstrap.addCallback(setup_complete).addErrback(setup_failed)
+ log.msg("Slave Tor process connected, bootstrapping ...")
config = TorConfig()
import random
config.SocksPort = random.randint(1024, 2**16)
config.ControlPort = random.randint(1024, 2**16)
+ #config.SocksPort = 12345
+ #config.ControlPort = 12346
if 'bridge' in args:
config.UseBridges = 1
@@ -57,6 +75,11 @@ class bridgetTest(OONITest):
print config.create_torrc()
report = {'tor_config': config.config}
log.msg("Starting Tor")
+
+ def updates(prog, tag, summary):
+ log.msg("%d%%: %s" % (prog, summary))
+ #return
+
d = launch_tor(config, self.reactor, progress_updates=updates)
d.addCallback(setup_complete)
d.addErrback(setup_failed)
@@ -68,7 +91,7 @@ class bridgetTest(OONITest):
if self.local_options['bridges']:
assets.update({'bridge': Asset(self.local_options['bridges'])})
elif self.local_options['relays']:
- assets.update({'relay': Asset(self.local_options['relay'])})
+ assets.update({'relay': Asset(self.local_options['relays'])})
return assets
# We need to instantiate it otherwise getPlugins does not detect it
diff --git a/ooni/plugins/domclass.py b/ooni/plugins/domclass.py
index cdcd508..c24f2ce 100644
--- a/ooni/plugins/domclass.py
+++ b/ooni/plugins/domclass.py
@@ -1,4 +1,5 @@
-#
+#!/usr/bin/env python
+#-*- encoding: utf-8 -*-
#
# domclass
# ********
1
0

r25792: {website} Update website for Torbutton 1.4.6.2. (in website/trunk: include torbutton)
by Mike Perry 13 Sep '12
by Mike Perry 13 Sep '12
13 Sep '12
Author: mikeperry
Date: 2012-09-13 02:11:28 +0000 (Thu, 13 Sep 2012)
New Revision: 25792
Modified:
website/trunk/include/versions.wmi
website/trunk/torbutton/update.rdf
Log:
Update website for Torbutton 1.4.6.2.
Modified: website/trunk/include/versions.wmi
===================================================================
--- website/trunk/include/versions.wmi 2012-09-12 20:33:45 UTC (rev 25791)
+++ website/trunk/include/versions.wmi 2012-09-13 02:11:28 UTC (rev 25792)
@@ -109,8 +109,8 @@
<define-tag file-source-alpha whitespace=delete>tor-<version-alpha>.tar.gz</define-tag>
<define-tag package-source-alpha whitespace=delete>../dist/<file-source-alpha></define-tag>
-<define-tag version-torbutton whitespace=delete>1.4.6.1 (31 Aug 2012)</define-tag>
-<define-tag version-hash-torbutton whitespace=delete>sha1:fb1df9ce40c5b1282e701f2a96694b0bfbdc2687</define-tag>
+<define-tag version-torbutton whitespace=delete>1.4.6.2 (12 Sep 2012)</define-tag>
+<define-tag version-hash-torbutton whitespace=delete>sha1:1182fa2dcb095ad8054a218c41bc0a849b5b30ed</define-tag>
<define-tag version-torbutton-alpha whitespace=delete>None</define-tag>
<define-tag version-hash-torbutton-alpha whitespace=delete>sha1:c7323cd408ebee28ee23b6a91fe056d59de668f5</define-tag>
Modified: website/trunk/torbutton/update.rdf
===================================================================
(Binary files differ)
1
0
commit f2b625750d339daf1f5fec763295b623fc43502a
Author: Mike Perry <mikeperry-git(a)fscked.org>
Date: Wed Sep 12 14:46:03 2012 -0700
New translations from tx.
---
src/chrome/locale/de/torbutton.properties | 6 +++---
src/chrome/locale/el/torbutton.properties | 6 +++---
src/chrome/locale/es/torbutton.properties | 6 +++---
src/chrome/locale/it/torbutton.properties | 6 +++---
src/chrome/locale/ro/torbutton.properties | 2 +-
src/chrome/locale/sk/torbutton.properties | 22 +++++++++++-----------
src/chrome/locale/tr/torbutton.properties | 2 +-
7 files changed, 25 insertions(+), 25 deletions(-)
diff --git a/src/chrome/locale/de/torbutton.properties b/src/chrome/locale/de/torbutton.properties
index 0e7c48c..3b0c0a4 100644
--- a/src/chrome/locale/de/torbutton.properties
+++ b/src/chrome/locale/de/torbutton.properties
@@ -40,6 +40,6 @@ torbutton.popup.use_tbb = Es scheint, als wÃŒrdest du Torbutton zusammen mit Fre
torbutton.popup.pref_error = Torbutton kann Einstellungen in dem Tor-Browser Verzeichniss nicht aktualisieren.
torbutton.popup.permission_denied = Bitte setze entweder die Berechtigungen des Tor-Browser Verzeichnisses zurÃŒck, oder kopiere es an einen neuen Ort.
torbutton.popup.device_full = Es scheint als wÌrde die Disk voll sein. Bitte machen sie etwas Platz frei, oder bewegen sie den Tor-Browser auf ein neues GerÀt.
-torbutton.title.prompt_torbrowser = Important Torbutton Information
-torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
-torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+torbutton.title.prompt_torbrowser = Wichtige Torbutton Information
+torbutton.popup.prompt_torbrowser = Torbutton funktioniert jetzt anders als vorher: es kann nichtmehr abgeschaltet werden.\n\nWir haben diese Ãnderung vorgenommen, da es nicht sicher ist, Torbutton auch in einem Browser zu benutzen, der auch fÃŒr den Betrieb ohne Tor gedacht ist. Es gab zu viele Fehler, die wir sonst nicht hÀtten beheben können.\n\nWenn Sie Firefox weiterhin normal benutzen möchten, sollten Sie Torbutton deinstallieren, und das Tor Browser Bundle runterladen. Die PrivatsphÀre-Einstellungen des Tor Browsers sind auÃerdem denen des normalen Firefox ÃŒberlegen, selbst wenn Firefox mit Torbutton benutzt wird.\n\nUm Torbutton zu entfernen, gehen Sie einfach auf Extras->Add-ons->Erweiterungen und klicken Sie auf Entfernen neben dem Torbutton.
+torbutton.popup.short_torbrowser = Wichtige Torbutton Information!\n\nTorbutton ist jetzt immer aktiviert.\n\nKlicken sie auf den Torbutton, um mehr Informationen zu erhalten.
diff --git a/src/chrome/locale/el/torbutton.properties b/src/chrome/locale/el/torbutton.properties
index 676e1a6..b8f9327 100644
--- a/src/chrome/locale/el/torbutton.properties
+++ b/src/chrome/locale/el/torbutton.properties
@@ -40,6 +40,6 @@ torbutton.popup.use_tbb = ΊαίΜεÏαι ÏÏι ÏÏηÏιΌοÏοιείÏε
torbutton.popup.pref_error = ΀ο Torbutton ΎεΜ ÎŒÏοÏεί Μα εΜηΌεÏÏÏει ÏÎ¹Ï ÏÏοÏιΌήÏÎµÎ¹Ï ÏÏοΜ καÏάλογο ÏοÏ
ÏÏοÏίλ ÏαÏÏοÏ
ΊÏ
λλοΌεÏÏηÏή Tor.
torbutton.popup.permission_denied = ΠαÏακαλοÏΌε είÏε Μα εÏαΜαÏÎÏεÏε ÏÎ¹Ï Î¬ÎŽÎµÎ¹ÎµÏ ÏοÏ
καÏαλÏγοÏ
ΊÏ
λλοΌεÏÏηÏή Tor είÏε Μα ÏοΜ αΜÏιγÏάÏεÏε Ïε Όια ΜÎα ÏοÏοΞεÏία.
torbutton.popup.device_full = ΠΎίÏÎºÎ¿Ï ÏαίΜεÏαι ÏÏι είΜαι γεΌάÏοÏ. ΠαÏακαλοÏΌε ελεÏ
ΞεÏÏÏÏε ÏÏÏο ÏÏοΜ ΎίÏκο ή ΌεÏακιΜήÏÏε ÏοΜ ΊÏ
λλοΌεÏÏηÏή Tor Ïε κάÏοιοΜ άλλο ΎίÏκο.
-torbutton.title.prompt_torbrowser = Important Torbutton Information
-torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
-torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+torbutton.title.prompt_torbrowser = ΣηΌαΜÏικÎÏ ÏληÏοÏοÏÎ¯ÎµÏ Î³Î¹Î± Ïο Torbutton
+torbutton.popup.prompt_torbrowser = ΀ο Torbutton λειÏοÏ
Ïγεί ΎιαÏοÏεÏικά, ÏÏÏα: ΎεΜ ÎŒÏοÏείÏε ÏλÎοΜ Μα Ïο αÏεΜεÏγοÏοιήÏεÏε\n\nÎ ÏοβήκαΌε Ïε αÏ
Ïή ÏηΜ αλλαγή ΎιÏÏι, ΎεΜ είΜαι αÏÏαλÎÏ ÎœÎ± ÏÏηÏιΌοÏοιείÏαι Ïο Torbutton ÎŒÎÏα αÏÏ ÎΜα ÏεÏιηγηÏή ιÏÏÎ¿Ï Î¿ οÏÎ¿Î¯Î¿Ï ÏÏηÏιΌεÏει και για εÏγαÏÎ¯ÎµÏ ÏÏÏÎ¯Ï ÏηΜ ÏÏήÏη Tor. ÎÎŒÏαΜίζοΜÏαΜ ΎιάÏοÏα ÏÏάλΌαÏα-bugs Ïα οÏοία ΎεΜ ÎŒÏοÏοÏÏαΌε Μα ΎιοÏΞÏÏοÏ
Όε.\n\nÎΜ ΞÎλεÏε Μα εΟακολοÏ
ΞήÏεÏε Μα ÏÏηÏιΌοÏοιείÏε ÏοΜ Firefox καΜοΜικά, Ξα ÏÏÎÏει Μα εγκαÏαÏÏήÏεÏε Ïο Torbutton και Μα κάΜεÏε λήÏη ÏοÏ
ΠακÎÏοÏ
ΊÏ
λλοΌεÏÏηÏή Tor. Îι ιΎιÏÏηÏÎµÏ Î¹ÎŽÎ¹ÏÏικÏÏηÏÎ±Ï ÏοÏ
ΠεÏιηγηÏή Tor είΜαÎ
¹ αΜÏÏεÏÎµÏ Î±ÏÏ ÎµÎºÎµÎ¯ÎœÎµÏ ÏοÏ
αÏÎ»Î¿Ï Firefox, ακÏΌη και ÏÏηΜ ÏεÏίÏÏÏÏη ÏοÏ
ο Firefox ÏÏηÏιΌοÏοιείÏαι Όαζί Όε Ïο Torbutton.\n\nÎια Μα αÏοΌακÏÏΜεÏε Ïο Torbutton, ÏηγαίΜεÏε ÎÏγαλεία->Î ÏÏÏΞεÏα->Extensions και ÏαÏήÏÏε Ïο ÏλήκÏÏο ÎÏοΌάκÏÏ
ΜÏη ÏοÏ
βÏίÏκεÏαι ΎίÏλα αÏÏ Ïο Torbutton.
+torbutton.popup.short_torbrowser = ΣηΌαΜÏική ΠληÏοÏοÏία για Ïο Torbutton\n\n΀ο Torbutton είΜαι ÏÏÏα ÏÏ
ΜεÏÏÏ ÎµÎœÎµÏγοÏοιηΌÎΜο.\n\nÎια ÏεÏιÏÏÏÏεÏÎµÏ ÏληÏοÏοÏίεÏ, κάΜεÏε κλικ ÏÏο Torbutton.
diff --git a/src/chrome/locale/es/torbutton.properties b/src/chrome/locale/es/torbutton.properties
index 02cfb71..e647c77 100644
--- a/src/chrome/locale/es/torbutton.properties
+++ b/src/chrome/locale/es/torbutton.properties
@@ -40,6 +40,6 @@ torbutton.popup.use_tbb = Parece que está usando Torbutton con Firefox, lo cuá
torbutton.popup.pref_error = Torbutton no puede actualizar las preferencias en el directorio de perfiles del Navegador de Tor.
torbutton.popup.permission_denied = Por favor reinicie los permisos del directorio del Navegador Tor o cópielo a una nueva ubicación.
torbutton.popup.device_full = El disco parece estar lleno. Por favor libere espacio o mueva el Navegador Tor a un nuevo dispositivo.
-torbutton.title.prompt_torbrowser = Important Torbutton Information
-torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
-torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+torbutton.title.prompt_torbrowser = Información importante sobre Torbutton
+torbutton.popup.prompt_torbrowser = Torbutton funciona diferente ahora: ya no lo podrá apagar.\n\n\nCambiamos esto porque creemos que no es seguro utilizar Torbutton en un navegador que se utilice para navegar sin Tor. Hubieron demasiados fallos por esto que no podamos arreglar de otra manera.\n\nSi quiere seguir usando Firefox normalmente, deberÃa desinstalar Torbutton y descargar el Tor Browser Bundle. Las propiedades de privacidad de Tor Browser son superiores a las de Firefox, aún cuando éste se use con Torbutton.\n\nPara eliminar Torbutton. vaya a Herramientas->Complementos->Extensiones y haga clic en el botón Eliminar próximo a Torbutton.
+torbutton.popup.short_torbrowser = Información importante sobre Torbutton: Torbutton ahora siempre estará encendido. Haga clic en el Torbutton para más información
diff --git a/src/chrome/locale/it/torbutton.properties b/src/chrome/locale/it/torbutton.properties
index ba5b9d1..e7f37c8 100644
--- a/src/chrome/locale/it/torbutton.properties
+++ b/src/chrome/locale/it/torbutton.properties
@@ -40,6 +40,6 @@ torbutton.popup.use_tbb = Sembra che si stia usando Torbutton con Firefox, modal
torbutton.popup.pref_error = Torbutton non può aggiornare le preferenze nella pannello profilo del Tor Browser.
torbutton.popup.permission_denied = Si prega di reimpostare i permessi della cartella Tor Browser oppure di spostarla altrove.
torbutton.popup.device_full = Sembra che il disco sia pieno. Liberare spazio o spostare Tor Browser in un altro dispositivo.
-torbutton.title.prompt_torbrowser = Important Torbutton Information
-torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
-torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+torbutton.title.prompt_torbrowser = Informazioni importanti su Torbutton
+torbutton.popup.prompt_torbrowser = Torbutton ora funziona in modo diverso: non Ú possibile disabilitarlo.\n\nQuesto cambiamento Ú stato apportato poiché risulta poco sicuro utilizzare Torbutton in un browser utilizzato anche senza di esso. Ci sono alcuni problemi critici che non Ú possibile risolvere in un modo diverso da questo.\n\nSe si desidera utilizzare Firefox normalmente (senza, quindi, Torbutton) Ú necessario disinstallare manualmente Torbutton ed installare Tor Browser Bundle. Le impostazioni per la privacy, inoltre, sono superiori su Tor Browser rispetto ad una normale installazione di Firefox, anche quando quest'ultimo Ú utilizzato con Torbutton.\n\nPer rimuovere Torbutton, andare in Strumenti -> Componenti aggiuntivi -> Estensioni e cliccare sul pulsante Disinstalla per Torbutton.
+torbutton.popup.short_torbrowser = Informazioni importanti su Torbutton!\n\nTorbutton ora Ú sempre abilitato.\n\nClicca su Torbutton per ulteriori informazioni.
diff --git a/src/chrome/locale/ro/torbutton.properties b/src/chrome/locale/ro/torbutton.properties
index f41ae69..98d8b87 100644
--- a/src/chrome/locale/ro/torbutton.properties
+++ b/src/chrome/locale/ro/torbutton.properties
@@ -40,6 +40,6 @@ torbutton.popup.use_tbb = Se pare ca utilizati Torbutton împreunÄ cu Firefox,
torbutton.popup.pref_error = Torbutton nu poate actualiza preferintele in directorul de profile al Tor Bowser.
torbutton.popup.permission_denied = Va rugam fie sa resetati permisiunile directorului Tor Browser fie sa il copiati intr-o locatie noua.
torbutton.popup.device_full = Discul pare sa fie plin. Va rugam sa asigurati mai mult spatiu liber pe disc sau sa mutati Tor browser pe un nou dispozitiv.
-torbutton.title.prompt_torbrowser = Important Torbutton Information
+torbutton.title.prompt_torbrowser = Informatii importante Torbutton
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
diff --git a/src/chrome/locale/sk/torbutton.properties b/src/chrome/locale/sk/torbutton.properties
index 111b270..34dd9ce 100644
--- a/src/chrome/locale/sk/torbutton.properties
+++ b/src/chrome/locale/sk/torbutton.properties
@@ -1,5 +1,5 @@
-torbutton.button.tooltip.disabled = Zapnúť Tor
-torbutton.button.tooltip.enabled = Vypnúť Tor
+torbutton.button.tooltip.disabled = Povoliť Tor
+torbutton.button.tooltip.enabled = Zakázať Tor
torbutton.panel.tooltip.disabled = Kliknite pre zapnutie Tor
torbutton.panel.tooltip.enabled = Kliknite pre vypnutie Tor
torbutton.panel.plugins.disabled = Kliknite pre zapnutie rozÅ¡ÃrenÃ
@@ -12,8 +12,8 @@ torbutton.popup.plugin.warning = Torbutton blocked direct Tor load of plugin con
torbutton.popup.confirm_ca_certs = Torbutton Note: It appears you have no custom Certificate Authorities. Examining the Certificate Authority list is a slow operation and slows down Tor toggle. Would you like to disable the isolation of Certificate Authority certificates? (If you don't understand this, it is safe to click OK)
torbutton.popup.ff3.warning = Warning!\n\nTorbutton on Firefox 3 is known to leak your timezone and livemarks via Tor.\n\nDo you wish to continue anyway?
torbutton.popup.toggle.warning = You need to toggle Tor or restart for your settings to take effect.
-torbutton.popup.test.success = Tor proxy test successful!
-torbutton.popup.test.failure = Tor proxy test FAILED! Check your proxy and Polipo settings.
+torbutton.popup.test.success = Tor proxy test bol úspešnÜ!
+torbutton.popup.test.failure = Tor proxy test bol NEÃSPEÅ NÃ! Skontrolujte VaÅ¡e proxy a Polipo nastavenia.
torbutton.popup.test.confirm_toggle = The most recent Tor proxy test failed to use Tor.\n\nAre you sure you want to enable anyway?\n\nNote: If you have fixed the problem, you can rerun the test in the Torbutton Proxy Preferences window to eliminate this warning.
torbutton.popup.test.ff3_notice = Click OK to test Tor proxy settings. This test will happen in the background. Please be patient.
torbutton.panel.label.verified = Tor Verified
@@ -21,25 +21,25 @@ torbutton.popup.test.auto_failed = The automatic Tor proxy test failed to use To
torbutton.prefs.recommended = (odporúÄané)
torbutton.prefs.optional = (voliteğné)
torbutton.prefs.crucial = (kritické)
-torbutton.popup.external.title = Load external content?
+torbutton.popup.external.title = NaÄÃtaÅ¥ externÜ obsah?
torbutton.popup.external.app = An external application is needed to handle:\n\n
torbutton.popup.external.note = \n\nNOTE: External applications are NOT Tor safe by default and can unmask you!\n
torbutton.popup.external.suggest = \nIf this file is untrusted, you should either save it to view while offline or in a VM,\nor consider using a transparent Tor proxy like Tails LiveCD or torsocks.\n
-torbutton.popup.launch = Launch application
-torbutton.popup.cancel = Cancel
+torbutton.popup.launch = Spustiť aplikáciu
+torbutton.popup.cancel = Zrušiť
torbutton.popup.dontask = Always launch applications from now on
torbutton.popup.test.no_http_proxy = Tor proxy test: Local HTTP Proxy is unreachable. Is Polipo running properly?
torbutton.popup.captcha.title = Avoid Google Captchas?
torbutton.popup.captcha.ask = Torbutton detected a Google Captcha. Would you like to be redirected to another search engine for this query?
torbutton.popup.captcha.always = Always perform this action from now on
-torbutton.popup.redirect = Redirect
-torbutton.popup.no_redirect = Don't Redirect
+torbutton.popup.redirect = Presmerovať
+torbutton.popup.no_redirect = Nepresmerovať
torbutton.popup.prompted_language = To give you more privacy, Torbutton can request the English language version of web pages. This may cause web pages that you prefer to read in your native language to display in English instead.\n\nWould you like to request English language web pages for better privacy?
torbutton.popup.no_newnym = Torbutton cannot safely give you a new identity. It does not have access to the Tor Control Port.\n\nAre you running Tor Browser Bundle?
torbutton.popup.use_tbb = It appears that you are using Torbutton with Firefox, which is no longer a recommended safe configuration.\n\nInstead, we recommend that you obtain the latest Tor Browser Bundle by sending email to gettor(a)torproject.org or by downloading it at the following URL:
torbutton.popup.pref_error = Torbutton cannot update preferences in the Tor Browser profile directory.
torbutton.popup.permission_denied = Please either reset the permissions of the Tor Browser directory or copy it to a new location.
torbutton.popup.device_full = The disk appears to be full. Please free up space or move Tor Browser to a new device.
-torbutton.title.prompt_torbrowser = Important Torbutton Information
+torbutton.title.prompt_torbrowser = DÎleşité Torbutton Informácie
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
-torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+torbutton.popup.short_torbrowser = DÃŽleÅŸité Torbutton Informácie!\n\nTorbutton je odteraz povolenÜ.\n\nStlaÄte Torbutton pre viacej informáciÃ.
diff --git a/src/chrome/locale/tr/torbutton.properties b/src/chrome/locale/tr/torbutton.properties
index 340884c..e93d909 100644
--- a/src/chrome/locale/tr/torbutton.properties
+++ b/src/chrome/locale/tr/torbutton.properties
@@ -42,4 +42,4 @@ torbutton.popup.permission_denied = LÌtfen Tor Browser klasörÌnÌn izinlerini
torbutton.popup.device_full = Disk dolu gözÃŒkÃŒyor. LÃŒtfen diskte yer açın ya da Tor Browser i farklı bir konuma taÅıyın.
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
-torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+torbutton.popup.short_torbrowser = Ãnemli Torbutton bilgisi!\nTorbutton Åimdi tamamen etkinleÅtirildi.\nDaha fazla bilgi için Torbutton'a tıklayınız.
1
0

[metrics-tasks/master] Implement a multi-GeoIP database in Java (#6471).
by karsten@torproject.org 12 Sep '12
by karsten@torproject.org 12 Sep '12
12 Sep '12
commit 1ad8f400c93d1178d83a91a3a33e107a652e985e
Author: Karsten Loesing <karsten.loesing(a)gmx.net>
Date: Wed Sep 12 18:49:43 2012 -0400
Implement a multi-GeoIP database in Java (#6471).
---
task-6471/.gitignore | 2 +
task-6471/README | 3 +
task-6471/java/.gitignore | 5 +
task-6471/java/build.xml | 42 ++
.../java/src/org/torproject/task6471/Database.java | 70 +++
.../src/org/torproject/task6471/DatabaseImpl.java | 652 ++++++++++++++++++++
.../task6471/DatabasePerformanceExample.java | 146 +++++
.../src/org/torproject/task6471/DatabaseTest.java | 141 +++++
8 files changed, 1061 insertions(+), 0 deletions(-)
diff --git a/task-6471/.gitignore b/task-6471/.gitignore
new file mode 100644
index 0000000..6dbccb1
--- /dev/null
+++ b/task-6471/.gitignore
@@ -0,0 +1,2 @@
+data/
+
diff --git a/task-6471/README b/task-6471/README
new file mode 100644
index 0000000..bb1a572
--- /dev/null
+++ b/task-6471/README
@@ -0,0 +1,3 @@
+Task 6471 -- Designing a file format and Python/Java library for multiple
+ GeoIP or AS databases
+
diff --git a/task-6471/java/.gitignore b/task-6471/java/.gitignore
new file mode 100644
index 0000000..86b7b14
--- /dev/null
+++ b/task-6471/java/.gitignore
@@ -0,0 +1,5 @@
+.classpath
+.project
+lib/
+classes/
+
diff --git a/task-6471/java/build.xml b/task-6471/java/build.xml
new file mode 100644
index 0000000..9eb1223
--- /dev/null
+++ b/task-6471/java/build.xml
@@ -0,0 +1,42 @@
+<project default="test" name="task-6471" basedir=".">
+ <property name="sources" value="src"/>
+ <property name="classes" value="classes"/>
+ <property name="libs" value="lib"/>
+ <path id="classpath">
+ <pathelement path="${classes}"/>
+ <fileset dir="${libs}">
+ <include name="*.jar"/>
+ </fileset>
+ </path>
+ <target name="init">
+ <mkdir dir="${classes}"/>
+ </target>
+ <target name="compile"
+ depends="init">
+ <javac destdir="${classes}"
+ srcdir="${sources}"
+ source="1.5"
+ target="1.5"
+ debug="true"
+ deprecation="true"
+ optimize="false"
+ failonerror="true"
+ includeantruntime="false">
+ <classpath refid="classpath"/>
+ </javac>
+ </target>
+ <target name="test" depends="compile">
+ <junit fork="true"
+ haltonfailure="true"
+ maxmemory="1g"
+ printsummary="off">
+ <classpath refid="classpath"/>
+ <formatter type="plain" usefile="false"/>
+ <batchtest>
+ <fileset dir="${classes}"
+ includes="**/*Test.class"/>
+ </batchtest>
+ </junit>
+ </target>
+</project>
+
diff --git a/task-6471/java/src/org/torproject/task6471/Database.java b/task-6471/java/src/org/torproject/task6471/Database.java
new file mode 100644
index 0000000..447b3c2
--- /dev/null
+++ b/task-6471/java/src/org/torproject/task6471/Database.java
@@ -0,0 +1,70 @@
+/* Copyright 2012 The Tor Project */
+package org.torproject.task6471;
+
+/**
+ * Database storing multiple GeoIP databases and supporting efficient
+ * ip-to-country lookups in the most recent of those databases for any
+ * given date.
+ *
+ * A typical query for this GeoIP database is: "to which country was IPv4
+ * address 1.2.3.4 assigned on date 20120912?" This query is answered by
+ * looking at the entries from the most recent database published on or
+ * before 20120912. If the earliest known database was published after
+ * 20120912, the earliest known database is used to resolve the request.
+ */
+public interface Database {
+
+ /**
+ * Import the contents of one or more IP address assignments files
+ * published by the Regional Internet Registries. The file or files
+ * are expected to conform to the RIR Statistics Exchange Format.
+ * Only IPv4 address ranges are imported, whereas ASN and IPv6 lines are
+ * ignored. Only the country code, start address, and address range
+ * length fields are imported. (TODO Extend to IPv6 and find similar
+ * data source for ASN.)
+ *
+ * A typical entry from a RIR file is:
+ * "ripencc|FR|ipv4|2.0.0.0|1048576|20100712|allocated".
+ *
+ * It is important to note that all five registry files (AfriNIC, APNIC,
+ * ARIN, LACNIC, and RIPE NCC) published on a given day should be
+ * imported, or the missing address ranges will be considered as
+ * unassigned from that day until the next database publication day.
+ * (TODO We could be smarter here by checking that less than five
+ * registry files have been imported for the same day, or something.)
+ *
+ * @param path Path to a stats file or directory.
+ * @return True if importing the file or directory was successful,
+ * false otherwise.
+ */
+ public boolean importRegionalRegistryStatsFileOrDirectory(String path);
+
+ /**
+ * Save the combined databases in a format that can later be loaded much
+ * more efficiently than importing the original RIR files again.
+ *
+ * @param path Path to the combined database file.
+ * @return True if saving the combined database file was successful,
+ * false otherwise.
+ */
+ public boolean saveCombinedDatabases(String path);
+
+ /**
+ * Load a combined databases file.
+ *
+ * @param path Path to the combined database file.
+ * @return True if loading the combined database file was successful,
+ * false otherwise.
+ */
+ public boolean loadCombinedDatabases(String path);
+
+ /**
+ * Query the database for an IPv4 address and assignment date.
+ *
+ * @param address IPv4 address in dotted-quad notation.
+ * @param date Assignment date in format yyyymmdd.
+ * @return Assigned country code, or null if no assignment could be
+ * found.
+ */
+ public String lookupAddress(String address, String date);
+}
diff --git a/task-6471/java/src/org/torproject/task6471/DatabaseImpl.java b/task-6471/java/src/org/torproject/task6471/DatabaseImpl.java
new file mode 100644
index 0000000..43e5a95
--- /dev/null
+++ b/task-6471/java/src/org/torproject/task6471/DatabaseImpl.java
@@ -0,0 +1,652 @@
+/* Copyright 2012 The Tor Project */
+package org.torproject.task6471;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.SortedMap;
+import java.util.SortedSet;
+import java.util.Stack;
+import java.util.TimeZone;
+import java.util.TreeMap;
+import java.util.TreeSet;
+
+/**
+ * Implementation of database holding multiple GeoIP databases with
+ * special focus on lookup performance, import performance, and memory
+ * consumption (in that order).
+ *
+ * This implementation uses a single tree to store IP address and date
+ * ranges. Each tree element is stored under a long integer consisting of
+ * the start IPv4 address in the higher bits and the first database
+ * publication date containing that range in the lower bits. The tree
+ * element itself contains the end IPv4 address, last database publication
+ * date, last database index number (see explanation further below), and
+ * country code.
+ *
+ * Lookups for a given address and random date only require iterating
+ * backwards over ranges with start address smaller than or equaling the
+ * requested address and can terminate as soon as a range with a smaller
+ * end address is encountered.
+ *
+ * As a requirement for lookups to work correctly, address ranges may
+ * never overlap for different assignment periods. Similarly, date
+ * assignment ranges for a given address range may not overlap. These
+ * requirements make the import process somewhat more complex and
+ * time-consuming, which is a tradeoff for faster lookup performance.
+ *
+ * The purpose of storing the last database index number is to fix ranges
+ * that are contained in two or more databases, but that are missing in a
+ * database that was published between the others but imported after them.
+ * The database index number defines that the range is only valid for
+ * databases imported until a given database, not necessarily for
+ * databases importer later on. A separate repair run is necessary to
+ * check whether later imported databases require splitting a range into
+ * two or more sub ranges to correctly reflect that the range was not
+ * contained in those databases.
+ */
+public class DatabaseImpl implements Database {
+
+ /**
+ * Tree element containing an end IPv4 address, last database date,
+ * last database index, and country code. Start IPv4 address and first
+ * database date are encoded in the key under which the element is
+ * stored.
+ */
+ private static class TreeElement {
+ private long endAddress;
+ private int lastDbDate;
+ private int lastKnownDbIndex;
+ private String countryCode;
+ TreeElement(long endAddress, int lastDbDate, int lastKnownDbIndex,
+ String countryCode) {
+ this.endAddress = endAddress;
+ this.lastDbDate = lastDbDate;
+ this.lastKnownDbIndex = lastKnownDbIndex;
+ this.countryCode = countryCode;
+ }
+ }
+
+ /**
+ * IPv4 address and date ranges, ordered backwards by start address and
+ * first database date.
+ */
+ private SortedMap<Long, TreeElement> ranges =
+ new TreeMap<Long, TreeElement>(Collections.reverseOrder());
+
+ /**
+ * Return number of contained ranges.
+ */
+ int getNumberOfElements() {
+ return this.ranges.size();
+ }
+
+ /**
+ * Database dates ordered from oldest to youngest.
+ */
+ private SortedSet<Integer> databaseDates = new TreeSet<Integer>();
+
+ /**
+ * Ordered list of database dates to find out their indexes.
+ */
+ private List<Integer> databaseIndexes = new ArrayList<Integer>();
+
+ /**
+ * Parse one or more stats files.
+ */
+ public boolean importRegionalRegistryStatsFileOrDirectory(String path) {
+ boolean allImportsSuccessful = true;
+ Stack<File> files = new Stack<File>();
+ files.add(new File(path));
+ while (!files.isEmpty()) {
+ File file = files.pop();
+ if (file.isDirectory()) {
+ files.addAll(Arrays.asList(file.listFiles()));
+ } else if (file.getName().endsWith(".md5") ||
+ file.getName().endsWith(".md5.gz") ||
+ file.getName().endsWith(".asc") ||
+ file.getName().endsWith(".asc.gz")) {
+ System.err.println("Signature and digest files are not supported "
+ + "yet: '" + file.getAbsolutePath() + "'. Skipping.");
+ /* TODO Implement checking signatures/digests. */
+ } else if (file.getName().endsWith(".gz") ||
+ file.getName().endsWith(".bz2")) {
+ System.err.println("Parsing compressed files is not supported "
+ + "yet: '" + file.getAbsolutePath() + "'. Skipping.");
+ /* TODO Implement parsing compressed files. */
+ } else if (!this.importRegionalRegistryStatsFile(file)) {
+ allImportsSuccessful = false;
+ }
+ }
+ return allImportsSuccessful;
+ }
+
+ /**
+ * Simple and not very robust implementation of an RIR stats file
+ * parser.
+ */
+ private boolean importRegionalRegistryStatsFile(File file) {
+ try {
+ BufferedReader br = new BufferedReader(new FileReader(file));
+ String line;
+ String databaseDateString =
+ file.getName().substring(file.getName().length() - 8);
+ while ((line = br.readLine()) != null) {
+ if (line.startsWith("#") || line.length() == 0) {
+ /* Skip comment line. */
+ continue;
+ }
+ String[] parts = line.split("\\|");
+ if (parts[0].equals("2")) {
+ continue;
+ }
+ if (parts[1].equals("*")) {
+ /* Skip summary line. */
+ continue;
+ }
+ String type = parts[2];
+ if (type.equals("asn")) {
+ continue;
+ } else if (type.equals("ipv6")) {
+ continue;
+ }
+ String countryCode = parts[1].toLowerCase();
+ String startAddressString = parts[3];
+ long addresses = Long.parseLong(parts[4]);
+ this.addRange(databaseDateString, countryCode, startAddressString,
+ addresses);
+ }
+ br.close();
+ this.repairIndex();
+ } catch (IOException e) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Internal counters for import statistics.
+ */
+ private int rangeImports = 0, rangeImportsKeyLookups = 0;
+
+ /**
+ * Add a single address and date range to the database, which may
+ * require splitting up existing ranges.
+ *
+ * This method has default visibility and is not specified in the
+ * interface, because the caller needs to make sure that repairIndex()
+ * is called prior to any lookupAddress() calls. No further checks are
+ * performed that the tree is repaired before look up an address.
+ */
+ void addRange(String databaseDateString, String countryCode,
+ String startAddressString, long addresses) {
+
+ this.rangeImports++;
+ int databaseDate = convertDateStringToNumber(databaseDateString);
+ long startAddress = convertAddressStringToNumber(startAddressString);
+ long endAddress = startAddress + addresses - 1L;
+
+ /* Add new database date if it's not yet contained. */
+ if (!this.databaseDates.contains(databaseDate)) {
+ this.databaseDates.add(databaseDate);
+ this.databaseIndexes.add(databaseDate);
+ if (this.databaseIndexes.size() > 1) {
+ this.needToFixDatabase = true;
+ }
+ }
+
+ /* We might have to split existing ranges or the new range before
+ * adding it to the database, and we might have to remove existing
+ * ranges. We shouldn't mess with the tree directly while iterating
+ * over it, so let's for now only calculate what changes we want to
+ * make. */
+ SortedMap<Long, TreeElement> updateElements =
+ this.getUpdatesForAddingRange(databaseDate, countryCode,
+ startAddress, endAddress);
+
+ /* Apply updates. Elements with non-null values are added, elements
+ * with null values are removed. */
+ for (Map.Entry<Long, TreeElement> e : updateElements.entrySet()) {
+ if (e.getValue() == null) {
+ this.ranges.remove(e.getKey());
+ } else {
+ this.ranges.put(e.getKey(), e.getValue());
+ }
+ }
+ }
+
+ /**
+ * Calculate necessary changes to the tree to add a range.
+ */
+ private SortedMap<Long, TreeElement> getUpdatesForAddingRange(
+ int databaseDate, String countryCode, long startAddress,
+ long endAddress) {
+
+ /* Keep updates in a single tree where non-null values will later be
+ * added, possibly replacing existing elements, and null values will
+ * be removed from the tree. */
+ SortedMap<Long, TreeElement> updateElements =
+ new TreeMap<Long, TreeElement>();
+
+ /* Find out previous and next database, so that we can possibly merge
+ * ranges. */
+ int previousDatabaseDate =
+ this.databaseDates.headSet(databaseDate).isEmpty() ? -1 :
+ this.databaseDates.headSet(databaseDate).last();
+ int nextDatabaseDate =
+ this.databaseDates.tailSet(databaseDate + 1).isEmpty() ? -1 :
+ this.databaseDates.tailSet(databaseDate + 1).first();
+
+ /* Look up database index number of the range to be added. */
+ int dbIndex = this.databaseIndexes.indexOf(databaseDate);
+
+ /* Remember the address boundaries of the next (partial) range to be
+ * added. */
+ long nextStartAddress = startAddress, nextEndAddress = endAddress;
+ int nextFirstDbDate = databaseDate, nextLastDbDate = databaseDate;
+
+ /* Iterate backwards over the existing ranges, starting at the end
+ * address of the range to be added and at the last conceivable
+ * database publication date. */
+ for (Map.Entry<Long, TreeElement> e :
+ this.ranges.tailMap(((endAddress + 1L) << 16) - 1L).entrySet()) {
+ this.rangeImportsKeyLookups++;
+
+ /* Extract everything we need to know from the next existing range
+ * we're looking at. */
+ long eStartAddress = e.getKey() >> 16;
+ long eEndAddress = e.getValue().endAddress;
+ int eFirstDbDate = (int) (e.getKey() & ((1L << 16) - 1L));
+ int eLastDbDate = e.getValue().lastDbDate;
+ int eLastKnownDbIndex = e.getValue().lastKnownDbIndex;
+ String eCountryCode = e.getValue().countryCode;
+
+ /* If the next (partial) range starts after the current element
+ * ends, add the new range. */
+ if (nextStartAddress > eEndAddress &&
+ nextEndAddress >= startAddress) {
+ updateElements.put((nextStartAddress << 16) + nextFirstDbDate,
+ new TreeElement(nextEndAddress, nextLastDbDate, dbIndex,
+ countryCode));
+ nextEndAddress = nextStartAddress - 1L;
+ nextStartAddress = startAddress;
+ nextFirstDbDate = databaseDate;
+ nextLastDbDate = databaseDate;
+ }
+
+ /* If the next (partial) range still ends after the current element
+ * ends, add the new range. */
+ if (nextEndAddress > eEndAddress &&
+ nextEndAddress >= startAddress) {
+ updateElements.put(((eEndAddress + 1L) << 16) + databaseDate,
+ new TreeElement(nextEndAddress, databaseDate, dbIndex,
+ countryCode));
+ nextEndAddress = eEndAddress;
+ nextStartAddress = startAddress;
+ nextFirstDbDate = databaseDate;
+ nextLastDbDate = databaseDate;
+ }
+
+ /* If the existing range ends before the new range starts, we don't
+ * have to look at any more existing ranges. */
+ if (eEndAddress < startAddress) {
+ break;
+ }
+
+ /* Cut off any address range parts of the existing element that are
+ * not contained in the currently added range. First check whether
+ * the existing range ends after the newly added range. In that
+ * case cut off the overlapping part and store it as a new
+ * element.*/
+ if (eStartAddress <= endAddress && eEndAddress > endAddress) {
+ updateElements.put(((endAddress + 1L) << 16) + eFirstDbDate,
+ new TreeElement(eEndAddress, eLastDbDate, eLastKnownDbIndex,
+ eCountryCode));
+ updateElements.put((eStartAddress << 16) + eFirstDbDate,
+ new TreeElement(endAddress, eLastDbDate, eLastKnownDbIndex,
+ eCountryCode));
+ eEndAddress = endAddress;
+ }
+
+ /* Similarly, check whether the existing range starts before the
+ * newly added one. If so, cut off the overlapping part and store
+ * it as new element. */
+ if (eStartAddress < startAddress && eEndAddress >= startAddress) {
+ updateElements.put((eStartAddress << 16) + eFirstDbDate,
+ new TreeElement(startAddress - 1L, eLastDbDate,
+ eLastKnownDbIndex, eCountryCode));
+ updateElements.put((startAddress << 16) + eFirstDbDate,
+ new TreeElement(eEndAddress, eLastDbDate, eLastKnownDbIndex,
+ eCountryCode));
+ eStartAddress = startAddress;
+ }
+
+ /* Now we're sure the existing element doesn't exceed the newly
+ * added element, address-wise. */
+ nextStartAddress = eStartAddress;
+ nextEndAddress = eEndAddress;
+
+ /* If the range is already contained, maybe even with different
+ * country code, ignore it. */
+ if (eFirstDbDate <= databaseDate && eLastDbDate >= databaseDate) {
+ updateElements.clear();
+ return updateElements;
+ }
+
+ /* See if we can merge the new range with the previous or next
+ * range. If so, extend our database range and mark the existing
+ * element for deletion. */
+ if (eCountryCode.equals(countryCode)) {
+ if (eLastDbDate == previousDatabaseDate) {
+ nextFirstDbDate = eFirstDbDate;
+ updateElements.put((eStartAddress << 16) + eFirstDbDate, null);
+ } else if (eFirstDbDate == nextDatabaseDate) {
+ nextLastDbDate = eLastDbDate;
+ updateElements.put((eStartAddress << 16) + eFirstDbDate, null);
+ }
+ }
+ }
+
+ /* If there's still some part (or the whole?) address range left to
+ * add, add it now. */
+ while (nextEndAddress >= startAddress) {
+ updateElements.put((nextStartAddress << 16) + nextFirstDbDate,
+ new TreeElement(nextEndAddress, nextLastDbDate, dbIndex,
+ countryCode));
+ nextEndAddress = nextStartAddress - 1L;
+ nextStartAddress = startAddress;
+ nextFirstDbDate = databaseDate;
+ nextLastDbDate = databaseDate;
+ }
+
+ /* Return the tree updates that will add the given range. */
+ return updateElements;
+ }
+
+ /* Do we have to repair the tree? */
+ private boolean needToFixDatabase = false;
+
+ /**
+ * Repair tree by making sure that any range from a given database date
+ * to another is still valid when considering any other database that
+ * was imported later.
+ */
+ void repairIndex() {
+ if (!needToFixDatabase) {
+ return;
+ }
+ int maxDatabaseIndex = databaseIndexes.size() - 1;
+ if (maxDatabaseIndex < 1) {
+ return;
+ }
+ SortedMap<Long, TreeElement> updateElements =
+ new TreeMap<Long, TreeElement>();
+ for (Map.Entry<Long, TreeElement> e : this.ranges.entrySet()) {
+ if (e.getValue().lastKnownDbIndex < maxDatabaseIndex) {
+ int eFirstDbDate = (int) (e.getKey() & ((1L << 16) - 1L));
+ int eLastDbDate = e.getValue().lastDbDate;
+ List<Integer> splitAtDates = new ArrayList<Integer>();
+ for (int dbIndex = e.getValue().lastKnownDbIndex + 1;
+ dbIndex <= maxDatabaseIndex; dbIndex++) {
+ int dbDate = databaseIndexes.get(dbIndex);
+ if (eFirstDbDate < dbDate && eLastDbDate > dbDate) {
+ splitAtDates.add(dbDate);
+ }
+ }
+ if (splitAtDates.isEmpty()) {
+ e.getValue().lastKnownDbIndex = maxDatabaseIndex;
+ } else {
+ long eStartAddress = e.getKey() >> 16;
+ long eEndAddress = e.getValue().endAddress;
+ String eCountryCode = e.getValue().countryCode;
+ int start = eFirstDbDate, end = eFirstDbDate;
+ for (int cur : this.databaseDates.tailSet(eFirstDbDate)) {
+ if (cur > eLastDbDate) {
+ break;
+ }
+ if (splitAtDates.contains(cur)) {
+ if (start >= 0 && end >= 0) {
+ updateElements.put((eStartAddress << 16) + start,
+ new TreeElement(eEndAddress, end,
+ maxDatabaseIndex, eCountryCode));
+ start = end = -1;
+ }
+ } else if (start < 0) {
+ start = end = cur;
+ } else {
+ end = cur;
+ }
+ }
+ if (start >= 0 && end >= 0) {
+ updateElements.put((eStartAddress << 16) + start,
+ new TreeElement(eEndAddress, end,
+ maxDatabaseIndex, eCountryCode));
+ }
+ }
+ }
+ }
+ for (Map.Entry<Long, TreeElement> e : updateElements.entrySet()) {
+ this.ranges.put(e.getKey(), e.getValue());
+ }
+ this.needToFixDatabase = false;
+ }
+
+ /**
+ * Internal counters for lookup statistics.
+ */
+ private int addressLookups = 0, addressLookupsKeyLookups = 0;
+
+ /**
+ * Look up address and date by iterating backwards over possibly
+ * matching ranges.
+ */
+ public String lookupAddress(String addressString, String dateString) {
+ this.addressLookups++;
+
+ long address = convertAddressStringToNumber(addressString);
+ int date = convertDateStringToNumber(dateString);
+
+ if (this.databaseDates.isEmpty()) {
+ return null;
+ }
+
+ /* Look up which database we want. */
+ int databaseDate = this.databaseDates.headSet(date + 1).isEmpty() ?
+ this.databaseDates.first() :
+ this.databaseDates.headSet(date + 1).last();
+
+ /* Iterate backwards over the existing ranges, starting at the last
+ * possible date of the address to be found. */
+ for (Map.Entry<Long, TreeElement> e :
+ this.ranges.tailMap(((address + 1L) << 16) - 1L).entrySet()) {
+ this.addressLookupsKeyLookups++;
+
+ /* If either the end address or end date of the range we're looking
+ * at is smaller than the values we're looking for, we can be sure
+ * not to find it anymore. */
+ if (e.getValue().endAddress < address ||
+ e.getValue().lastDbDate < databaseDate) {
+ return null;
+ }
+
+ /* If the range starts at a later date, skip it and look at the next
+ * one. */
+ long startDate = e.getKey() & ((1L << 16) - 1L);
+ if (startDate > databaseDate) {
+ continue;
+ }
+
+ /* Both address and date ranges match, so return the assigned
+ * country code. */
+ return e.getValue().countryCode;
+ }
+
+ /* No ranges (left) to look at. We don't have what we were looking
+ * for. */
+ return null;
+ }
+
+ /* Helper: convert a dotted-quad formatted address string to its
+ * corresponding long integer number. */
+ static long convertAddressStringToNumber(String addressString) {
+ long address = 0;
+ String[] addressParts = addressString.split("\\.");
+ for (int i = 0; i < 4; i++) {
+ address += Long.parseLong(addressParts[i]) << ((3 - i) * 8);
+ }
+ return address;
+ }
+
+ /* Helper: convert a long integer address number to its corresponding
+ * dotted-quad formatted string. */
+ static String convertAddressNumberToString(long address) {
+ return "" + (address / 256 / 256 / 256) + "."
+ + ((address / 256 / 256) % 256) + "."
+ + ((address / 256) % 256) + "." + (address % 256);
+ }
+
+ /* Helper: date format parser/formatter. */
+ private static SimpleDateFormat dateFormat;
+ static {
+ dateFormat = new SimpleDateFormat("yyyyMMdd");
+ dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
+ }
+
+ /* Helper: convert date string in format yyyymmdd to integer containing
+ * days passed since 1970-01-01. */
+ static int convertDateStringToNumber(String dateString)
+ throws IllegalArgumentException {
+ try {
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
+ dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
+ return (int) (dateFormat.parse(dateString).getTime() / 86400000);
+ } catch (ParseException e) {
+ throw new IllegalArgumentException(e);
+ }
+ }
+
+ /* Helper: convert integer containing days passed since 1970-01-01 to
+ * date string in format yyyymmdd. */
+ static String convertDateNumberToString(int date) {
+ return dateFormat.format(((long) date) * 86400000);
+ }
+
+ /* Return a nicely formatted string summarizing database contents and
+ * usage statistics. */
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append(String.format("Database contains %d databases and %d "
+ + "combined address ranges.\n"
+ + "Performed %d address range imports requiring %d lookups.\n"
+ + "Performed %d address lookups requiring %d lookups.\n"
+ + "First 10 entries, in reverse order, are:",
+ this.databaseDates.size(), this.ranges.size(), rangeImports,
+ rangeImportsKeyLookups, addressLookups,
+ addressLookupsKeyLookups));
+ int entries = 10;
+ for (Map.Entry<Long, TreeElement> e : this.ranges.entrySet()) {
+ sb.append(String.format("%n %s %s %s %s %s %d",
+ convertAddressNumberToString(e.getKey() >> 16),
+ convertAddressNumberToString(e.getValue().endAddress),
+ e.getValue().countryCode,
+ convertDateNumberToString(
+ (int) (e.getKey() & ((1L << 16) - 1L))),
+ convertDateNumberToString(e.getValue().lastDbDate),
+ e.getValue().lastKnownDbIndex));
+ if (--entries <= 0) {
+ break;
+ }
+ }
+ return sb.toString();
+ }
+
+ /**
+ * Save the combined databases to disk.
+ */
+ public boolean saveCombinedDatabases(String path) {
+ try {
+
+ /* Create parent directories if necessary. */
+ File file = new File(path);
+ if (file.getParentFile() != null) {
+ file.getParentFile().mkdirs();
+ }
+
+ /* Start with writing all contained database dates to the file
+ * header. */
+ BufferedWriter bw = new BufferedWriter(new FileWriter(file));
+ for (int dbDate : this.databaseDates) {
+ bw.write("!" + convertDateNumberToString(dbDate) + "\n");
+ }
+
+ /* Next write all database ranges in the same order as they are
+ * currently contained in memory. The only information we can drop
+ * is the last known database index of each range, because we assume
+ * the tree is already in repaired state. */
+ for (Map.Entry<Long, TreeElement> e : this.ranges.entrySet()) {
+ bw.write(String.format("%s,%s,%s,%s,%s%n",
+ convertAddressNumberToString(e.getKey() >> 16),
+ convertAddressNumberToString(e.getValue().endAddress),
+ e.getValue().countryCode,
+ convertDateNumberToString(
+ (int) (e.getKey() & ((1L << 16) - 1L))),
+ convertDateNumberToString(e.getValue().lastDbDate)));
+ }
+ bw.close();
+ } catch (IOException e) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Load previously saved combined databases from disk. This code is not
+ * at all robust against external changes of the combined database file.
+ */
+ public boolean loadCombinedDatabases(String path) {
+ try {
+ File file = new File(path);
+ BufferedReader br = new BufferedReader(new FileReader(file));
+ String line;
+ int maxDbIndex = -1;
+ while ((line = br.readLine()) != null) {
+ if (line.startsWith("!")) {
+
+ /* First read file header containing database dates. */
+ int dbDate = convertDateStringToNumber(line.substring(1));
+ this.databaseDates.add(dbDate);
+ this.databaseIndexes.add(dbDate);
+ maxDbIndex = this.databaseIndexes.size() - 1;
+ } else {
+
+ /* Next read all ranges. Set last known database index for each
+ * range to the last database we read from the header, because
+ * the tree will immediately be in repaired state. */
+ String[] parts = line.split(",");
+ long startAddress = convertAddressStringToNumber(parts[0]);
+ long endAddress = convertAddressStringToNumber(parts[1]);
+ String countryCode = parts[2];
+ int firstDbDate = convertDateStringToNumber(parts[3]);
+ int lastDbDate = convertDateStringToNumber(parts[4]);
+ this.ranges.put((startAddress << 16) + firstDbDate,
+ new TreeElement(endAddress, lastDbDate, maxDbIndex,
+ countryCode));
+ }
+ }
+ br.close();
+ } catch (IOException e) {
+ return false;
+ }
+ return true;
+ }
+}
diff --git a/task-6471/java/src/org/torproject/task6471/DatabasePerformanceExample.java b/task-6471/java/src/org/torproject/task6471/DatabasePerformanceExample.java
new file mode 100644
index 0000000..3b273bc
--- /dev/null
+++ b/task-6471/java/src/org/torproject/task6471/DatabasePerformanceExample.java
@@ -0,0 +1,146 @@
+package org.torproject.task6471;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Random;
+import java.util.SortedMap;
+import java.util.SortedSet;
+import java.util.Stack;
+import java.util.TreeMap;
+import java.util.TreeSet;
+
+public class DatabasePerformanceExample {
+ public static void main(String[] args) {
+
+ System.out.print("Generating test cases... ");
+ long startMillis = System.currentTimeMillis();
+ List<Long> tests = new ArrayList<Long>();
+ SortedMap<Long, String> results = new TreeMap<Long, String>();
+ Random rnd = new Random(1L);
+ int startDate = DatabaseImpl.convertDateStringToNumber("20071001");
+ int endDate = DatabaseImpl.convertDateStringToNumber("20120930");
+ /* Skipping Dec 1--3, 2009, because the first available database from
+ * December 2009 was published on the 4th, and generating test cases
+ * was just too confusing when taking that into account. */
+ List<Integer> skipDates = new ArrayList<Integer>();
+ skipDates.add(DatabaseImpl.convertDateStringToNumber("20091201"));
+ skipDates.add(DatabaseImpl.convertDateStringToNumber("20091202"));
+ skipDates.add(DatabaseImpl.convertDateStringToNumber("20091203"));
+ for (int i = 0; i < 100000; i++) {
+ long testAddress = rnd.nextLong() & ((1L << 32) - 1L);
+ int testDate = startDate + rnd.nextInt(endDate - startDate);
+ if (skipDates.contains(testDate)) {
+ i--;
+ } else {
+ tests.add((testAddress << 16) + testDate);
+ }
+ }
+ Stack<File> stackedFiles = new Stack<File>();
+ stackedFiles.add(new File("../data"));
+ SortedSet<File> files = new TreeSet<File>();
+ while (!stackedFiles.isEmpty()) {
+ File file = stackedFiles.pop();
+ if (file.isDirectory()) {
+ stackedFiles.addAll(Arrays.asList(file.listFiles()));
+ } else if (!file.getName().endsWith(".md5") &&
+ !file.getName().endsWith(".md5.gz") &&
+ !file.getName().endsWith(".asc") &&
+ !file.getName().endsWith(".asc.gz")) {
+ files.add(file);
+ }
+ }
+ for (File file : files) {
+ String dbMonth = file.getName().substring(
+ file.getName().length() - 8);
+ dbMonth = dbMonth.substring(0, 6);
+ Database temp = new DatabaseImpl();
+ temp.importRegionalRegistryStatsFileOrDirectory(
+ file.getAbsolutePath());
+ for (long test : tests) {
+ int testDate = (int) (test & ((1 << 16) - 1));
+ String testMonth = DatabaseImpl.convertDateNumberToString(
+ testDate).substring(0, 6);
+ if (testMonth.equals(dbMonth)) {
+ String testAddressString = DatabaseImpl.
+ convertAddressNumberToString(test >> 16);
+ String testDateString = DatabaseImpl.convertDateNumberToString(
+ testDate);
+ String countryCode = temp.lookupAddress(testAddressString,
+ testDateString);
+ if (countryCode != null) {
+ results.put(test, countryCode);
+ }
+ }
+ }
+ }
+ long endMillis = System.currentTimeMillis();
+ System.out.println((endMillis - startMillis) + " millis.");
+
+ System.out.print("Importing files... ");
+ startMillis = endMillis;
+ Database database = new DatabaseImpl();
+ database.importRegionalRegistryStatsFileOrDirectory("../data");
+ endMillis = System.currentTimeMillis();
+ System.out.println((endMillis - startMillis) + " millis.");
+
+ System.out.print("Making test requests... ");
+ startMillis = endMillis;
+ int failures = 0;
+ for (long test : tests) {
+ String testAddress = DatabaseImpl.convertAddressNumberToString(
+ test >> 16);
+ String testDate = DatabaseImpl.convertDateNumberToString(
+ (int) (test & ((1 << 16) - 1)));
+ String expected = results.get(test);
+ String result = database.lookupAddress(testAddress, testDate);
+ if ((expected == null && result != null) ||
+ (expected != null && !expected.equals(result))) {
+ //System.out.println("Expected " + expected + " for "
+ // + testAddress + " " + testDate + ", but got " + result);
+ failures++;
+ }
+ }
+ endMillis = System.currentTimeMillis();
+ System.out.println((endMillis - startMillis) + " millis, " + failures
+ + " out of " + tests.size() + " tests failed.");
+
+ System.out.println(database);
+
+ System.out.print("Saving combined databases to disk... ");
+ startMillis = endMillis;
+ database.saveCombinedDatabases("geoip-2007-10-2012-09.csv");
+ endMillis = System.currentTimeMillis();
+ System.out.println((endMillis - startMillis) + " millis.");
+ startMillis = endMillis;
+
+ System.out.print("Loading combined databases from disk... ");
+ startMillis = endMillis;
+ database = new DatabaseImpl();
+ database.loadCombinedDatabases("geoip-2007-10-2012-09.csv");
+ endMillis = System.currentTimeMillis();
+ System.out.println((endMillis - startMillis) + " millis.");
+
+ System.out.print("Making a second round of test requests... ");
+ startMillis = endMillis;
+ failures = 0;
+ for (long test : tests) {
+ String testAddress = DatabaseImpl.convertAddressNumberToString(
+ test >> 16);
+ String testDate = DatabaseImpl.convertDateNumberToString(
+ (int) (test & ((1 << 16) - 1)));
+ String expected = results.get(test);
+ String result = database.lookupAddress(testAddress, testDate);
+ if ((expected == null && result != null) ||
+ (expected != null && !expected.equals(result))) {
+ //System.out.println("Expected " + expected + " for "
+ // + testAddress + " " + testDate + ", but got " + result);
+ failures++;
+ }
+ }
+ endMillis = System.currentTimeMillis();
+ System.out.println((endMillis - startMillis) + " millis, " + failures
+ + " out of " + tests.size() + " tests failed.");
+ }
+}
diff --git a/task-6471/java/src/org/torproject/task6471/DatabaseTest.java b/task-6471/java/src/org/torproject/task6471/DatabaseTest.java
new file mode 100644
index 0000000..8f90b3d
--- /dev/null
+++ b/task-6471/java/src/org/torproject/task6471/DatabaseTest.java
@@ -0,0 +1,141 @@
+/* Copyright 2012 The Tor Project */
+package org.torproject.task6471;
+
+import static org.junit.Assert.assertEquals;
+import org.junit.Test;
+
+/**
+ * Test the multi-GeoIP database implementation.
+ */
+public class DatabaseTest {
+
+ @Test()
+ public void testSingleIpRangeSingleDatebase() {
+ DatabaseImpl database = new DatabaseImpl();
+ database.addRange("20120901", "us", "3.0.0.0", 16777216);
+ database.repairIndex();
+ assertEquals(1, ((DatabaseImpl) database).getNumberOfElements());
+ assertEquals(null, database.lookupAddress("2.255.255.255",
+ "19920901"));
+ assertEquals(null, database.lookupAddress("2.255.255.255",
+ "20020901"));
+ assertEquals(null, database.lookupAddress("2.255.255.255",
+ "20120901"));
+ assertEquals(null, database.lookupAddress("2.255.255.255",
+ "20220901"));
+ assertEquals("us", database.lookupAddress("3.0.0.0", "19920901"));
+ assertEquals("us", database.lookupAddress("3.0.0.0", "20020901"));
+ assertEquals("us", database.lookupAddress("3.0.0.0", "20120901"));
+ assertEquals("us", database.lookupAddress("3.0.0.0", "20220901"));
+ assertEquals("us", database.lookupAddress("3.127.0.0", "19920901"));
+ assertEquals("us", database.lookupAddress("3.127.0.0", "20020901"));
+ assertEquals("us", database.lookupAddress("3.127.0.0", "20120901"));
+ assertEquals("us", database.lookupAddress("3.127.0.0", "20220901"));
+ assertEquals("us", database.lookupAddress("3.255.255.255",
+ "19920901"));
+ assertEquals("us", database.lookupAddress("3.255.255.255",
+ "20020901"));
+ assertEquals("us", database.lookupAddress("3.255.255.255",
+ "20120901"));
+ assertEquals("us", database.lookupAddress("3.255.255.255",
+ "20220901"));
+ assertEquals(null, database.lookupAddress("4.0.0.0", "19920901"));
+ assertEquals(null, database.lookupAddress("4.0.0.0", "20020901"));
+ assertEquals(null, database.lookupAddress("4.0.0.0", "20120901"));
+ assertEquals(null, database.lookupAddress("4.0.0.0", "20220901"));
+ }
+
+ @Test()
+ public void testTwoAdjacentIpRangesSingleDatabase() {
+ DatabaseImpl database = new DatabaseImpl();
+ database.addRange("20120901", "us", "3.0.0.0", 16777216);
+ database.addRange("20120901", "ca", "4.0.0.0", 16777216);
+ database.repairIndex();
+ assertEquals(2, ((DatabaseImpl) database).getNumberOfElements());
+ assertEquals(null, database.lookupAddress("2.255.255.255",
+ "20120901"));
+ assertEquals("us", database.lookupAddress("3.127.0.0", "20120901"));
+ assertEquals("us", database.lookupAddress("3.127.0.0", "20120901"));
+ assertEquals("us", database.lookupAddress("3.127.0.0", "20120901"));
+ assertEquals("ca", database.lookupAddress("4.127.0.0", "20120901"));
+ assertEquals("ca", database.lookupAddress("4.127.0.0", "20120901"));
+ assertEquals("ca", database.lookupAddress("4.127.0.0", "20120901"));
+ assertEquals(null, database.lookupAddress("5.0.0.0", "20120901"));
+ }
+
+ @Test()
+ public void testTwoNonAdjacentIpDateRangesSingleDatabase() {
+ DatabaseImpl database = new DatabaseImpl();
+ database.addRange("20120901", "us", "3.0.0.0", 16777216);
+ database.addRange("20120901", "ca", "6.0.0.0", 16777216);
+ database.repairIndex();
+ assertEquals(2, ((DatabaseImpl) database).getNumberOfElements());
+ assertEquals(null, database.lookupAddress("2.255.255.255", "20120901"));
+ assertEquals("us", database.lookupAddress("3.127.0.0", "20120901"));
+ assertEquals(null, database.lookupAddress("4.255.255.255", "20120901"));
+ assertEquals("ca", database.lookupAddress("6.127.0.0", "20120901"));
+ assertEquals(null, database.lookupAddress("7.0.0.0", "20120901"));
+ }
+
+ @Test()
+ public void testDuplicateImport() {
+ DatabaseImpl database = new DatabaseImpl();
+ database.addRange("20120901", "us", "3.0.0.0", 16777216);
+ database.addRange("20120901", "us", "3.0.0.0", 16777216);
+ database.repairIndex();
+ assertEquals(1, ((DatabaseImpl) database).getNumberOfElements());
+ assertEquals(null, database.lookupAddress("2.255.255.255", "20120901"));
+ assertEquals("us", database.lookupAddress("3.127.0.0", "20120901"));
+ assertEquals(null, database.lookupAddress("4.0.0.0", "20120901"));
+ }
+
+ @Test()
+ public void testDuplicateImportDifferentCountryCode() {
+ DatabaseImpl database = new DatabaseImpl();
+ database.addRange("20120901", "us", "3.0.0.0", 16777216);
+ database.addRange("20120901", "ca", "3.0.0.0", 16777216);
+ database.repairIndex();
+ assertEquals(1, ((DatabaseImpl) database).getNumberOfElements());
+ assertEquals("us", database.lookupAddress("3.127.0.0", "20120901"));
+ }
+
+ @Test()
+ public void testLeaveIpChangeUnchanged() {
+ DatabaseImpl database = new DatabaseImpl();
+ database.addRange("20120901", "us", "3.0.0.0", 16777216);
+ database.addRange("20121001", "us", "3.0.0.0", 16777216);
+ database.repairIndex();
+ assertEquals(1, ((DatabaseImpl) database).getNumberOfElements());
+ assertEquals("us", database.lookupAddress("3.127.0.0", "20120801"));
+ assertEquals("us", database.lookupAddress("3.127.0.0", "20120901"));
+ assertEquals("us", database.lookupAddress("3.127.0.0", "20121001"));
+ assertEquals("us", database.lookupAddress("3.127.0.0", "20121101"));
+ }
+
+ @Test()
+ public void testLeaveIpChangeUnchangedReverseOrder() {
+ DatabaseImpl database = new DatabaseImpl();
+ database.addRange("20121001", "us", "3.0.0.0", 16777216);
+ database.addRange("20120901", "us", "3.0.0.0", 16777216);
+ database.repairIndex();
+ assertEquals(1, ((DatabaseImpl) database).getNumberOfElements());
+ assertEquals("us", database.lookupAddress("3.127.0.0", "20120801"));
+ assertEquals("us", database.lookupAddress("3.127.0.0", "20120901"));
+ assertEquals("us", database.lookupAddress("3.127.0.0", "20121001"));
+ assertEquals("us", database.lookupAddress("3.127.0.0", "20121101"));
+ }
+
+ @Test()
+ public void testMissingIpRange() {
+ DatabaseImpl database = new DatabaseImpl();
+ database.addRange("20120901", "us", "3.0.0.0", 16777216);
+ database.addRange("20121101", "us", "3.0.0.0", 16777216);
+ database.addRange("20121001", "us", "6.0.0.0", 16777216);
+ database.repairIndex();
+ assertEquals(3, ((DatabaseImpl) database).getNumberOfElements());
+ assertEquals("us", database.lookupAddress("3.127.0.0", "20120801"));
+ assertEquals("us", database.lookupAddress("3.127.0.0", "20120901"));
+ assertEquals(null, database.lookupAddress("3.127.0.0", "20121001"));
+ assertEquals("us", database.lookupAddress("3.127.0.0", "20121101"));
+ }
+}
1
0

12 Sep '12
Author: mikeperry
Date: 2012-09-12 20:33:45 +0000 (Wed, 12 Sep 2012)
New Revision: 25791
Modified:
translation/trunk/projects/torbutton/po/ar/torbutton.dtd.po
translation/trunk/projects/torbutton/po/ar/torbutton.properties.po
translation/trunk/projects/torbutton/po/ca/torbutton.dtd.po
translation/trunk/projects/torbutton/po/ca/torbutton.properties.po
translation/trunk/projects/torbutton/po/cs/torbutton.dtd.po
translation/trunk/projects/torbutton/po/cs/torbutton.properties.po
translation/trunk/projects/torbutton/po/cy/torbutton.properties.po
translation/trunk/projects/torbutton/po/da/torbutton.dtd.po
translation/trunk/projects/torbutton/po/da/torbutton.properties.po
translation/trunk/projects/torbutton/po/de/torbutton.dtd.po
translation/trunk/projects/torbutton/po/de/torbutton.properties.po
translation/trunk/projects/torbutton/po/el/torbutton.dtd.po
translation/trunk/projects/torbutton/po/el/torbutton.properties.po
translation/trunk/projects/torbutton/po/eo/torbutton.dtd.po
translation/trunk/projects/torbutton/po/es/torbutton.dtd.po
translation/trunk/projects/torbutton/po/es/torbutton.properties.po
translation/trunk/projects/torbutton/po/et/torbutton.dtd.po
translation/trunk/projects/torbutton/po/et/torbutton.properties.po
translation/trunk/projects/torbutton/po/eu/torbutton.dtd.po
translation/trunk/projects/torbutton/po/eu/torbutton.properties.po
translation/trunk/projects/torbutton/po/fa/torbutton.dtd.po
translation/trunk/projects/torbutton/po/fa/torbutton.properties.po
translation/trunk/projects/torbutton/po/fi/torbutton.dtd.po
translation/trunk/projects/torbutton/po/fi/torbutton.properties.po
translation/trunk/projects/torbutton/po/fr/torbutton.dtd.po
translation/trunk/projects/torbutton/po/fr/torbutton.properties.po
translation/trunk/projects/torbutton/po/gu/torbutton.dtd.po
translation/trunk/projects/torbutton/po/gu/torbutton.properties.po
translation/trunk/projects/torbutton/po/he/torbutton.dtd.po
translation/trunk/projects/torbutton/po/he/torbutton.properties.po
translation/trunk/projects/torbutton/po/hi/torbutton.dtd.po
translation/trunk/projects/torbutton/po/hr/torbutton.dtd.po
translation/trunk/projects/torbutton/po/hr/torbutton.properties.po
translation/trunk/projects/torbutton/po/hu/torbutton.dtd.po
translation/trunk/projects/torbutton/po/hu/torbutton.properties.po
translation/trunk/projects/torbutton/po/id/torbutton.dtd.po
translation/trunk/projects/torbutton/po/id/torbutton.properties.po
translation/trunk/projects/torbutton/po/it/torbutton.dtd.po
translation/trunk/projects/torbutton/po/it/torbutton.properties.po
translation/trunk/projects/torbutton/po/ja/torbutton.dtd.po
translation/trunk/projects/torbutton/po/ja/torbutton.properties.po
translation/trunk/projects/torbutton/po/ko/torbutton.dtd.po
translation/trunk/projects/torbutton/po/ko/torbutton.properties.po
translation/trunk/projects/torbutton/po/lv/torbutton.properties.po
translation/trunk/projects/torbutton/po/my/torbutton.dtd.po
translation/trunk/projects/torbutton/po/my/torbutton.properties.po
translation/trunk/projects/torbutton/po/nb/torbutton.dtd.po
translation/trunk/projects/torbutton/po/nb/torbutton.properties.po
translation/trunk/projects/torbutton/po/nl/torbutton.dtd.po
translation/trunk/projects/torbutton/po/nl/torbutton.properties.po
translation/trunk/projects/torbutton/po/pl/torbutton.dtd.po
translation/trunk/projects/torbutton/po/pl/torbutton.properties.po
translation/trunk/projects/torbutton/po/pt/torbutton.dtd.po
translation/trunk/projects/torbutton/po/pt/torbutton.properties.po
translation/trunk/projects/torbutton/po/pt_BR/torbutton.dtd.po
translation/trunk/projects/torbutton/po/pt_BR/torbutton.properties.po
translation/trunk/projects/torbutton/po/ro/torbutton.dtd.po
translation/trunk/projects/torbutton/po/ro/torbutton.properties.po
translation/trunk/projects/torbutton/po/ru/torbutton.dtd.po
translation/trunk/projects/torbutton/po/ru/torbutton.properties.po
translation/trunk/projects/torbutton/po/sk/torbutton.properties.po
translation/trunk/projects/torbutton/po/sl/torbutton.dtd.po
translation/trunk/projects/torbutton/po/sl/torbutton.properties.po
translation/trunk/projects/torbutton/po/sr/torbutton.dtd.po
translation/trunk/projects/torbutton/po/sr/torbutton.properties.po
translation/trunk/projects/torbutton/po/sv/torbutton.dtd.po
translation/trunk/projects/torbutton/po/sv/torbutton.properties.po
translation/trunk/projects/torbutton/po/templates/torbutton.dtd.pot
translation/trunk/projects/torbutton/po/templates/torbutton.properties.pot
translation/trunk/projects/torbutton/po/th/torbutton.dtd.po
translation/trunk/projects/torbutton/po/tr/torbutton.dtd.po
translation/trunk/projects/torbutton/po/tr/torbutton.properties.po
translation/trunk/projects/torbutton/po/uk/torbutton.dtd.po
translation/trunk/projects/torbutton/po/uk/torbutton.properties.po
translation/trunk/projects/torbutton/po/vi/torbutton.dtd.po
translation/trunk/projects/torbutton/po/vi/torbutton.properties.po
translation/trunk/projects/torbutton/po/zh_CN/torbutton.dtd.po
translation/trunk/projects/torbutton/po/zh_CN/torbutton.properties.po
translation/trunk/projects/torbutton/po/zh_TW/torbutton.dtd.po
translation/trunk/projects/torbutton/po/zh_TW/torbutton.properties.po
Log:
New torbutton strings from tx.
Modified: translation/trunk/projects/torbutton/po/ar/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/ar/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/ar/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -9,16 +9,16 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:44+0000\n"
-"Last-Translator: Mohammed Babiker <sudanhacker(a)hotmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: ar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5\n"
+"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -622,6 +622,3 @@
#: torbutton.prefs.transparentTor
msgid "Transparent Torification (Requires custom transproxy or Tor router)"
msgstr "شفافية توريفكيشن (تحتاج موجه تور أو ترانسبوكسي مخصص)"
-
-#~ msgid "scroogle.org"
-#~ msgstr "scroogle.org"
Modified: translation/trunk/projects/torbutton/po/ar/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/ar/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/ar/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -9,16 +9,16 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:45+0000\n"
-"Last-Translator: Fadi Mansour <fadi.redeemer.mansour(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: ar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5\n"
+"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/ca/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/ca/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/ca/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -7,15 +7,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:44+0000\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/ca/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/ca/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/ca/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -7,15 +7,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-03-07 00:21+0000\n"
-"Last-Translator: danielnayach <daniel.nayach(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/cs/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/cs/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/cs/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -7,15 +7,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:44+0000\n"
-"Last-Translator: m4iler <Mailer01100001(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: cs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -615,6 +615,3 @@
#: torbutton.prefs.transparentTor
msgid "Transparent Torification (Requires custom transproxy or Tor router)"
msgstr ""
-
-#~ msgid "scroogle.org"
-#~ msgstr "scroogle.org"
Modified: translation/trunk/projects/torbutton/po/cs/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/cs/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/cs/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -7,15 +7,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:45+0000\n"
-"Last-Translator: m4iler <Mailer01100001(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: cs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/cy/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/cy/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/cy/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -6,8 +6,8 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:45+0000\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: cy\n"
@@ -15,7 +15,7 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != "
-"11) ? 2 : 3\n"
+"11) ? 2 : 3;\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/da/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/da/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/da/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -7,15 +7,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-04-20 22:07+0000\n"
-"Last-Translator: Aputsiaq Janussen <aputtu(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: da\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -628,6 +628,3 @@
msgid "Transparent Torification (Requires custom transproxy or Tor router)"
msgstr ""
"Gennemsigtig Torifikation (Kræver tilpasset transproxy eller Tor-router)"
-
-#~ msgid "scroogle.org"
-#~ msgstr "scroogle.org"
Modified: translation/trunk/projects/torbutton/po/da/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/da/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/da/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -7,15 +7,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-04-20 21:29+0000\n"
-"Last-Translator: Aputsiaq Janussen <aputtu(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: da\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/de/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/de/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/de/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -8,15 +8,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:44+0000\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-09-11 17:54+0000\n"
"Last-Translator: Sacro <Scion(a)T-Online.de>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -649,7 +649,7 @@
#: torbutton.prefs.engine4
msgid "startpage.com"
-msgstr ""
+msgstr "startpage.com"
#: torbutton.prefs.engine5
msgid "duckduckgo.com"
@@ -663,6 +663,3 @@
msgid "Transparent Torification (Requires custom transproxy or Tor router)"
msgstr ""
"Transparente Torification (Erfordert eigenen Transproxy oder Tor-Router)"
-
-#~ msgid "scroogle.org"
-#~ msgstr "scroogle.org"
Modified: translation/trunk/projects/torbutton/po/de/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/de/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/de/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -8,15 +8,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-03-12 10:12+0000\n"
-"Last-Translator: gerd56 <gerd56(a)aon.at>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-09-11 17:53+0000\n"
+"Last-Translator: Sacro <Scion(a)T-Online.de>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -336,7 +336,7 @@
#: torbutton.title.prompt_torbrowser
msgid "Important Torbutton Information"
-msgstr ""
+msgstr "Wichtige Torbutton Information"
#: torbutton.popup.prompt_torbrowser
msgid ""
@@ -354,6 +354,20 @@
"To remove Torbutton, go to Tools->Addons->Extensions and then click the "
"Remove button next to Torbutton."
msgstr ""
+"Torbutton funktioniert jetzt anders als vorher: es kann nichtmehr "
+"abgeschaltet werden.\n"
+"\n"
+"Wir haben diese Änderung vorgenommen, da es nicht sicher ist, Torbutton auch "
+"in einem Browser zu benutzen, der auch für den Betrieb ohne Tor gedacht ist. "
+"Es gab zu viele Fehler, die wir sonst nicht hätten beheben können.\n"
+"\n"
+"Wenn Sie Firefox weiterhin normal benutzen möchten, sollten Sie Torbutton "
+"deinstallieren, und das Tor Browser Bundle runterladen. Die Privatsphäre-"
+"Einstellungen des Tor Browsers sind außerdem denen des normalen Firefox "
+"überlegen, selbst wenn Firefox mit Torbutton benutzt wird.\n"
+"\n"
+"Um Torbutton zu entfernen, gehen Sie einfach auf Extras->Add-ons-"
+">Erweiterungen und klicken Sie auf Entfernen neben dem Torbutton."
#: torbutton.popup.short_torbrowser
msgid ""
@@ -363,3 +377,8 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+"Wichtige Torbutton Information!\n"
+"\n"
+"Torbutton ist jetzt immer aktiviert.\n"
+"\n"
+"Klicken sie auf den Torbutton, um mehr Informationen zu erhalten."
Modified: translation/trunk/projects/torbutton/po/el/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/el/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/el/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -9,15 +9,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-24 18:59+0000\n"
-"Last-Translator: Ioannis Stilianakos <stilia.johny(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: el\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -662,6 +662,3 @@
msgid "Transparent Torification (Requires custom transproxy or Tor router)"
msgstr ""
"Διαφανής Torification (Απαιτεί προσαρμοσμένο proxy ή Tor δρομολογητή)"
-
-#~ msgid "scroogle.org"
-#~ msgstr "scroogle.org"
Modified: translation/trunk/projects/torbutton/po/el/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/el/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/el/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -8,15 +8,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-04-22 17:13+0000\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-09-11 08:30+0000\n"
"Last-Translator: anvo <fragos.george(a)hotmail.com>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: el\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -341,7 +341,7 @@
#: torbutton.title.prompt_torbrowser
msgid "Important Torbutton Information"
-msgstr ""
+msgstr "Σημαντικές πληροφορίες για το Torbutton"
#: torbutton.popup.prompt_torbrowser
msgid ""
@@ -359,6 +359,22 @@
"To remove Torbutton, go to Tools->Addons->Extensions and then click the "
"Remove button next to Torbutton."
msgstr ""
+"Το Torbutton λειτουργεί διαφορετικά, τώρα: δεν μπορείτε πλέον να το "
+"απενεργοποιήσετε\n"
+"\n"
+"Προβήκαμε σε αυτή την αλλαγή διότι, δεν είναι ασφαλές να χρησιμοποιείται το "
+"Torbutton μέσα από ένα περιηγητή ιστού ο οποίος χρησιμεύει και για εργασίες "
+"χωρίς την χρήση Tor. Εμφανίζονταν διάφορα σφάλματα-bugs τα οποία δεν "
+"μπορούσαμε να διορθώσουμε.\n"
+"\n"
+"Αν θέλετε να εξακολουθήσετε να χρησιμοποιείτε τον Firefox κανονικά, θα "
+"πρέπει να εγκαταστήσετε το Torbutton και να κάνετε λήψη του Πακέτου "
+"Φυλλομετρητή Tor. Οι ιδιότητες ιδιωτικότητας του Περιηγητή Tor είναι "
+"ανώτερες από εκείνες του απλού Firefox, ακόμη και στην περίπτωση που ο "
+"Firefox χρησιμοποιείται μαζί με το Torbutton.\n"
+"\n"
+"Για να απομακρύνετε το Torbutton, πηγαίνετε Εργαλεία->Πρόσθετα->Extensions "
+"και πατήστε το πλήκτρο Απομάκρυνση που βρίσκεται δίπλα από το Torbutton."
#: torbutton.popup.short_torbrowser
msgid ""
@@ -368,3 +384,8 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+"Σημαντική Πληροφορία για το Torbutton\n"
+"\n"
+"Το Torbutton είναι τώρα συνεχώς ενεργοποιημένο.\n"
+"\n"
+"Για περισσότερες πληροφορίες, κάνετε κλικ στο Torbutton."
Modified: translation/trunk/projects/torbutton/po/eo/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/eo/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/eo/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -6,15 +6,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-03-11 20:46+0000\n"
-"Last-Translator: aleksejrs <deletesoftware(a)yandex.ru>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: eo\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/es/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/es/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/es/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -10,16 +10,16 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:44+0000\n"
-"Last-Translator: Gioyik <gioyik(a)gmail.com>\n"
-"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/"
-"torproject/language/es/)\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
+"Language-Team: Spanish (http://www.transifex.com/projects/p/torproject/"
+"language/es/)\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -656,6 +656,3 @@
msgid "Transparent Torification (Requires custom transproxy or Tor router)"
msgstr ""
"Torificación transparente (Requiere transproxy personalizado o router Tor)"
-
-#~ msgid "scroogle.org"
-#~ msgstr "scroogle.org"
Modified: translation/trunk/projects/torbutton/po/es/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/es/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/es/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -1,5 +1,6 @@
#
# Translators:
+# <kelopez.cl(a)gmail.com>, 2012.
# <lenazun(a)gmail.com>, 2011.
# runasand <runa.sandvik(a)gmail.com>, 2011.
#. extracted from ../src/chrome/locale/en/torbutton.properties
@@ -7,16 +8,16 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:45+0000\n"
-"Last-Translator: lenazun <lenazun(a)gmail.com>\n"
-"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/"
-"torproject/language/es/)\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-09-07 03:38+0000\n"
+"Last-Translator: kelopez <kelopez.cl(a)gmail.com>\n"
+"Language-Team: Spanish (http://www.transifex.com/projects/p/torproject/"
+"language/es/)\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -336,7 +337,7 @@
#: torbutton.title.prompt_torbrowser
msgid "Important Torbutton Information"
-msgstr ""
+msgstr "Información importante sobre Torbutton"
#: torbutton.popup.prompt_torbrowser
msgid ""
@@ -354,6 +355,20 @@
"To remove Torbutton, go to Tools->Addons->Extensions and then click the "
"Remove button next to Torbutton."
msgstr ""
+"Torbutton funciona diferente ahora: ya no lo podrá apagar.\n"
+"\n"
+"\n"
+"Cambiamos esto porque creemos que no es seguro utilizar Torbutton en un "
+"navegador que se utilice para navegar sin Tor. Hubieron demasiados fallos "
+"por esto que no podamos arreglar de otra manera.\n"
+"\n"
+"Si quiere seguir usando Firefox normalmente, debería desinstalar Torbutton y "
+"descargar el Tor Browser Bundle. Las propiedades de privacidad de Tor "
+"Browser son superiores a las de Firefox, aún cuando éste se use con "
+"Torbutton.\n"
+"\n"
+"Para eliminar Torbutton. vaya a Herramientas->Complementos->Extensiones y "
+"haga clic en el botón Eliminar próximo a Torbutton."
#: torbutton.popup.short_torbrowser
msgid ""
@@ -363,3 +378,5 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+"Información importante sobre Torbutton: Torbutton ahora siempre estará "
+"encendido. Haga clic en el Torbutton para más información"
Modified: translation/trunk/projects/torbutton/po/et/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/et/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/et/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -6,15 +6,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:44+0000\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: et\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/et/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/et/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/et/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -7,15 +7,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-06-21 19:41+0000\n"
-"Last-Translator: boamaod <boamaod(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: et\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/eu/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/eu/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/eu/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -7,15 +7,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-03-06 17:13+0000\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-09-11 12:26+0000\n"
"Last-Translator: Antxon Baldarra <baldarra(a)euskalerria.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: eu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -621,7 +621,7 @@
#: torbutton.prefs.engine4
msgid "startpage.com"
-msgstr ""
+msgstr "startpage.com"
#: torbutton.prefs.engine5
msgid "duckduckgo.com"
@@ -635,6 +635,3 @@
msgid "Transparent Torification (Requires custom transproxy or Tor router)"
msgstr ""
"Torifikazio Gardena (transproxy pertsonalizatua edo Tor routerra behar du)"
-
-#~ msgid "scroogle.org"
-#~ msgstr "scroogle.org"
Modified: translation/trunk/projects/torbutton/po/eu/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/eu/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/eu/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -7,15 +7,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-03-05 19:09+0000\n"
-"Last-Translator: Antxon Baldarra <baldarra(a)euskalerria.org>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: eu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/fa/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/fa/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/fa/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -9,15 +9,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:44+0000\n"
-"Last-Translator: greenwave <green.dove1388(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: fa\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -653,6 +653,3 @@
msgstr ""
"سازگارسازی با تُر به صورت شفاف (نياز به رهياب تُر يا Tor router و يا "
"transproxy سفارشی دارد)"
-
-#~ msgid "scroogle.org"
-#~ msgstr "scroogle.org"
Modified: translation/trunk/projects/torbutton/po/fa/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/fa/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/fa/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -9,15 +9,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:45+0000\n"
-"Last-Translator: greenwave <green.dove1388(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: fa\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/fi/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/fi/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/fi/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -6,15 +6,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:44+0000\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: fi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -641,6 +641,3 @@
#: torbutton.prefs.transparentTor
msgid "Transparent Torification (Requires custom transproxy or Tor router)"
msgstr ""
-
-#~ msgid "scroogle.org"
-#~ msgstr "scroogle.org"
Modified: translation/trunk/projects/torbutton/po/fi/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/fi/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/fi/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -7,15 +7,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:45+0000\n"
-"Last-Translator: morso <debris(a)riseup.net>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: fi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/fr/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/fr/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/fr/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -8,15 +8,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:44+0000\n"
-"Last-Translator: Pierre Antoine <pierre.antoine(a)ieee.org>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n > 1)\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -661,6 +661,3 @@
msgstr ""
"Torification transparente (requiert un transproxy personnalisé ou un routeur "
"Tor)"
-
-#~ msgid "scroogle.org"
-#~ msgstr "scroogle.org"
Modified: translation/trunk/projects/torbutton/po/fr/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/fr/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/fr/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -9,15 +9,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:45+0000\n"
-"Last-Translator: Pierre Antoine <pierre.antoine(a)ieee.org>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n > 1)\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/gu/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/gu/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/gu/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -6,15 +6,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:44+0000\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: gu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -611,6 +611,3 @@
#: torbutton.prefs.transparentTor
msgid "Transparent Torification (Requires custom transproxy or Tor router)"
msgstr ""
-
-#~ msgid "scroogle.org"
-#~ msgstr "scroogle.org"
Modified: translation/trunk/projects/torbutton/po/gu/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/gu/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/gu/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -6,15 +6,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:45+0000\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: gu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/he/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/he/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/he/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -7,15 +7,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:44+0000\n"
-"Last-Translator: Something Another <roeyjobsyud(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: he\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/he/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/he/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/he/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -6,15 +6,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:45+0000\n"
-"Last-Translator: Amichay P. K. <am1chay.p.k(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: he\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/hi/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/hi/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/hi/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -6,15 +6,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:44+0000\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: hi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/hr/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/hr/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/hr/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -7,16 +7,16 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:44+0000\n"
-"Last-Translator: cisterna <jan.lovrinic(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/hr/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/hr/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/hr/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -6,8 +6,8 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:45+0000\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: hr\n"
@@ -15,7 +15,7 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/hu/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/hu/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/hu/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -6,15 +6,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:44+0000\n"
-"Last-Translator: vargaviktor <viktor.varga(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: hu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -656,6 +656,3 @@
#: torbutton.prefs.transparentTor
msgid "Transparent Torification (Requires custom transproxy or Tor router)"
msgstr "Átlátszó Tor-osítás (Egyedi transproxy-t vagy Tor routert igényel)"
-
-#~ msgid "scroogle.org"
-#~ msgstr "scroogle.org"
Modified: translation/trunk/projects/torbutton/po/hu/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/hu/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/hu/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -6,15 +6,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:45+0000\n"
-"Last-Translator: vargaviktor <viktor.varga(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: hu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/id/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/id/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/id/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -6,15 +6,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:44+0000\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: id\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -626,6 +626,3 @@
#: torbutton.prefs.transparentTor
msgid "Transparent Torification (Requires custom transproxy or Tor router)"
msgstr ""
-
-#~ msgid "scroogle.org"
-#~ msgstr "scroogle.org"
Modified: translation/trunk/projects/torbutton/po/id/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/id/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/id/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -7,15 +7,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-08-21 05:28+0000\n"
-"Last-Translator: Jaya Wijaya <SecretCommission(a)tormail.org>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: id\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/it/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/it/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/it/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -8,16 +8,16 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:44+0000\n"
-"Last-Translator: n0on3 <a.n0on3(a)gmail.com>\n"
-"Language-Team: Italian (http://www.transifex.net/projects/p/torproject/"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
+"Language-Team: Italian (http://www.transifex.com/projects/p/torproject/"
"language/it/)\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -663,6 +663,3 @@
msgstr ""
"Torificazione trasparente (richiede un transproxy personalizzato o un tor "
"router)"
-
-#~ msgid "scroogle.org"
-#~ msgstr "scroogle.org"
Modified: translation/trunk/projects/torbutton/po/it/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/it/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/it/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -3,21 +3,22 @@
# <a.n0on3(a)gmail.com>, 2011.
# runasand <runa.sandvik(a)gmail.com>, 2011.
# <tru74368(a)yahoo.com>, 2011.
+# Vincenzo Cerminara <rebek994(a)gmail.com>, 2012.
#. extracted from ../src/chrome/locale/en/torbutton.properties
msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:45+0000\n"
-"Last-Translator: n0on3 <a.n0on3(a)gmail.com>\n"
-"Language-Team: Italian (http://www.transifex.net/projects/p/torproject/"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-09-11 17:02+0000\n"
+"Last-Translator: Vincenzo Cerminara <rebek994(a)gmail.com>\n"
+"Language-Team: Italian (http://www.transifex.com/projects/p/torproject/"
"language/it/)\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -335,7 +336,7 @@
#: torbutton.title.prompt_torbrowser
msgid "Important Torbutton Information"
-msgstr ""
+msgstr "Informazioni importanti su Torbutton"
#: torbutton.popup.prompt_torbrowser
msgid ""
@@ -353,6 +354,21 @@
"To remove Torbutton, go to Tools->Addons->Extensions and then click the "
"Remove button next to Torbutton."
msgstr ""
+"Torbutton ora funziona in modo diverso: non è possibile disabilitarlo.\n"
+"\n"
+"Questo cambiamento è stato apportato poiché risulta poco sicuro utilizzare "
+"Torbutton in un browser utilizzato anche senza di esso. Ci sono alcuni "
+"problemi critici che non è possibile risolvere in un modo diverso da "
+"questo.\n"
+"\n"
+"Se si desidera utilizzare Firefox normalmente (senza, quindi, Torbutton) è "
+"necessario disinstallare manualmente Torbutton ed installare Tor Browser "
+"Bundle. Le impostazioni per la privacy, inoltre, sono superiori su Tor "
+"Browser rispetto ad una normale installazione di Firefox, anche quando "
+"quest'ultimo è utilizzato con Torbutton.\n"
+"\n"
+"Per rimuovere Torbutton, andare in Strumenti -> Componenti aggiuntivi -> "
+"Estensioni e cliccare sul pulsante Disinstalla per Torbutton."
#: torbutton.popup.short_torbrowser
msgid ""
@@ -362,3 +378,8 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+"Informazioni importanti su Torbutton!\n"
+"\n"
+"Torbutton ora è sempre abilitato.\n"
+"\n"
+"Clicca su Torbutton per ulteriori informazioni."
Modified: translation/trunk/projects/torbutton/po/ja/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/ja/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/ja/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -8,15 +8,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:44+0000\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/ja/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/ja/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/ja/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -7,15 +7,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-03-25 14:57+0000\n"
-"Last-Translator: Eshin Kunishima <kaoru(a)mikosu.ddo.jp>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/ko/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/ko/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/ko/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -7,15 +7,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-07-08 13:04+0000\n"
-"Last-Translator: cwt96 <cwt967(a)naver.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: ko\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -618,6 +618,3 @@
#: torbutton.prefs.transparentTor
msgid "Transparent Torification (Requires custom transproxy or Tor router)"
msgstr "투명 Toritication (사용자 transproxy나 Tor 라우터 필요)"
-
-#~ msgid "scroogle.org"
-#~ msgstr "scroogle.org"
Modified: translation/trunk/projects/torbutton/po/ko/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/ko/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/ko/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -6,15 +6,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-07-08 13:30+0000\n"
-"Last-Translator: cwt96 <cwt967(a)naver.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: ko\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/lv/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/lv/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/lv/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -6,16 +6,16 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-08-09 14:33+0000\n"
-"Last-Translator: Ojars Balcers <ojars.balcers(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: lv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
-"2)\n"
+"2);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/my/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/my/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/my/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -7,15 +7,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-06-23 08:52+0000\n"
-"Last-Translator: Thura Hlaing <trhura(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: my\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -620,6 +620,3 @@
#: torbutton.prefs.transparentTor
msgid "Transparent Torification (Requires custom transproxy or Tor router)"
msgstr "ပွင့်လင်းမြင်သာသော Tor သုံးစွဲမှု (စိတ်ကြိုက် transproxy နှင့် Tor Router လိုအပ်သည်)"
-
-#~ msgid "scroogle.org"
-#~ msgstr "scroogle.org"
Modified: translation/trunk/projects/torbutton/po/my/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/my/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/my/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -7,15 +7,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-06-23 09:06+0000\n"
-"Last-Translator: Thura Hlaing <trhura(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: my\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/nb/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/nb/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/nb/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -6,15 +6,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:44+0000\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: nb\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -626,6 +626,3 @@
#: torbutton.prefs.transparentTor
msgid "Transparent Torification (Requires custom transproxy or Tor router)"
msgstr ""
-
-#~ msgid "scroogle.org"
-#~ msgstr "scroogle.org"
Modified: translation/trunk/projects/torbutton/po/nb/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/nb/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/nb/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -6,15 +6,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:45+0000\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: nb\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/nl/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/nl/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/nl/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -7,15 +7,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:44+0000\n"
-"Last-Translator: Shondoit Walker <shondoit+transifex(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -642,6 +642,3 @@
msgstr ""
"Transparante Torificatie (Heeft aangepaste transparente proxy of Tor router "
"nodig)"
-
-#~ msgid "scroogle.org"
-#~ msgstr "scroogle.org"
Modified: translation/trunk/projects/torbutton/po/nl/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/nl/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/nl/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -7,15 +7,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:45+0000\n"
-"Last-Translator: Shondoit Walker <shondoit+transifex(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/pl/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/pl/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/pl/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -7,16 +7,16 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:44+0000\n"
-"Last-Translator: bogdrozd <bog.d(a)gazeta.pl>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
-"|| n%100>=20) ? 1 : 2)\n"
+"|| n%100>=20) ? 1 : 2);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -640,6 +640,3 @@
msgid "Transparent Torification (Requires custom transproxy or Tor router)"
msgstr ""
"Przezroczysta toryfikacja (wymaga własnego transproxy lub routera Tora)"
-
-#~ msgid "scroogle.org"
-#~ msgstr "scroogle.org"
Modified: translation/trunk/projects/torbutton/po/pl/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/pl/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/pl/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -8,16 +8,16 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:45+0000\n"
-"Last-Translator: bogdrozd <bog.d(a)gazeta.pl>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
-"|| n%100>=20) ? 1 : 2)\n"
+"|| n%100>=20) ? 1 : 2);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/pt/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/pt/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/pt/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -7,15 +7,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:44+0000\n"
-"Last-Translator: Zeca Gatilho <paulo.mosh(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: pt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -652,6 +652,3 @@
msgid "Transparent Torification (Requires custom transproxy or Tor router)"
msgstr ""
"Torificação transparente (Necessita transpoxy customizado ou router Tor)"
-
-#~ msgid "scroogle.org"
-#~ msgstr "scroogle.org"
Modified: translation/trunk/projects/torbutton/po/pt/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/pt/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/pt/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -6,15 +6,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:45+0000\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: pt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/pt_BR/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/pt_BR/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/pt_BR/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -10,15 +10,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:44+0000\n"
-"Last-Translator: brunogola <brunogola(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n > 1)\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -655,6 +655,3 @@
msgid "Transparent Torification (Requires custom transproxy or Tor router)"
msgstr ""
"Torificação Transparente (Requer transpoxy customizado ou roteador Tor)"
-
-#~ msgid "scroogle.org"
-#~ msgstr "scroogle.com"
Modified: translation/trunk/projects/torbutton/po/pt_BR/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/pt_BR/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/pt_BR/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -8,15 +8,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:45+0000\n"
-"Last-Translator: Sérgio <theparish2(a)yahoo.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n > 1)\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/ro/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/ro/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/ro/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -6,8 +6,8 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:44+0000\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: ro\n"
@@ -15,7 +15,7 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
-"2:1))\n"
+"2:1));\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -637,6 +637,3 @@
#: torbutton.prefs.transparentTor
msgid "Transparent Torification (Requires custom transproxy or Tor router)"
msgstr ""
-
-#~ msgid "scroogle.org"
-#~ msgstr "scroogle.com"
Modified: translation/trunk/projects/torbutton/po/ro/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/ro/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/ro/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -1,5 +1,6 @@
#
# Translators:
+# <anouser(a)yahoo.com>, 2012.
# bog b1 <bogbone(a)gmail.com>, 2012.
# <mihaidimoiu(a)yahoo.com>, 2012.
# runasand <runa.sandvik(a)gmail.com>, 2011.
@@ -8,16 +9,16 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-06-20 22:44+0000\n"
-"Last-Translator: mihai10 <mihaidimoiu(a)yahoo.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-31 23:47+0000\n"
+"Last-Translator: anouser <anouser(a)yahoo.com>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: ro\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
-"2:1))\n"
+"2:1));\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -334,7 +335,7 @@
#: torbutton.title.prompt_torbrowser
msgid "Important Torbutton Information"
-msgstr ""
+msgstr "Informatii importante Torbutton"
#: torbutton.popup.prompt_torbrowser
msgid ""
Modified: translation/trunk/projects/torbutton/po/ru/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/ru/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/ru/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -8,17 +8,17 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:44+0000\n"
-"Last-Translator: liquixis <liquixis(a)gmail.com>\n"
-"Language-Team: Russian (http://www.transifex.net/projects/p/torproject/"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
+"Language-Team: Russian (http://www.transifex.com/projects/p/torproject/"
"language/ru/)\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -651,6 +651,3 @@
msgstr ""
"Прозрачная торификация (Требует пользовательских transproxy или Tor-"
"маршрутизатора)"
-
-#~ msgid "scroogle.org"
-#~ msgstr "scroogle.org"
Modified: translation/trunk/projects/torbutton/po/ru/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/ru/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/ru/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -8,17 +8,17 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:45+0000\n"
-"Last-Translator: liquixis <liquixis(a)gmail.com>\n"
-"Language-Team: Russian (http://www.transifex.net/projects/p/torproject/"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
+"Language-Team: Russian (http://www.transifex.com/projects/p/torproject/"
"language/ru/)\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/sk/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/sk/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/sk/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -1,30 +1,31 @@
#
# Translators:
+# <koloman375(a)gmail.com>, 2012.
# <martin.strucel(a)gmail.com>, 2012.
#. extracted from ../src/chrome/locale/en/torbutton.properties
msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:45+0000\n"
-"Last-Translator: martinstrucel <martin.strucel(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-09-06 19:40+0000\n"
+"Last-Translator: K0L0M4N <koloman375(a)gmail.com>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: sk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
#: torbutton.button.tooltip.disabled
msgid "Enable Tor"
-msgstr "Zapnúť Tor"
+msgstr "Povoliť Tor"
#: torbutton.button.tooltip.enabled
msgid "Disable Tor"
-msgstr "Vypnúť Tor"
+msgstr "Zakázať Tor"
#: torbutton.panel.tooltip.disabled
msgid "Click to enable Tor"
@@ -110,11 +111,12 @@
#: torbutton.popup.test.success
msgid "Tor proxy test successful!"
-msgstr ""
+msgstr "Tor proxy test bol úspešný!"
#: torbutton.popup.test.failure
msgid "Tor proxy test FAILED! Check your proxy and Polipo settings."
msgstr ""
+"Tor proxy test bol NEÚSPEŠNÝ! Skontrolujte Vaše proxy a Polipo nastavenia."
#: torbutton.popup.test.confirm_toggle
msgid ""
@@ -157,7 +159,7 @@
#: torbutton.popup.external.title
msgid "Load external content?"
-msgstr ""
+msgstr "Načítať externý obsah?"
#: torbutton.popup.external.app
msgid ""
@@ -182,11 +184,11 @@
#: torbutton.popup.launch
msgid "Launch application"
-msgstr ""
+msgstr "Spustiť aplikáciu"
#: torbutton.popup.cancel
msgid "Cancel"
-msgstr ""
+msgstr "Zrušiť"
#: torbutton.popup.dontask
msgid "Always launch applications from now on"
@@ -213,11 +215,11 @@
#: torbutton.popup.redirect
msgid "Redirect"
-msgstr ""
+msgstr "Presmerovať"
#: torbutton.popup.no_redirect
msgid "Don't Redirect"
-msgstr ""
+msgstr "Nepresmerovať"
#: torbutton.popup.prompted_language
msgid ""
@@ -265,7 +267,7 @@
#: torbutton.title.prompt_torbrowser
msgid "Important Torbutton Information"
-msgstr ""
+msgstr "Dôležité Torbutton Informácie"
#: torbutton.popup.prompt_torbrowser
msgid ""
@@ -292,3 +294,8 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+"Dôležité Torbutton Informácie!\n"
+"\n"
+"Torbutton je odteraz povolený.\n"
+"\n"
+"Stlačte Torbutton pre viacej informácií."
Modified: translation/trunk/projects/torbutton/po/sl/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/sl/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/sl/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -8,16 +8,16 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-04-22 14:05+0000\n"
-"Last-Translator: mihaelersic <miha.elersic(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: sl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
-"%100==4 ? 2 : 3)\n"
+"%100==4 ? 2 : 3);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/sl/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/sl/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/sl/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -7,16 +7,16 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-04-22 14:20+0000\n"
-"Last-Translator: mihaelersic <miha.elersic(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: sl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
-"%100==4 ? 2 : 3)\n"
+"%100==4 ? 2 : 3);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/sr/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/sr/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/sr/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -8,16 +8,16 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-06-20 23:51+0000\n"
-"Last-Translator: mahavidyas <mahavidyas(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: sr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -635,6 +635,3 @@
#: torbutton.prefs.transparentTor
msgid "Transparent Torification (Requires custom transproxy or Tor router)"
msgstr "Транспарента Торификација (захтева посебан Tor прокси или Tor рутер)"
-
-#~ msgid "scroogle.org"
-#~ msgstr "Scroogle.org"
Modified: translation/trunk/projects/torbutton/po/sr/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/sr/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/sr/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -8,16 +8,16 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-08-10 12:48+0000\n"
-"Last-Translator: Rancher <theranchcowboy(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: sr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/sv/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/sv/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/sv/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -6,15 +6,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:44+0000\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/sv/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/sv/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/sv/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -6,15 +6,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:45+0000\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/templates/torbutton.dtd.pot
===================================================================
--- translation/trunk/projects/torbutton/po/templates/torbutton.dtd.pot 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/templates/torbutton.dtd.pot 2012-09-12 20:33:45 UTC (rev 25791)
@@ -3,7 +3,7 @@
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
Modified: translation/trunk/projects/torbutton/po/templates/torbutton.properties.pot
===================================================================
--- translation/trunk/projects/torbutton/po/templates/torbutton.properties.pot 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/templates/torbutton.properties.pot 2012-09-12 20:33:45 UTC (rev 25791)
@@ -3,7 +3,7 @@
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
Modified: translation/trunk/projects/torbutton/po/th/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/th/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/th/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -6,15 +6,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:44+0000\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: th\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/tr/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/tr/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/tr/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -6,15 +6,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:44+0000\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -621,6 +621,3 @@
#: torbutton.prefs.transparentTor
msgid "Transparent Torification (Requires custom transproxy or Tor router)"
msgstr ""
-
-#~ msgid "scroogle.org"
-#~ msgstr "scroogle.org"
Modified: translation/trunk/projects/torbutton/po/tr/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/tr/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/tr/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -1,6 +1,7 @@
#
# Translators:
# mikeperry <mikeperry-trans(a)fscked.org>, 2011.
+# <oguzkagan(a)gmail.com>, 2012.
# runasand <runa.sandvik(a)gmail.com>, 2011.
# <zahmetr(a)gmail.com>, 2012.
#. extracted from ../src/chrome/locale/en/torbutton.properties
@@ -8,15 +9,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-04-08 19:40+0000\n"
-"Last-Translator: ZahMeTR <zahmetr(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-09-05 20:21+0000\n"
+"Last-Translator: DalinOK <oguzkagan(a)gmail.com>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -368,3 +369,6 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+"Önemli Torbutton bilgisi!\n"
+"Torbutton şimdi tamamen etkinleştirildi.\n"
+"Daha fazla bilgi için Torbutton'a tıklayınız."
Modified: translation/trunk/projects/torbutton/po/uk/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/uk/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/uk/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -8,16 +8,16 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-07-01 22:21+0000\n"
-"Last-Translator: Oleksandr Kravchuk <>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: uk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -621,6 +621,3 @@
#: torbutton.prefs.transparentTor
msgid "Transparent Torification (Requires custom transproxy or Tor router)"
msgstr ""
-
-#~ msgid "scroogle.org"
-#~ msgstr "scroogle.org"
Modified: translation/trunk/projects/torbutton/po/uk/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/uk/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/uk/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -6,16 +6,16 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-07-01 14:05+0000\n"
-"Last-Translator: Oleksandr Kravchuk <>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: uk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/vi/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/vi/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/vi/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -7,15 +7,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-06-03 07:26+0000\n"
-"Last-Translator: truongvan <truongvan(a)live.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: vi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/vi/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/vi/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/vi/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -7,15 +7,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-06-03 08:01+0000\n"
-"Last-Translator: truongvan <truongvan(a)live.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: vi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/zh_CN/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/zh_CN/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/zh_CN/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -13,15 +13,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-08-01 09:59+0000\n"
-"Last-Translator: Christopher Meng <cickumqt(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
@@ -621,6 +621,3 @@
#: torbutton.prefs.transparentTor
msgid "Transparent Torification (Requires custom transproxy or Tor router)"
msgstr "Tor 透明代理(需要自设透明代理或Tor路由程序的支持)"
-
-#~ msgid "scroogle.org"
-#~ msgstr "scroogle.org"
Modified: translation/trunk/projects/torbutton/po/zh_CN/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/zh_CN/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/zh_CN/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -7,15 +7,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:45+0000\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/zh_TW/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/zh_TW/torbutton.dtd.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/zh_TW/torbutton.dtd.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -7,15 +7,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:44+0000\n"
-"Last-Translator: whyme <random3098(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: zh_TW\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
Modified: translation/trunk/projects/torbutton/po/zh_TW/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/zh_TW/torbutton.properties.po 2012-09-12 14:43:17 UTC (rev 25790)
+++ translation/trunk/projects/torbutton/po/zh_TW/torbutton.properties.po 2012-09-12 20:33:45 UTC (rev 25791)
@@ -7,15 +7,15 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
-"PO-Revision-Date: 2012-02-14 09:45+0000\n"
-"Last-Translator: whyme <random3098(a)gmail.com>\n"
+"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"PO-Revision-Date: 2012-08-30 22:10+0000\n"
+"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: zh_TW\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
"X-Accelerator-Marker: &\n"
"X-Generator: Translate Toolkit 1.9.0\n"
1
0